Compare commits

...

3 commits

Author SHA1 Message Date
qurious-pixel 33b5c1dd59
Merge a5cb5376e0 into 67f7119717 2025-12-04 18:58:40 +01:00
Elad 67f7119717
Make RSX FIFO Atomic fetching default (#17810)
Some checks failed
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux-aarch64.sh, gcc, rpcs3/rpcs3-ci-jammy-aarch64:1.7, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (/rpcs3/.ci/build-linux.sh, gcc, rpcs3/rpcs3-ci-jammy:1.7, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1, rpcs3/rpcs3-binaries-linux-arm64, /rpcs3/.ci/build-linux-aarch64.sh, clang, rpcs3/rpcs3-ci-jammy-aarch64:1.7, ubuntu-24.04-arm) (push) Waiting to run
Build RPCS3 / RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} (d812f1254a1157c80fd402f94446310560f54e5f, rpcs3/rpcs3-binaries-linux, /rpcs3/.ci/build-linux.sh, clang, rpcs3/rpcs3-ci-jammy:1.7, ubuntu-24.04) (push) Waiting to run
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (51ae32f468089a8169aaf1567de355ff4a3e0842, rpcs3/rpcs3-binaries-mac, .ci/build-mac.sh, Intel) (push) Waiting to run
Build RPCS3 / RPCS3 Mac ${{ matrix.name }} (8e21bdbc40711a3fccd18fbf17b742348b0f4281, rpcs3/rpcs3-binaries-mac-arm64, .ci/build-mac-arm64.sh, Apple Silicon) (push) Waiting to run
Build RPCS3 / RPCS3 Windows (push) Waiting to run
Build RPCS3 / RPCS3 Windows Clang (win64, clang, clang64) (push) Waiting to run
Build RPCS3 / RPCS3 FreeBSD (push) Waiting to run
Generate Translation Template / Generate Translation Template (push) Has been cancelled
2025-12-04 18:17:39 +02:00
Live session user a5cb5376e0 Windows ARM build 2025-11-29 08:54:22 -08:00
9 changed files with 53 additions and 41 deletions

View file

@ -6,7 +6,7 @@ export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
export HOMEBREW_NO_ENV_HINTS=1 export HOMEBREW_NO_ENV_HINTS=1
export HOMEBREW_NO_INSTALL_CLEANUP=1 export HOMEBREW_NO_INSTALL_CLEANUP=1
brew install -f --overwrite --quiet pipenv googletest ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers brew install -f --overwrite --quiet pipenv ffmpeg@5 "llvm@$LLVM_COMPILER_VER" glew sdl3 vulkan-headers
brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5 brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
# moltenvk based on commit for 1.4.0 release # moltenvk based on commit for 1.4.0 release
@ -80,8 +80,8 @@ mkdir build && cd build || exit 1
export MACOSX_DEPLOYMENT_TARGET=14.0 export MACOSX_DEPLOYMENT_TARGET=14.0
"$BREW_PATH/bin/cmake" .. \ "$BREW_PATH/bin/cmake" .. \
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \ -DBUILD_RPCS3_TESTS=OFF \
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \ -DRUN_RPCS3_TESTS=OFF \
-DUSE_SDL=ON \ -DUSE_SDL=ON \
-DUSE_DISCORD_RPC=ON \ -DUSE_DISCORD_RPC=ON \
-DUSE_VULKAN=ON \ -DUSE_VULKAN=ON \

View file

@ -2,6 +2,9 @@
git config --global --add safe.directory '*' git config --global --add safe.directory '*'
CPU_ARCH="${1:-x86_64}"
MSYS2="${2:-clang64}"
# Pull all the submodules except some # Pull all the submodules except some
# Note: Tried to use git submodule status, but it takes over 20 seconds # Note: Tried to use git submodule status, but it takes over 20 seconds
# shellcheck disable=SC2046 # shellcheck disable=SC2046
@ -23,7 +26,7 @@ else
fi fi
cmake .. \ cmake .. \
-DCMAKE_PREFIX_PATH=/clang64 \ -DCMAKE_PREFIX_PATH=/"${MSYS2}" \
-DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_PREFIX=/usr \
-DUSE_NATIVE_INSTRUCTIONS=OFF \ -DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_PRECOMPILED_HEADERS=OFF \ -DUSE_PRECOMPILED_HEADERS=OFF \
@ -44,8 +47,8 @@ cmake .. \
-DUSE_DISCORD_RPC=ON \ -DUSE_DISCORD_RPC=ON \
-DOpenGL_GL_PREFERENCE=LEGACY \ -DOpenGL_GL_PREFERENCE=LEGACY \
-DWITH_LLVM=ON \ -DWITH_LLVM=ON \
-DLLVM_DIR=/clang64/lib/cmake/llvm \ -DLLVM_DIR=/"${MSYS2}"/lib/cmake/llvm \
-DVulkan_LIBRARY=/clang64/lib/libvulkan-1.dll.a \ -DVulkan_LIBRARY=/"${MSYS2}"/lib/libvulkan-1.dll.a \
-DSTATIC_LINK_LLVM=ON \ -DSTATIC_LINK_LLVM=ON \
-DBUILD_RPCS3_TESTS=OFF \ -DBUILD_RPCS3_TESTS=OFF \
-DRUN_RPCS3_TESTS=OFF \ -DRUN_RPCS3_TESTS=OFF \
@ -57,5 +60,5 @@ cd ..
# If it compiled succesfully let's deploy. # If it compiled succesfully let's deploy.
if [ "$build_status" -eq 0 ]; then if [ "$build_status" -eq 0 ]; then
.ci/deploy-windows-clang.sh "x86_64" .ci/deploy-windows-clang.sh "${CPU_ARCH}" "${MSYS2}"
fi fi

View file

@ -7,12 +7,13 @@
cd build || exit 1 cd build || exit 1
CPU_ARCH="${1:-x86_64}" CPU_ARCH="${1:-x86_64}"
MSYS2="${2:-clang64}"
echo "Deploying rpcs3 windows clang $CPU_ARCH" echo "Deploying rpcs3 windows clang $CPU_ARCH"
# BUILD_blablabla is CI specific, so we wrap it for portability # BUILD_blablabla is CI specific, so we wrap it for portability
ARTIFACT_DIR=$(cygpath -u "$BUILD_ARTIFACTSTAGINGDIRECTORY") ARTIFACT_DIR=$(cygpath -u "$BUILD_ARTIFACTSTAGINGDIRECTORY")
MSYS2_CLANG_BIN=$(cygpath -w /clang64/bin) MSYS2_CLANG_BIN=$(cygpath -w /"${MSYS2}"/bin)
MSYS2_USR_BIN=$(cygpath -w /usr/bin) MSYS2_USR_BIN=$(cygpath -w /usr/bin)
echo "Installing dependencies of: ./bin/rpcs3.exe (MSYS2 dir is '$MSYS2_CLANG_BIN', usr dir is '$MSYS2_USR_BIN')" echo "Installing dependencies of: ./bin/rpcs3.exe (MSYS2 dir is '$MSYS2_CLANG_BIN', usr dir is '$MSYS2_USR_BIN')"

View file

@ -328,16 +328,24 @@ jobs:
Windows_Build_Clang: Windows_Build_Clang:
# Only run push event on master branch of main repo, but run all PRs # Only run push event on master branch of main repo, but run all PRs
if: github.event_name != 'push' || (github.repository == 'RPCS3/rpcs3' && github.ref_name == 'master') if: github.event_name != 'push' || (github.repository == 'RPCS3/rpcs3' && github.ref_name == 'master')
name: RPCS3 Windows Clang
runs-on: windows-2025
strategy: strategy:
fail-fast: false
matrix: matrix:
include: include:
- msys2: clang64 - msys2: clang64
compiler: clang compiler: clang
arch: win64 arch: x86_64
os: windows-2025
name: X64
- msys2: clangarm64
compiler: clang
arch: aarch64
os: windows-11-arm
name: ARM64
env: env:
CCACHE_DIR: 'C:\ccache' CCACHE_DIR: 'C:\ccache'
name: RPCS3 Windows Clang ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@main uses: actions/checkout@main
@ -351,23 +359,23 @@ jobs:
update: true update: true
cache: true cache: true
install: | install: |
mingw-w64-clang-x86_64-clang mingw-w64-clang-${{ matrix.arch }}-clang
mingw-w64-clang-x86_64-ccache mingw-w64-clang-${{ matrix.arch }}-ccache
mingw-w64-clang-x86_64-cmake mingw-w64-clang-${{ matrix.arch }}-cmake
mingw-w64-clang-x86_64-lld mingw-w64-clang-${{ matrix.arch }}-lld
mingw-w64-clang-x86_64-ninja mingw-w64-clang-${{ matrix.arch }}-ninja
mingw-w64-clang-x86_64-llvm mingw-w64-clang-${{ matrix.arch }}-llvm
mingw-w64-clang-x86_64-ffmpeg mingw-w64-clang-${{ matrix.arch }}-ffmpeg
mingw-w64-clang-x86_64-opencv mingw-w64-clang-${{ matrix.arch }}-opencv
mingw-w64-clang-x86_64-glew mingw-w64-clang-${{ matrix.arch }}-glew
mingw-w64-clang-x86_64-vulkan mingw-w64-clang-${{ matrix.arch }}-vulkan
mingw-w64-clang-x86_64-vulkan-headers mingw-w64-clang-${{ matrix.arch }}-vulkan-headers
mingw-w64-clang-x86_64-vulkan-loader mingw-w64-clang-${{ matrix.arch }}-vulkan-loader
mingw-w64-clang-x86_64-gtest mingw-w64-clang-${{ matrix.arch }}-gtest
mingw-w64-clang-x86_64-qt6-base mingw-w64-clang-${{ matrix.arch }}-qt6-base
mingw-w64-clang-x86_64-qt6-declarative mingw-w64-clang-${{ matrix.arch }}-qt6-declarative
mingw-w64-clang-x86_64-qt6-multimedia mingw-w64-clang-${{ matrix.arch }}-qt6-multimedia
mingw-w64-clang-x86_64-qt6-svg mingw-w64-clang-${{ matrix.arch }}-qt6-svg
base-devel base-devel
curl curl
git git
@ -378,8 +386,8 @@ jobs:
id: restore-build-ccache id: restore-build-ccache
with: with:
path: ${{ env.CCACHE_DIR }} path: ${{ env.CCACHE_DIR }}
key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-${{ github.run_id }} key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ matrix.arch }}-${{ github.run_id }}
restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}- restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ matrix.arch }}-
- name: Build RPCS3 - name: Build RPCS3
shell: msys2 {0} shell: msys2 {0}
@ -387,7 +395,7 @@ jobs:
export CCACHE_DIR=$(cygpath -u "$CCACHE_DIR") export CCACHE_DIR=$(cygpath -u "$CCACHE_DIR")
echo "CCACHE_DIR=$CCACHE_DIR" echo "CCACHE_DIR=$CCACHE_DIR"
.ci/setup-windows-ci-vars.sh ${{ matrix.arch }} ${{ matrix.compiler }} .ci/setup-windows-ci-vars.sh ${{ matrix.arch }} ${{ matrix.compiler }}
.ci/build-windows-clang.sh .ci/build-windows-clang.sh ${{ matrix.arch }} ${{ matrix.msys2 }}
- name: Save build Ccache - name: Save build Ccache
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'
@ -399,7 +407,7 @@ jobs:
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@main uses: actions/upload-artifact@main
with: with:
name: RPCS3 for Windows (${{ runner.arch }}, ${{ matrix.compiler }}) name: RPCS3 for Windows (${{ matrix.name }}, clang)
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }} path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}
compression-level: 0 compression-level: 0
if-no-files-found: error if-no-files-found: error

View file

@ -393,8 +393,8 @@ namespace fmt
raw_throw_exception(src_loc, reinterpret_cast<const char*>(fmt), type_info_v<Args...>, fmt_args_t<Args...>{fmt_unveil<Args>::get(args)...}); raw_throw_exception(src_loc, reinterpret_cast<const char*>(fmt), type_info_v<Args...>, fmt_args_t<Args...>{fmt_unveil<Args>::get(args)...});
} }
#if !defined(_MSC_VER) || defined(__clang__) #if defined(__FreeBSD__)
[[noreturn]] ~throw_exception() = default; [[noreturn]] ~throw_exception();
#endif #endif
}; };

View file

@ -2254,7 +2254,7 @@ namespace vm
std::memset(g_range_lock_set, 0, sizeof(g_range_lock_set)); std::memset(g_range_lock_set, 0, sizeof(g_range_lock_set));
std::memset(g_range_lock_bits, 0, sizeof(g_range_lock_bits)); std::memset(g_range_lock_bits, 0, sizeof(g_range_lock_bits));
#ifdef _WIN32 #if defined(_WIN32) && !defined(__arm64__)
utils::memory_release(g_hook_addr, 0x800000000); utils::memory_release(g_hook_addr, 0x800000000);
#endif #endif
ensure(s_hook.map(g_hook_addr, utils::protection::rw, true)); ensure(s_hook.map(g_hook_addr, utils::protection::rw, true));

View file

@ -53,7 +53,7 @@ struct cfg_root : cfg::node
} }
}; };
fifo_setting rsx_fifo_accuracy{this, "RSX FIFO Accuracy", rsx_fifo_mode::fast }; fifo_setting rsx_fifo_accuracy{this, "RSX FIFO Fetch Accuracy", rsx_fifo_mode::atomic };
cfg::_bool spu_verification{ this, "SPU Verification", true }; // Should be enabled cfg::_bool spu_verification{ this, "SPU Verification", true }; // Should be enabled
cfg::_bool spu_cache{ this, "SPU Cache", true }; cfg::_bool spu_cache{ this, "SPU Cache", true };
cfg::_bool spu_prof{ this, "SPU Profiler", false }; cfg::_bool spu_prof{ this, "SPU Profiler", false };

View file

@ -1198,10 +1198,10 @@ QString emu_settings::GetLocalizedSetting(const QString& original, emu_settings_
case emu_settings_type::FIFOAccuracy: case emu_settings_type::FIFOAccuracy:
switch (static_cast<rsx_fifo_mode>(index)) switch (static_cast<rsx_fifo_mode>(index))
{ {
case rsx_fifo_mode::fast: return tr("Fast", "RSX FIFO Accuracy"); case rsx_fifo_mode::fast: return tr("Fast", "RSX FIFO Fetch Accuracy");
case rsx_fifo_mode::atomic: return tr("Atomic", "RSX FIFO Accuracy"); case rsx_fifo_mode::atomic: return tr("Atomic", "RSX FIFO Fetch Accuracy");
case rsx_fifo_mode::atomic_ordered: return tr("Ordered & Atomic", "RSX FIFO Accuracy"); case rsx_fifo_mode::atomic_ordered: return tr("Ordered & Atomic", "RSX FIFO Fetch Accuracy");
case rsx_fifo_mode::as_ps3: return tr("PS3", "RSX FIFO Accuracy"); case rsx_fifo_mode::as_ps3: return tr("PS3", "RSX FIFO Fetch Accuracy");
} }
break; break;
case emu_settings_type::PerfOverlayDetailLevel: case emu_settings_type::PerfOverlayDetailLevel:

View file

@ -235,7 +235,7 @@ inline static const std::map<emu_settings_type, cfg_location> settings_location
{ emu_settings_type::AccurateSpuDMA, { "Core", "Accurate SPU DMA"}}, { emu_settings_type::AccurateSpuDMA, { "Core", "Accurate SPU DMA"}},
{ emu_settings_type::AccurateClineStores, { "Core", "Accurate Cache Line Stores"}}, { emu_settings_type::AccurateClineStores, { "Core", "Accurate Cache Line Stores"}},
{ emu_settings_type::AccurateRSXAccess, { "Core", "Accurate RSX reservation access"}}, { emu_settings_type::AccurateRSXAccess, { "Core", "Accurate RSX reservation access"}},
{ emu_settings_type::FIFOAccuracy, { "Core", "RSX FIFO Accuracy"}}, { emu_settings_type::FIFOAccuracy, { "Core", "RSX FIFO Fetch Accuracy"}},
{ emu_settings_type::XFloatAccuracy, { "Core", "XFloat Accuracy"}}, { emu_settings_type::XFloatAccuracy, { "Core", "XFloat Accuracy"}},
{ emu_settings_type::MFCCommandsShuffling, { "Core", "MFC Commands Shuffling Limit"}}, { emu_settings_type::MFCCommandsShuffling, { "Core", "MFC Commands Shuffling Limit"}},
{ emu_settings_type::SetDAZandFTZ, { "Core", "Set DAZ and FTZ"}}, { emu_settings_type::SetDAZandFTZ, { "Core", "Set DAZ and FTZ"}},