mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-25 11:46:27 +00:00
more stuff
This commit is contained in:
commit
3d37682722
11 changed files with 481 additions and 45 deletions
45
.github/workflows/linux.yml
vendored
Normal file
45
.github/workflows/linux.yml
vendored
Normal 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
48
.github/workflows/macos.yml
vendored
Normal 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/
|
4
.github/workflows/windows.yml
vendored
4
.github/workflows/windows.yml
vendored
|
@ -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 |
|
@ -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
|
||||
|
|
318
Source/Core/Common/GLideN64.custom.ini
Normal file
318
Source/Core/Common/GLideN64.custom.ini
Normal 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
|
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue