more stuff

This commit is contained in:
Nora 2022-03-01 14:31:25 -05:00
commit 3d37682722
11 changed files with 481 additions and 45 deletions

45
.github/workflows/linux.yml vendored Normal file
View file

@ -0,0 +1,45 @@
# This is a basic workflow to help you get started with Actions
name: Linux CI
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Setup CMake
- name: Setup CMake
uses: Symbitic/install-cmake@v0.1.1
with:
platform: linux
# Setup Packages
- name: Setup Packages
run: sudo apt update && sudo apt upgrade && sudo apt install curl ffmpeg git libao-dev libasound-dev libavcodec-dev libavformat-dev libbluetooth-dev libevdev-dev libgtk2.0-dev libhidapi-dev libmbedtls-dev libminiupnpc-dev libopenal-dev libpangocairo-1.0-0 libpulse-dev libsfml-dev libswscale-dev libudev-dev libusb-1.0-0-dev libwxbase3.0-dev libwxgtk3.0-dev libxrandr-dev qt5-default qtbase5-private-dev
# Run CMake
- name: Run CMake
run: mkdir build && cd build && cmake .. -G Ninja -DLINUX_LOCAL_DEV=true
# Build Project
- name: Run Make
run: cd build && ninja -j4
# Configure Dolphin
- name: Configure Dolphin
run: cd build && cp -r ../Data/Sys/ Binaries/ && cp -r ../Data/User/ Binaries/ && cp -r ../Data/dolphin-emu.png Binaries/ && touch Binaries/portable.txt
# Upload Artifact
- name: Upload Build Artifact
uses: actions/upload-artifact@v2
with:
name: DolphinMPN-Linux
path: /home/runner/work/dolphin-mpn-advanced-src/dolphin-mpn-advanced-src/build/Binaries/

48
.github/workflows/macos.yml vendored Normal file
View file

@ -0,0 +1,48 @@
# This is a basic workflow to help you get started with Actions
name: macOS CI
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: macos-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Setup CMake
- name: Setup CMake
uses: Symbitic/install-cmake@v0.1.1
with:
platform: mac
# Setup Packages
- name: Setup Packages
run: brew install qt5 pkgconfig
# Use Static ZSTD
- name: Remove ZSTD
run: brew uninstall zstd curl php --force --ignore-dependencies
# Run CMake
- name: Run CMake
run: mkdir -p build && cd build && cmake .. -G Ninja -DCMAKE_CXX_FLAGS="-Xclang -fcolor-diagnostics" -DCMAKE_PREFIX_PATH=$(brew --prefix qt5)
# Build Project
- name: Run Ninja
run: cd build && ninja -j4
# Configure Dolphin
- name: Configure Dolphin
run: cd build && cp -r ../Data/Sys/ Binaries/ && cp -r ../Data/User/ Binaries/ && cp -r ../Data/dolphin-emu.png Binaries/ && touch Binaries/portable.txt
# Upload Artifact
- name: Upload Build Artifact
uses: actions/upload-artifact@v2
with:
name: DolphinMPN-macOS
path: /Users/runner/work/dolphin-mpn-advanced-src/dolphin-mpn-advanced-src/build/Binaries/

View file

@ -31,10 +31,10 @@ jobs:
vs-version: '16.6.2'
# Run MSBuild
- name: Build Solution
run: msbuild "D:\a\dolphin-mpn-src\dolphin-mpn-src\Source\dolphin-emu.sln" /verbosity:minimal /property:Configuration=Release /property:Platform=x64
run: msbuild "D:\a\dolphin-mpn-advanced-src\dolphin-mpn-advanced-src\Source\dolphin-emu.sln" /verbosity:minimal /property:Configuration=Release /property:Platform=x64
# Upload Artifact
- name: Upload Build Artifact
uses: actions/upload-artifact@v2
with:
name: DolphinMPN-win32
path: D:\a\dolphin-mpn-src\dolphin-mpn-src\Binary\x64
path: D:\a\dolphin-mpn-advanced-src\dolphin-mpn-advanced-src\Binary\x64

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 445 KiB

Before After
Before After

View file

@ -43,8 +43,9 @@
<Button
android:id="@+id/menu_unpause_emulation"
android:text="@string/unpause_emulation"
style="@style/InGameMenuOption"
android:letterSpacing="0"
android:text="@string/unpause_emulation"
android:visibility="gone"/>
<Button
@ -55,26 +56,30 @@
<Button
android:id="@+id/menu_quicksave"
android:text="@string/emulation_quicksave"
style="@style/InGameMenuOption"
android:letterSpacing="0"
android:text="@string/emulation_quicksave"
android:visibility="gone"/>
<Button
android:id="@+id/menu_quickload"
android:text="@string/emulation_quickload"
style="@style/InGameMenuOption"
android:letterSpacing="0"
android:text="@string/emulation_quickload"
android:visibility="gone"/>
<Button
android:id="@+id/menu_emulation_save_root"
android:text="@string/emulation_savestate"
style="@style/InGameMenuOption"
android:letterSpacing="0"
android:text="@string/emulation_savestate"
android:visibility="gone"/>
<Button
android:id="@+id/menu_emulation_load_root"
android:text="@string/emulation_loadstate"
style="@style/InGameMenuOption"
android:letterSpacing="0"
android:text="@string/emulation_loadstate"
android:visibility="gone"/>
<Button

View file

@ -0,0 +1,318 @@
; Custom game settings
[General]
version=13
[TWINE]
Good_Name=007 - The World Is Not Enough (E)(U)
frameBufferEmulation\N64DepthCompare=1
[40%20WINKS]
Good_Name=40 Winks (E) (M3) (Prototype)
graphics2D\enableNativeResTexrects=1
[BIOFREAKS]
Good_Name=Bio F.R.E.A.K.S. (E)(U)
frameBufferEmulation\copyToRDRAM=1
[BioHazard%20II]
frameBufferEmulation\copyFromRDRAM=1
frameBufferEmulation\copyToRDRAM=0
frameBufferEmulation\copyDepthToRDRAM=0
[52150A67]
Good_Name=Bokujou Monogatari 2 (J)
frameBufferEmulation\N64DepthCompare=1
[67000C2B]
Good_Name=Eikou no Saint Andrews (J)
frameBufferEmulation\forceDepthBufferClear=1
[CAL%20SPEED]
frameBufferEmulation\bufferSwapMode=1
[CASTLEVANIA2]
Good_Name=Castlevania - Legacy Of Darkness (E)(U)
frameBufferEmulation\copyToRDRAM=1
[DMPJ]
Good_Name=Mario Artist Paint Studio (J) (64DD)
frameBufferEmulation\copyAuxToRDRAM=1
frameBufferEmulation\copyFromRDRAM=1
frameBufferEmulation\nativeResFactor=1
generalEmulation\rdramImageDitheringMode=0
[DMTJ]
Good_Name=Mario Artist Talent Studio (J) (64DD)
frameBufferEmulation\copyAuxToRDRAM=1
[DINO%20PLANET]
frameBufferEmulation\copyToRDRAM=1
frameBufferEmulation\copyAuxToRDRAM=1
[DONKEY%20KONG%2064]
Good_Name=Donkey Kong 64 (E)(J)(U)
frameBufferEmulation\copyDepthToRDRAM=1
frameBufferEmulation\N64DepthCompare=0
[DR.MARIO%2064]
Good_Name=Dr. Mario 64 (U)
frameBufferEmulation\fbInfoDisabled=0
frameBufferEmulation\copyFromRDRAM=1
frameBufferEmulation\copyToRDRAM=0
[EXTREME_G]
Good_Name=Extreme-G (E)
frameBufferEmulation\N64DepthCompare=1
[EXTREME-G]
Good_Name=Extreme-G (J)
frameBufferEmulation\N64DepthCompare=1
[EXTREMEG]
Good_Name=Extreme-G (U)
frameBufferEmulation\N64DepthCompare=1
[EXTREME%20G%202]
Good_Name=Extreme-G XG2 (E) (U)
frameBufferEmulation\N64DepthCompare=1
[208E05CD]
Good_Name=Extreme-G XG2 (J)
frameBufferEmulation\N64DepthCompare=1
[F1%20POLE%20POSITION%2064]
Good_Name=F-1 Pole Position 64 (E)(U)
frameBufferEmulation\copyToRDRAM=1
[FLAPPYBIRD64]
Good_Name=FlappyBird64
frameBufferEmulation\fbInfoDisabled=0
frameBufferEmulation\copyFromRDRAM=1
frameBufferEmulation\copyToRDRAM=0
[GOEMON2%20DERODERO]
Good_Name=Ganbare Goemon - Dero Dero Douchuu Obake Tenkomori (J)
graphics2D\enableNativeResTexrects=1
[GOEMONS%20GREAT%20ADV]
Good_Name=Goemons Great Adventure (U)
graphics2D\enableNativeResTexrects=1
[HARVESTMOON64]
Good_Name=Harvest Moon 64 (U)
frameBufferEmulation\N64DepthCompare=1
[5CFA0A2E]
Good_Name=Heiwa Pachinko World 64 (J)
frameBufferEmulation\copyToRDRAM=1
[HEXEN]
Good_Name=Hexen (E)(F)(G)(J)(U)
frameBufferEmulation\copyToRDRAM=1
[HUMAN%20GRAND%20PRIX]
frameBufferEmulation\copyToRDRAM=1
[I%20S%20S%2064]
Good_Name=International Superstar Soccer 64 (E) (U)
frameBufferEmulation\N64DepthCompare=1
[JET%20FORCE%20GEMINI]
Good_Name=Jet Force Gemini (E)(U)
frameBufferEmulation\fbInfoDisabled=0
frameBufferEmulation\copyAuxToRDRAM=1
[J%20F%20G%20DISPLAY]
; See Jet Force Gemini for notes
Good_Name=Jet Force Gemini Kiosk Demo (U)
frameBufferEmulation\fbInfoDisabled=0
frameBufferEmulation\copyAuxToRDRAM=1
[J%20WORLD%20SOCCER3]
frameBufferEmulation\N64DepthCompare=1
[301E07CC]
Good_Name=Mahjong Master (J)
frameBufferEmulation\N64DepthCompare=1
[DMGJ]
Good_Name=Mario Artist Polygon Studio (J)
frameBufferEmulation\copyAuxToRDRAM=1
[KEN%20GRIFFEY%20SLUGFEST]
Good_Name=Ken Griffey Jr.'s Slugfest
frameBufferEmulation\fbInfoDisabled=0
[KIRBY64]
Good_Name=Kirby 64 - The Crystal Shards (E)(J)(U)
graphics2D\enableNativeResTexrects=1
[MARIOGOLF64]
Good_Name=Mario Golf (E)(J)(U)
frameBufferEmulation\copyDepthToRDRAM=0
[MARIOKART64]
Good_Name=Mario Kart 64 (E)(J)(U)
graphics2D\enableNativeResTexrects=1
graphics2D\enableTexCoordBounds=1
[MARIO%20STORY]
Good_Name=Mario Story (J)
frameBufferEmulation\copyToRDRAM=1
[MEGA%20MAN%2064]
Good_Name=Mega Man 64 (U)
graphics2D\correctTexrectCoords=2
[MEGAMAN%2064]
Good_Name=Mega Man 64 (Proto)
graphics2D\correctTexrectCoords=2
[MLB%20FEATURING%20K%20G%20JR]
Good_Name=Major League Baseball Featuring Ken Griffey Jr.
frameBufferEmulation\fbInfoDisabled=0
[MYSTICAL%20NINJA2%20SG]
Good_Name=Mystical Ninja 2 Starring Goemon (E)
graphics2D\enableNativeResTexrects=1
[NASCAR%202000]
Good_Name=NASCAR 2000 (U)
frameBufferEmulation\copyToRDRAM=1
[NASCAR%2099]
Good_Name=NASCAR 99 (U)
frameBufferEmulation\copyToRDRAM=1
[NUD-DMPJ-JPN_convert]
Good_Name=Mario Paint Studio (cart hack)
frameBufferEmulation\copyFromRDRAM=1
[NUD-DMTJ-JPN_convert]
Good_Name=Mario Artist Talent Studio (cart hack)
frameBufferEmulation\copyAuxToRDRAM=1
[OGREBATTLE64]
Good_Name=Ogre Battle 64 - Person of Lordly Caliber (U)
graphics2D\enableTexCoordBounds=1
[OLYMPIC%20HOCKEY]
frameBufferEmulation\bufferSwapMode=1
[PAPER%20MARIO]
Good_Name=Paper Mario (E)(U)
frameBufferEmulation\copyToRDRAM=1
graphics2D\enableTexCoordBounds=1
[PENNY%20RACERS]
Good_Name=Penny Racers (E)(U)
frameBufferEmulation\copyToRDRAM=0
[PERFECT%20STRIKER]
Good_Name=Jikkyou J.League Perfect Striker (J)
frameBufferEmulation\N64DepthCompare=1
[POKEMON%20SNAP]
Good_Name=Pokemon Snap (U)
generalEmulation\rdramImageDitheringMode=1
frameBufferEmulation\copyAuxToRDRAM=1
frameBufferEmulation\copyToRDRAM=1
frameBufferEmulation\fbInfoDisabled=0
[POKEMON%20STADIUM]
Good_Name=Pokemon Stadium (U)
frameBufferEmulation\copyDepthToRDRAM=0
[POKEMON%20STADIUM%202]
Good_Name=Pokemon Stadium 2 (E)(F)(G)(I)(J)(S)(U)
frameBufferEmulation\copyToRDRAM=0
frameBufferEmulation\copyDepthToRDRAM=0
[POKEMON%20STADIUM%20G%26S]
Good_Name=Pokemon Stadium Kin Gin (J)
frameBufferEmulation\copyToRDRAM=0
frameBufferEmulation\copyDepthToRDRAM=0
[PUZZLE%20LEAGUE%20N64]
Good_Name=Pokemon Puzzle League (E)(F)(G)(U)
texture\enableHalosRemoval=1
[RAT%20ATTACK]
Good_Name=Rat Attack
frameBufferEmulation\fbInfoDisabled=0
[RESIDENT%20EVIL%20II]
frameBufferEmulation\copyFromRDRAM=1
frameBufferEmulation\copyToRDRAM=0
frameBufferEmulation\copyDepthToRDRAM=0
[ROCKMAN%20DASH]
Good_Name=Rockman Dash - Hagane no Boukenshin (J)
graphics2D\correctTexrectCoords=2
[RUSH%202]
frameBufferEmulation\bufferSwapMode=1
graphics2D\correctTexrectCoords=2
[SAN%20FRANCISCO%20RUSH]
Good_Name=San Francisco Rush Extreme Racing (U)
frameBufferEmulation\bufferSwapMode=1
graphics2D\enableNativeResTexrects=2
[S.F.RUSH]
Good_Name=San Francisco Rush Extreme Racing (E)
frameBufferEmulation\bufferSwapMode=1
graphics2D\enableNativeResTexrects=2
[S.F.%20RUSH]
Good_Name=San Francisco Rush Extreme Racing (U)
frameBufferEmulation\bufferSwapMode=1
graphics2D\enableNativeResTexrects=2
[SHADOWMAN]
Good_Name=Shadow Man (B)(E)(F)(G)(U)
frameBufferEmulation\copyDepthToRDRAM=0
[SPACE%20INVADERS]
Good_Name=Space Invaders (U)
frameBufferEmulation\copyToRDRAM=0
[STAR%20TWINS]
; See Jet Force Gemini for notes
Good_Name=Star Twins (J)
frameBufferEmulation\fbInfoDisabled=0
frameBufferEmulation\copyAuxToRDRAM=1
[TEST]
Good_Name=Mario Artist Paint Studio (J) (1999-02-11 Prototype) (64DD)
frameBufferEmulation\copyAuxToRDRAM=1
frameBufferEmulation\copyFromRDRAM=1
generalEmulation\rdramImageDitheringMode=0
[TETRISPHERE]
Good_Name=Tetrisphere (U)
generalEmulation\correctTexrectCoords=2
[TIGGER%27S%20HONEY%20HUNT]
Good_Name=Tiggers Honey Hunt (E)(U)
frameBufferEmulation\N64DepthCompare=1
[TONIC%20TROUBLE]
Good_Name=Tonic Trouble (E)(U)
frameBufferEmulation\copyToRDRAM=1
[TG%20RALLY%202]
frameBufferEmulation\copyToRDRAM=1
[TOP%20GEAR%20RALLY%202]
frameBufferEmulation\copyToRDRAM=1
[TUROK_DINOSAUR_HUNTE]
Good_Name=Turok - Dinosaur Hunter (E)(G)(U)(J)
frameBufferEmulation\copyDepthToRDRAM=1
[W.G.%203DHOCKEY]
frameBufferEmulation\bufferSwapMode=1
[MARIOPARTY3]
frameBufferEmulation\N64DepthCompare=1

View file

@ -113,7 +113,13 @@ private:
void* m_address_VirtualAlloc2 = nullptr;
void* m_address_MapViewOfFile3 = nullptr;
#else
#ifdef ANDROID
int fd;
#else
int m_shm_fd;
void* m_reserved_region;
std::size_t m_reserved_region_size;
#endif
#endif
};

View file

@ -28,30 +28,39 @@ MemArena::~MemArena() = default;
void MemArena::GrabSHMSegment(size_t size)
{
const std::string file_name = "/dolphin-emu." + std::to_string(getpid());
fd = shm_open(file_name.c_str(), O_RDWR | O_CREAT | O_EXCL, 0600);
if (fd == -1)
m_shm_fd = shm_open(file_name.c_str(), O_RDWR | O_CREAT | O_EXCL, 0600);
if (m_shm_fd == -1)
{
ERROR_LOG_FMT(MEMMAP, "shm_open failed: {}", strerror(errno));
return;
}
shm_unlink(file_name.c_str());
if (ftruncate(fd, size) < 0)
if (ftruncate(m_shm_fd, size) < 0)
ERROR_LOG_FMT(MEMMAP, "Failed to allocate low memory space");
}
void MemArena::ReleaseSHMSegment()
{
close(fd);
close(m_shm_fd);
}
void* MemArena::CreateView(s64 offset, size_t size)
{
return MapInMemoryRegion(offset, size, nullptr);
void* retval = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, m_shm_fd, offset);
if (retval == MAP_FAILED)
{
NOTICE_LOG_FMT(MEMMAP, "mmap failed");
return nullptr;
}
else
{
return retval;
}
}
void MemArena::ReleaseView(void* view, size_t size)
{
UnmapFromMemoryRegion(view, size);
munmap(view, size);
}
u8* MemArena::ReserveMemoryRegion(size_t memory_size)
@ -63,19 +72,23 @@ u8* MemArena::ReserveMemoryRegion(size_t memory_size)
PanicAlertFmt("Failed to map enough memory space: {}", LastStrerrorString());
return nullptr;
}
munmap(base, memory_size);
m_reserved_region = base;
m_reserved_region_size = memory_size;
return static_cast<u8*>(base);
}
void MemArena::ReleaseMemoryRegion()
{
if (m_reserved_region)
{
munmap(m_reserved_region, m_reserved_region_size);
m_reserved_region = nullptr;
}
}
void* MemArena::MapInMemoryRegion(s64 offset, size_t size, void* base)
{
void* retval = mmap(base, size, PROT_READ | PROT_WRITE,
MAP_SHARED | ((base == nullptr) ? 0 : MAP_FIXED), fd, offset);
void* retval = mmap(base, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, m_shm_fd, offset);
if (retval == MAP_FAILED)
{
NOTICE_LOG_FMT(MEMMAP, "mmap failed");
@ -89,6 +102,8 @@ void* MemArena::MapInMemoryRegion(s64 offset, size_t size, void* base)
void MemArena::UnmapFromMemoryRegion(void* view, size_t size)
{
munmap(view, size);
void* retval = mmap(view, size, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
if (retval == MAP_FAILED)
NOTICE_LOG_FMT(MEMMAP, "mmap failed");
}
} // namespace Common

View file

@ -508,10 +508,10 @@ void NetPlaySetupDialog::UpdateListBrowser()
auto* hor_header = m_table_widget->horizontalHeader();
hor_header->setSectionResizeMode(0, QHeaderView::Stretch);
hor_header->setSectionResizeMode(0, QHeaderView::Stretch);
hor_header->setSectionResizeMode(1, QHeaderView::Stretch);
hor_header->setSectionResizeMode(2, QHeaderView::ResizeToContents);
hor_header->setSectionResizeMode(3, QHeaderView::ResizeToContents);
hor_header->setHighlightSections(false);
m_table_widget->setRowCount(session_count);

View file

@ -944,9 +944,9 @@ ShaderCode GeneratePixelShaderCode(APIType api_type, const ShaderHostConfig& hos
(!DriverDetails::HasBug(DriverDetails::BUG_BROKEN_DUAL_SOURCE_BLENDING) ||
uid_data->useDstAlpha);
const bool use_shader_blend =
!use_dual_source && (uid_data->useDstAlpha && host_config.backend_shader_framebuffer_fetch);
const bool use_shader_logic_op =
!host_config.backend_logic_op && host_config.backend_shader_framebuffer_fetch;
!use_dual_source && uid_data->useDstAlpha && host_config.backend_shader_framebuffer_fetch;
const bool use_shader_logic_op = !host_config.backend_logic_op && uid_data->logic_op_enable &&
host_config.backend_shader_framebuffer_fetch;
if (api_type == APIType::OpenGL || api_type == APIType::Vulkan)
{
@ -1949,30 +1949,27 @@ static void WriteFog(ShaderCode& out, const pixel_shader_uid_data* uid_data)
static void WriteLogicOp(ShaderCode& out, const pixel_shader_uid_data* uid_data)
{
if (uid_data->logic_op_enable)
{
static constexpr std::array<const char*, 16> logic_op_mode{
"int4(0, 0, 0, 0)", // CLEAR
"prev & fb_value", // AND
"prev & ~fb_value", // AND_REVERSE
"prev", // COPY
"~prev & fb_value", // AND_INVERTED
"fb_value", // NOOP
"prev ^ fb_value", // XOR
"prev | fb_value", // OR
"~(prev | fb_value)", // NOR
"~(prev ^ fb_value)", // EQUIV
"~fb_value", // INVERT
"prev | ~fb_value", // OR_REVERSE
"~prev", // COPY_INVERTED
"~prev | fb_value", // OR_INVERTED
"~(prev & fb_value)", // NAND
"int4(255, 255, 255, 255)", // SET
};
static constexpr std::array<const char*, 16> logic_op_mode{
"int4(0, 0, 0, 0)", // CLEAR
"prev & fb_value", // AND
"prev & ~fb_value", // AND_REVERSE
"prev", // COPY
"~prev & fb_value", // AND_INVERTED
"fb_value", // NOOP
"prev ^ fb_value", // XOR
"prev | fb_value", // OR
"~(prev | fb_value)", // NOR
"~(prev ^ fb_value)", // EQUIV
"~fb_value", // INVERT
"prev | ~fb_value", // OR_REVERSE
"~prev", // COPY_INVERTED
"~prev | fb_value", // OR_INVERTED
"~(prev & fb_value)", // NAND
"int4(255, 255, 255, 255)", // SET
};
out.Write("\tint4 fb_value = iround(initial_ocol0 * 255.0);\n");
out.Write("\tprev = {};\n", logic_op_mode[uid_data->logic_op_mode]);
}
out.Write("\tint4 fb_value = iround(initial_ocol0 * 255.0);\n");
out.Write("\tprev = {};\n", logic_op_mode[uid_data->logic_op_mode]);
}
static void WriteColor(ShaderCode& out, APIType api_type, const pixel_shader_uid_data* uid_data,

View file

@ -196,7 +196,9 @@ void BlendingState::ApproximateLogicOpWithBlending()
blendenable = true;
subtract = approximations[u32(logicmode.Value())].subtract;
srcfactor = approximations[u32(logicmode.Value())].srcfactor;
srcfactoralpha = approximations[u32(logicmode.Value())].srcfactor;
dstfactor = approximations[u32(logicmode.Value())].dstfactor;
dstfactoralpha = approximations[u32(logicmode.Value())].dstfactor;
}
void SamplerState::Generate(const BPMemory& bp, u32 index)