mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-12-06 07:12:28 +01:00
Compare commits
30 commits
132aa7cc5d
...
d25e5950c6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d25e5950c6 | ||
|
|
67f7119717 | ||
|
|
133b19f205 | ||
|
|
fce393024a | ||
|
|
7d3cf831d5 | ||
|
|
dc27047ed4 | ||
|
|
b9a9c1af07 | ||
|
|
79f0caf7de | ||
|
|
ddf1a098c7 | ||
|
|
032714ccd1 | ||
|
|
d77d8c6f1a | ||
|
|
24a94f2dbe | ||
|
|
390bc9a04d | ||
|
|
1e46b9e064 | ||
|
|
b66d94b398 | ||
|
|
9b88fe2c44 | ||
|
|
e65b63308f | ||
|
|
d1e7fe4da0 | ||
|
|
1148253b79 | ||
|
|
c902134c55 | ||
|
|
42a8f7dadf | ||
|
|
97a1a50bd2 | ||
|
|
8228ae6c17 | ||
|
|
4a009b19df | ||
|
|
451d6e0039 | ||
|
|
2b35b80041 | ||
|
|
fd2576fabb | ||
|
|
47b938cf38 | ||
|
|
d24305564d | ||
|
|
42c7f13ce5 |
|
|
@ -6,7 +6,7 @@ export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
|
|||
export HOMEBREW_NO_ENV_HINTS=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
|
||||
|
||||
# moltenvk based on commit for 1.4.0 release
|
||||
|
|
@ -38,17 +38,14 @@ if [ ! -d "/tmp/Qt/$QT_VER" ]; then
|
|||
git clone https://github.com/engnr/qt-downloader.git
|
||||
cd qt-downloader
|
||||
git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597
|
||||
# nested Qt 6.10.1 URL workaround
|
||||
# sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
|
||||
# sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
|
||||
# archived Qt 6.7.3 URL workaround
|
||||
sed -i '' "s/official_releases/archive/g" qt-downloader
|
||||
sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
|
||||
sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
|
||||
cd "/tmp/Qt"
|
||||
"$BREW_PATH/bin/pipenv" run pip3 uninstall py7zr requests semantic_version lxml
|
||||
"$BREW_PATH/bin/pipenv" run pip3 install py7zr requests semantic_version lxml --no-cache
|
||||
mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64"
|
||||
# sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.10.1 workaround
|
||||
"$BREW_PATH/bin/pipenv" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats # -o "$QT_VER/clang_64"
|
||||
sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader"
|
||||
"$BREW_PATH/bin/pipenv" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64"
|
||||
fi
|
||||
|
||||
cd "$WORKDIR"
|
||||
|
|
@ -83,8 +80,8 @@ mkdir build && cd build || exit 1
|
|||
export MACOSX_DEPLOYMENT_TARGET=14.0
|
||||
|
||||
"$BREW_PATH/bin/cmake" .. \
|
||||
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
||||
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
|
||||
-DBUILD_RPCS3_TESTS=OFF \
|
||||
-DRUN_RPCS3_TESTS=OFF \
|
||||
-DUSE_SDL=ON \
|
||||
-DUSE_DISCORD_RPC=ON \
|
||||
-DUSE_VULKAN=ON \
|
||||
|
|
|
|||
|
|
@ -38,16 +38,13 @@ if [ ! -d "/tmp/Qt/$QT_VER" ]; then
|
|||
git clone https://github.com/engnr/qt-downloader.git
|
||||
cd qt-downloader
|
||||
git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597
|
||||
# nested Qt 6.10.1 URL workaround
|
||||
# sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
|
||||
# sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
|
||||
# archived Qt 6.7.3 URL workaround
|
||||
sed -i '' "s/official_releases/archive/g" qt-downloader
|
||||
sed -i '' "s/'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/'qt{0}_{0}{1}{2}'.format(major, minor, patch), 'qt{0}_{0}{1}{2}'.format(major, minor, patch)]))/g" qt-downloader
|
||||
sed -i '' "s/'{}\/{}\/qt{}_{}\/'/'{0}\/{1}\/qt{2}_{3}\/qt{2}_{3}\/'/g" qt-downloader
|
||||
cd "/tmp/Qt"
|
||||
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run pip3 install py7zr requests semantic_version lxml
|
||||
mkdir -p "$QT_VER/macos" ; ln -s "macos" "$QT_VER/clang_64"
|
||||
# sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader" # Qt 6.10.1 workaround
|
||||
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats # -o "$QT_VER/clang_64"
|
||||
sed -i '' 's/args\.version \/ derive_toolchain_dir(args) \/ //g' "$WORKDIR/qt-downloader/qt-downloader"
|
||||
"/opt/homebrew/bin/pipenv" --python "/opt/homebrew/bin/python3" run "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64"
|
||||
fi
|
||||
|
||||
cd "$WORKDIR"
|
||||
|
|
|
|||
102
.ci/build-windows-clang-cl.sh
Executable file
102
.ci/build-windows-clang-cl.sh
Executable file
|
|
@ -0,0 +1,102 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
echo "Starting RPCS3 build (Bash script)"
|
||||
|
||||
# Automatically find clang_rt.builtins-x86_64.lib
|
||||
echo "Searching for clang_rt.builtins-x86_64.lib ..."
|
||||
clangBuiltinsLibPath=$(find "C:\Program Files\LLVM\lib\clang" -name "clang_rt.builtins-x86_64.lib" | sed 's|Program Files|PROGRA~1|g')
|
||||
|
||||
if [ -z "$clangBuiltinsLibPath" ]; then
|
||||
echo "ERROR: Could not find clang_rt.builtins-x86_64.lib in LLVM installation."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
clangBuiltinsDir=$(dirname "$clangBuiltinsLibPath")
|
||||
clangBuiltinsLib=$(basename "$clangBuiltinsLibPath")
|
||||
# shellcheck disable=SC2028
|
||||
clangPath=$(echo "C:\Program Files\LLVM\bin" | sed 's|Program Files|PROGRA~1|g')
|
||||
|
||||
echo "Found Clang builtins library: $clangBuiltinsLib in $clangBuiltinsDir"
|
||||
echo "Found Clang Path: $clangPath"
|
||||
|
||||
# Search for mt.exe in SDK bin directories
|
||||
echo "Searching for llvm-mt.exe ..."
|
||||
mtPath=$(find "$clangPath" -name "llvm-mt.exe")
|
||||
|
||||
if [ -z "$mtPath" ]; then
|
||||
echo "ERROR: Could not find llvm-mt.exe in SDK directories."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Found llvm-mt.exe at: $mtPath"
|
||||
|
||||
VcpkgRoot="$VCPKG_ROOT"
|
||||
VcpkgBuildRoot="$GITHUB_WORKSPACE/build"
|
||||
VcpkgTriplet="$VCPKG_TRIPLET"
|
||||
VcpkgInstall="$VcpkgBuildRoot/vcpkg_installed/$VcpkgTriplet"
|
||||
VcpkgInclude="$VcpkgInstall/include"
|
||||
VcpkgLib="$VcpkgInstall/lib"
|
||||
|
||||
# Configure git safe directory
|
||||
echo "Configuring git safe directory"
|
||||
git config --global --add safe.directory '*'
|
||||
|
||||
# Initialize submodules except certain ones
|
||||
echo "Initializing submodules"
|
||||
set -x
|
||||
# shellcheck disable=SC2046
|
||||
git submodule -q update --init $(awk '/path/ && !/llvm/ && !/opencv/ && !/FAudio/ && !/libpng/ && !/zlib/ && !/feralinteractive/ { print $3 }' .gitmodules)
|
||||
set +x
|
||||
|
||||
# Create and enter build directory
|
||||
echo "Creating build directory"
|
||||
mkdir -p build
|
||||
cd build || exit
|
||||
echo "Changed directory to: $(pwd)"
|
||||
|
||||
# Run CMake with Ninja generator and required flags
|
||||
echo "Running CMake configuration"
|
||||
cmake .. \
|
||||
-G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_C_COMPILER="${clangPath}/clang-cl.exe" \
|
||||
-DCMAKE_CXX_COMPILER="${clangPath}/clang-cl.exe" \
|
||||
-DCMAKE_LINKER="${clangPath}/lld-link.exe" \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_TOOLCHAIN_FILE="$VcpkgRoot/scripts/buildsystems/vcpkg.cmake" \
|
||||
-DCMAKE_EXE_LINKER_FLAGS="/LIBPATH:${clangBuiltinsDir} /defaultlib:${clangBuiltinsLib}" \
|
||||
-DCMAKE_MT="${mtPath}" \
|
||||
-DUSE_NATIVE_INSTRUCTIONS=OFF \
|
||||
-DUSE_PRECOMPILED_HEADERS=OFF \
|
||||
-DVCPKG_TARGET_TRIPLET="$VcpkgTriplet" \
|
||||
-DFFMPEG_INCLUDE_DIR="$VcpkgInclude" \
|
||||
-DFFMPEG_LIBAVCODEC="$VcpkgLib/avcodec.lib" \
|
||||
-DFFMPEG_LIBAVFORMAT="$VcpkgLib/avformat.lib" \
|
||||
-DFFMPEG_LIBAVUTIL="$VcpkgLib/avutil.lib" \
|
||||
-DFFMPEG_LIBSWSCALE="$VcpkgLib/swscale.lib" \
|
||||
-DFFMPEG_LIBSWRESAMPLE="$VcpkgLib/swresample.lib" \
|
||||
-DUSE_SYSTEM_CURL=OFF \
|
||||
-DUSE_FAUDIO=OFF \
|
||||
-DUSE_SDL=ON \
|
||||
-DUSE_SYSTEM_SDL=OFF \
|
||||
-DUSE_SYSTEM_FFMPEG=ON \
|
||||
-DUSE_SYSTEM_OPENCV=ON \
|
||||
-DUSE_SYSTEM_OPENAL=OFF \
|
||||
-DUSE_SYSTEM_LIBPNG=ON \
|
||||
-DUSE_DISCORD_RPC=ON \
|
||||
-DUSE_SYSTEM_ZSTD=ON \
|
||||
-DWITH_LLVM=ON \
|
||||
-DSTATIC_LINK_LLVM=ON \
|
||||
-DBUILD_RPCS3_TESTS=OFF
|
||||
|
||||
echo "CMake configuration complete"
|
||||
|
||||
# Build with ninja
|
||||
echo "Starting build with Ninja..."
|
||||
ninja
|
||||
|
||||
echo "Build succeeded"
|
||||
|
||||
# Go back to root directory
|
||||
cd ..
|
||||
echo "Returned to root directory: $(pwd)"
|
||||
|
|
@ -57,5 +57,5 @@ cd ..
|
|||
|
||||
# If it compiled succesfully let's deploy.
|
||||
if [ "$build_status" -eq 0 ]; then
|
||||
.ci/deploy-windows-clang.sh "x86_64"
|
||||
echo "Build succeeded"
|
||||
fi
|
||||
|
|
|
|||
42
.ci/deploy-windows-clang-cl.sh
Normal file
42
.ci/deploy-windows-clang-cl.sh
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/sh -ex
|
||||
|
||||
# source ci-vars.env
|
||||
# shellcheck disable=SC1091
|
||||
. .ci/ci-vars.env
|
||||
|
||||
cd build || exit 1
|
||||
|
||||
CPU_ARCH="${1:-x86_64}"
|
||||
|
||||
echo "Deploying rpcs3 windows clang-cl $CPU_ARCH"
|
||||
|
||||
# First let's print some info about our caches
|
||||
C:/Strawberry/c/bin/ccache.exe --show-stats -v
|
||||
|
||||
# BUILD_blablabla is CI specific, so we wrap it for portability
|
||||
ARTIFACT_DIR="$BUILD_ARTIFACTSTAGINGDIRECTORY"
|
||||
|
||||
# Remove unecessary files
|
||||
rm -f ./bin/vulkan-1.dll
|
||||
|
||||
# Prepare compatibility and SDL database for packaging
|
||||
mkdir ./bin/config
|
||||
mkdir ./bin/config/input_configs
|
||||
curl -fsSL 'https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt' 1> ./bin/config/input_configs/gamecontrollerdb.txt
|
||||
curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
|
||||
|
||||
# Download SSL certificate (not needed with CURLSSLOPT_NATIVE_CA)
|
||||
#curl -fsSL 'https://curl.haxx.se/ca/cacert.pem' 1> ./bin/cacert.pem
|
||||
|
||||
# Package artifacts
|
||||
7z a -m0=LZMA2 -mx9 "$BUILD" ./bin/*
|
||||
|
||||
# Generate sha256 hashes
|
||||
# Write to file for GitHub releases
|
||||
sha256sum "$BUILD" | awk '{ print $1 }' | tee "$BUILD.sha256"
|
||||
echo "$(cat "$BUILD.sha256");$(stat -c %s "$BUILD")B" > GitHubReleaseMessage.txt
|
||||
|
||||
# Move files to publishing directory
|
||||
mkdir "$ARTIFACT_DIR"
|
||||
cp -- "$BUILD" "$ARTIFACT_DIR"
|
||||
cp -- "$BUILD.sha256" "$ARTIFACT_DIR"
|
||||
125
.github/workflows/rpcs3.yml
vendored
125
.github/workflows/rpcs3.yml
vendored
|
|
@ -10,6 +10,9 @@ on:
|
|||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
packages: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.ref }}-${{ github.event_name }}
|
||||
cancel-in-progress: true
|
||||
|
|
@ -134,7 +137,7 @@ jobs:
|
|||
runs-on: macos-14
|
||||
env:
|
||||
CCACHE_DIR: /tmp/ccache_dir
|
||||
QT_VER: '6.7.3'
|
||||
QT_VER: '6.10.1'
|
||||
QT_VER_MAIN: '6'
|
||||
LLVM_COMPILER_VER: '21'
|
||||
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
|
||||
|
|
@ -325,10 +328,10 @@ jobs:
|
|||
path: ${{ env.DEPS_CACHE_DIR }}
|
||||
key: ${{ steps.restore-dependencies-cache.outputs.cache-primary-key }}
|
||||
|
||||
Windows_Build_Clang:
|
||||
|
||||
Windows_Build_MSYS2:
|
||||
# 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')
|
||||
name: RPCS3 Windows Clang
|
||||
runs-on: windows-2025
|
||||
strategy:
|
||||
matrix:
|
||||
|
|
@ -338,6 +341,7 @@ jobs:
|
|||
arch: win64
|
||||
env:
|
||||
CCACHE_DIR: 'C:\ccache'
|
||||
name: RPCS3 Windows Clang (MSYS2)
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@main
|
||||
|
|
@ -386,8 +390,119 @@ jobs:
|
|||
run: |
|
||||
export CCACHE_DIR=$(cygpath -u "$CCACHE_DIR")
|
||||
echo "CCACHE_DIR=$CCACHE_DIR"
|
||||
.ci/setup-windows-ci-vars.sh ${{ matrix.arch }} ${{ matrix.compiler }}
|
||||
.ci/build-windows-clang.sh
|
||||
.ci/setup-windows-ci-vars.sh ${{ matrix.arch }} ${{ matrix.compiler }}
|
||||
.ci/deploy-windows-${{ matrix.compiler }}.sh
|
||||
|
||||
- name: Save build Ccache
|
||||
if: github.ref == 'refs/heads/master'
|
||||
uses: actions/cache/save@main
|
||||
with:
|
||||
path: ${{ env.CCACHE_DIR }}
|
||||
key: ${{ steps.restore-build-ccache.outputs.cache-primary-key }}
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@main
|
||||
with:
|
||||
name: RPCS3 for Windows (${{ runner.arch }}, ${{ matrix.compiler }})
|
||||
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}
|
||||
compression-level: 0
|
||||
if-no-files-found: error
|
||||
|
||||
Windows_Build_CLANG-CL:
|
||||
# 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')
|
||||
runs-on: windows-2025
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- compiler: clang-cl
|
||||
llvmver: 19.1.7
|
||||
arch: win64
|
||||
|
||||
env:
|
||||
CCACHE_DIR: 'C:\ccache'
|
||||
VCPKG_TRIPLET: x64-windows
|
||||
VCPKG_BUILD_TYPE: release
|
||||
VCPKG_ROOT: "${{github.workspace}}/vcpkg"
|
||||
VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite'
|
||||
name: RPCS3 Windows Clang (Clang-CL)
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@main
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Clone and bootstrap vcpkg
|
||||
shell: pwsh
|
||||
run: |
|
||||
git clone https://github.com/microsoft/vcpkg.git
|
||||
.\vcpkg\bootstrap-vcpkg.bat
|
||||
|
||||
- name: 'Setup NuGet Credentials for vcpkg'
|
||||
run: |
|
||||
`./vcpkg/vcpkg fetch nuget | tail -n 1` \
|
||||
sources add \
|
||||
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json" \
|
||||
-storepasswordincleartext \
|
||||
-name "GitHub" \
|
||||
-username "${{ github.repository_owner }}" \
|
||||
-password "${{ secrets.GITHUB_TOKEN }}"
|
||||
`./vcpkg/vcpkg fetch nuget | tail -n 1` \
|
||||
setapikey "${{ secrets.GITHUB_TOKEN }}" \
|
||||
-source "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
|
||||
|
||||
- name: Restore LLVM Cache
|
||||
uses: actions/cache/restore@main
|
||||
id: llvm-cache
|
||||
with:
|
||||
path: ./llvm-${{ matrix.llvmver }}
|
||||
key: ${{ runner.os }}-llvm-dl-cache-${{ hashFiles('**/llvm-${{ matrix.llvmver }}') }}
|
||||
restore-keys: ${{ runner.os }}-clang-dl-cache-
|
||||
|
||||
- name: Add LLVM
|
||||
shell: pwsh
|
||||
run: |
|
||||
if (!(Test-Path -Path D:\a\rpcs3\rpcs3\llvm-${{ matrix.llvmver }}\)) {
|
||||
rm -r llvm-*
|
||||
curl -fsSLO https://github.com/vovkos/llvm-package-windows/releases/download/llvm-${{ matrix.llvmver }}/llvm-${{ matrix.llvmver }}-windows-amd64-msvc17-msvcrt.7z
|
||||
curl -fsSLO https://github.com/vovkos/llvm-package-windows/releases/download/clang-${{ matrix.llvmver }}/clang-${{ matrix.llvmver }}-windows-amd64-msvc17-msvcrt.7z
|
||||
7z x llvm-*.7z
|
||||
mv llvm* llvm-${{ matrix.llvmver }}
|
||||
rm llvm-*.7z
|
||||
7z x clang-*.7z
|
||||
Copy-Item -Path "D:\a\rpcs3\rpcs3\clang*\*" -Destination "D:\a\rpcs3\rpcs3\llvm-${{ matrix.llvmver }}" -Recurse -Force
|
||||
rm -r clang*
|
||||
}
|
||||
Add-Content -Path $env:GITHUB_PATH -Value "D:\a\rpcs3\rpcs3\llvm-${{ matrix.llvmver }}\bin"
|
||||
|
||||
- name: Save LLVM Cache
|
||||
if: ${{ github.ref == 'refs/heads/master' }}
|
||||
uses: actions/cache/save@main
|
||||
with:
|
||||
path: ./llvm-${{ matrix.llvmver }}
|
||||
key: ${{ steps.llvm-cache.outputs.cache-primary-key }}
|
||||
|
||||
- name: Restore build Ccache
|
||||
uses: actions/cache/restore@main
|
||||
id: restore-build-ccache
|
||||
with:
|
||||
path: ${{ env.CCACHE_DIR }}
|
||||
key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-${{ github.run_id }}
|
||||
restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-
|
||||
|
||||
- name: install DIA SDK
|
||||
run: |
|
||||
mkdir -p "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional" || true
|
||||
cp -r "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/DIA SDK" "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/DIA SDK"
|
||||
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64
|
||||
|
||||
- name: Build RPCS3
|
||||
run: |
|
||||
.ci/build-windows-clang-cl.sh
|
||||
.ci/setup-windows-ci-vars.sh ${{ matrix.arch }} ${{ matrix.compiler }}
|
||||
.ci/deploy-windows-${{ matrix.compiler }}.sh
|
||||
|
||||
- name: Save build Ccache
|
||||
if: github.ref == 'refs/heads/master'
|
||||
|
|
@ -405,7 +520,7 @@ jobs:
|
|||
if-no-files-found: error
|
||||
|
||||
FreeBSD_Build:
|
||||
# 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')
|
||||
name: RPCS3 FreeBSD
|
||||
runs-on: ubuntu-latest
|
||||
|
|
|
|||
2
3rdparty/OpenAL/CMakeLists.txt
vendored
2
3rdparty/OpenAL/CMakeLists.txt
vendored
|
|
@ -11,8 +11,10 @@ if(USE_SYSTEM_OPENAL)
|
|||
else()
|
||||
option(ALSOFT_UTILS "Build utility programs" OFF)
|
||||
option(ALSOFT_EXAMPLES "Build example programs" OFF)
|
||||
option(ALSOFT_ENABLE_MODULES "Enable use of C++20 modules when supported" OFF)
|
||||
set(LIBTYPE "STATIC")
|
||||
add_subdirectory(openal-soft EXCLUDE_FROM_ALL)
|
||||
add_library(3rdparty_openal INTERFACE)
|
||||
target_link_libraries(3rdparty_openal INTERFACE OpenAL::OpenAL)
|
||||
target_compile_options(3rdparty_openal INTERFACE -Wno-deprecated-literal-operator)
|
||||
endif()
|
||||
|
|
|
|||
4
3rdparty/OpenAL/openal-soft.vcxproj
vendored
4
3rdparty/OpenAL/openal-soft.vcxproj
vendored
|
|
@ -49,11 +49,11 @@
|
|||
<PropertyGroup Label="UserMacros">
|
||||
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
|
||||
cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="./Release" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=true -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DCMAKE_INSTALL_PREFIX="./Release" -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DFORCE_STATIC_VCRT=true -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
|
||||
</CmakeReleaseCLI>
|
||||
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
|
||||
cd "$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="./Debug" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
|
||||
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug -DCMAKE_INSTALL_PREFIX="./Debug" -DCMAKE_SYSTEM_VERSION=10.0 -DLIBTYPE=STATIC -DALSOFT_UTILS=false -DALSOFT_EXAMPLES=false -DALSOFT_INSTALL=false -DALSOFT_INSTALL_CONFIG=false -DALSOFT_INSTALL_HRTF_DATA=false -DALSOFT_INSTALL_AMBDEC_PRESETS=false -DALSOFT_INSTALL_EXAMPLES=false -DALSOFT_INSTALL_UTILS=false "$(SolutionDir)3rdparty\OpenAL\openal-soft"
|
||||
</CmakeDebugCLI>
|
||||
<CmakeCopyCLI>
|
||||
echo Copying..
|
||||
|
|
|
|||
1
3rdparty/asmjit/CMakeLists.txt
vendored
1
3rdparty/asmjit/CMakeLists.txt
vendored
|
|
@ -11,6 +11,7 @@ include("${ASMJIT_DIR}/CMakeLists.txt")
|
|||
add_library(asmjit ${ASMJIT_SRC})
|
||||
target_include_directories(asmjit PUBLIC ${ASMJIT_DIR}/src)
|
||||
target_link_libraries(asmjit PRIVATE ${ASMJIT_DEPS})
|
||||
target_compile_options(asmjit PRIVATE -Wno-nontrivial-memcall -Wno-deprecated-anon-enum-enum-conversion)
|
||||
|
||||
# ASMJIT should have a option for disabling installing and this wouldnt
|
||||
# be required to avoid installing ASMJIT...
|
||||
|
|
|
|||
5
3rdparty/cubeb/CMakeLists.txt
vendored
5
3rdparty/cubeb/CMakeLists.txt
vendored
|
|
@ -10,6 +10,11 @@ set(USE_SANITIZERS FALSE CACHE BOOL "Dont't use sanitizers")
|
|||
|
||||
add_subdirectory(cubeb EXCLUDE_FROM_ALL)
|
||||
add_library(3rdparty::cubeb ALIAS cubeb)
|
||||
target_compile_options(cubeb PRIVATE
|
||||
-Wno-int-to-void-pointer-cast
|
||||
-Wno-deprecated-declarations
|
||||
-Wno-implicit-const-int-float-conversion
|
||||
)
|
||||
|
||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|ARM|aarch64|AArch64|Aarch64)")
|
||||
target_compile_definitions(speex PUBLIC
|
||||
|
|
|
|||
7
3rdparty/libusb/config.cmake
vendored
7
3rdparty/libusb/config.cmake
vendored
|
|
@ -33,6 +33,13 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
|
|||
)
|
||||
elseif(MSVC)
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
if (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
|
||||
append_compiler_flags(
|
||||
-Wno-unused-value
|
||||
-Wno-pragma-pack
|
||||
${ADDITIONAL_CC_FLAGS}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
check_include_files(sys/timerfd.h USBI_TIMERFD_AVAILABLE)
|
||||
|
|
|
|||
16
3rdparty/wolfssl/CMakeLists.txt
vendored
16
3rdparty/wolfssl/CMakeLists.txt
vendored
|
|
@ -22,5 +22,17 @@ else()
|
|||
|
||||
add_subdirectory(wolfssl EXCLUDE_FROM_ALL)
|
||||
|
||||
target_compile_definitions(wolfssl PUBLIC WOLFSSL_DES_ECB HAVE_WRITE_DUP FP_MAX_BITS=8192 WOLFSSL_NO_OPTIONS_H)
|
||||
endif()
|
||||
target_compile_definitions(wolfssl PUBLIC WOLFSSL_DES_ECB HAVE_WRITE_DUP WOLFSSL_NO_OPTIONS_H)
|
||||
|
||||
if(MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
# Disable 128-bit Math
|
||||
set(WOLFSSL_ASM ON CACHE BOOL "" FORCE)
|
||||
set(WOLFSSL_FAST_MATH OFF CACHE BOOL "" FORCE)
|
||||
target_compile_definitions(wolfssl PUBLIC WOLFSSL_SP_NO_128BIT FP_MAX_BITS=4096)
|
||||
|
||||
# Disable warnings
|
||||
target_compile_options(wolfssl PRIVATE /w)
|
||||
else()
|
||||
target_compile_definitions(wolfssl PUBLIC FP_MAX_BITS=8192)
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
|||
1
3rdparty/yaml-cpp/CMakeLists.txt
vendored
1
3rdparty/yaml-cpp/CMakeLists.txt
vendored
|
|
@ -12,5 +12,6 @@ set(YAML_CPP_BUILD_TESTS OFF CACHE BOOL "Enable testing" FORCE)
|
|||
set(YAML_CPP_BUILD_TOOLS OFF CACHE BOOL "Enable parse tools" FORCE)
|
||||
set(YAML_CPP_BUILD_CONTRIB OFF CACHE BOOL "Enable contrib stuff in library" FORCE)
|
||||
add_subdirectory(yaml-cpp EXCLUDE_FROM_ALL)
|
||||
target_compile_options(yaml-cpp PRIVATE -Wno-ignored-attributes -Wno-unused-value)
|
||||
|
||||
set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX_OLD})
|
||||
|
|
|
|||
|
|
@ -129,7 +129,9 @@ if(MSVC)
|
|||
message(AUTHOR_WARNING "Debug build currently can not work with static CRT.")
|
||||
endif()
|
||||
endif()
|
||||
add_compile_options(/MP)
|
||||
if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
add_compile_options(/MP)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
|
|
|
|||
|
|
@ -525,7 +525,7 @@ void fmt_class_string<u128>::format(std::string& out, u64 arg)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
fmt::append(out, "0x%016llx%016llx", num.hi, num.lo);
|
||||
#else
|
||||
fmt::append(out, "0x%016llx%016llx", static_cast<u64>(num >> 64), static_cast<u64>(num));
|
||||
|
|
|
|||
|
|
@ -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)...});
|
||||
}
|
||||
|
||||
#if !defined(_MSC_VER) || defined(__clang__)
|
||||
[[noreturn]] ~throw_exception() = default;
|
||||
#if defined(__FreeBSD__)
|
||||
[[noreturn]] ~throw_exception();
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,18 @@
|
|||
# Check and configure compiler options for RPCS3
|
||||
|
||||
if(MSVC)
|
||||
add_compile_options(/Zc:throwingNew- /constexpr:steps16777216)
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
check_cxx_compiler_flag("-msse -msse2 -mcx16" COMPILER_X86)
|
||||
check_cxx_compiler_flag("-march=native" COMPILER_SUPPORTS_MARCH_NATIVE)
|
||||
if (COMPILER_X86)
|
||||
add_compile_options(-msse -msse2 -mcx16)
|
||||
endif()
|
||||
if(COMPILER_SUPPORTS_MARCH_NATIVE)
|
||||
add_compile_options(-march=native)
|
||||
endif()
|
||||
else()
|
||||
add_compile_options(/Zc:throwingNew- /constexpr:steps16777216)
|
||||
endif()
|
||||
add_compile_definitions(
|
||||
_CRT_SECURE_NO_DEPRECATE=1 _CRT_NON_CONFORMING_SWPRINTFS=1 _SCL_SECURE_NO_WARNINGS=1
|
||||
NOMINMAX _ENABLE_EXTENDED_ALIGNED_STORAGE=1 _HAS_EXCEPTIONS=0)
|
||||
|
|
|
|||
|
|
@ -147,10 +147,15 @@ if (NOT ANDROID)
|
|||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/Icons $<TARGET_FILE_DIR:rpcs3>/Icons
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/GuiConfigs $<TARGET_FILE_DIR:rpcs3>/GuiConfigs
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/test $<TARGET_FILE_DIR:rpcs3>/test
|
||||
COMMAND "${WINDEPLOYQT_EXECUTABLE}" --no-compiler-runtime --no-opengl-sw --no-patchqt
|
||||
)
|
||||
get_target_property(WINDEPLOYQT_EXECUTABLE Qt6::windeployqt IMPORTED_LOCATION)
|
||||
add_custom_command(TARGET rpcs3 POST_BUILD
|
||||
COMMAND ${WINDEPLOYQT_EXECUTABLE} --no-compiler-runtime --no-opengl-sw --no-patchqt
|
||||
--no-translations --no-system-d3d-compiler --no-system-dxc-compiler --no-quick-import
|
||||
--plugindir "$<IF:$<CXX_COMPILER_ID:MSVC>,$<TARGET_FILE_DIR:rpcs3>/plugins,$<TARGET_FILE_DIR:rpcs3>/share/qt6/plugins>"
|
||||
--verbose 0 "$<TARGET_FILE:rpcs3>")
|
||||
--plugindir "$<IF:$<CXX_COMPILER_FRONTEND_VARIANT:MSVC>,$<TARGET_FILE_DIR:rpcs3>/qt6/plugins,$<TARGET_FILE_DIR:rpcs3>/share/qt6/plugins>"
|
||||
--verbose 0
|
||||
$<TARGET_FILE:rpcs3>
|
||||
)
|
||||
endif()
|
||||
|
||||
# Unix installation
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@
|
|||
#if defined(_MSC_VER) && defined(_M_X64)
|
||||
#define POLARSSL_HAVE_MSVC_X64_INTRINSICS
|
||||
#include <intrin.h>
|
||||
#ifdef __clang__
|
||||
#include <immintrin.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -197,6 +200,21 @@ void aesni_gcm_mult( unsigned char c[16],
|
|||
const unsigned char b[16] )
|
||||
{
|
||||
#if defined(POLARSSL_HAVE_MSVC_X64_INTRINSICS)
|
||||
#ifdef __clang__
|
||||
__m128i xa, xb, m0, m1, x10, x32, r;
|
||||
|
||||
xa[1] = _byteswap_uint64( *((unsigned __int64*)a + 0) );
|
||||
xa[0] = _byteswap_uint64( *((unsigned __int64*)a + 1) );
|
||||
xb[1] = _byteswap_uint64( *((unsigned __int64*)b + 0) );
|
||||
xb[0] = _byteswap_uint64( *((unsigned __int64*)b + 1) );
|
||||
|
||||
clmul256( xa, xb, &m0, &m1 );
|
||||
sll256( m0, m1, &x10, &x32 );
|
||||
r = reducemod128( x10, x32 );
|
||||
|
||||
*((unsigned __int64*)c + 0) = _byteswap_uint64( r[1] );
|
||||
*((unsigned __int64*)c + 1) = _byteswap_uint64( r[0] );
|
||||
#else
|
||||
__m128i xa, xb, m0, m1, x10, x32, r;
|
||||
|
||||
xa.m128i_u64[1] = _byteswap_uint64( *((unsigned __int64*)a + 0) );
|
||||
|
|
@ -210,6 +228,7 @@ void aesni_gcm_mult( unsigned char c[16],
|
|||
|
||||
*((unsigned __int64*)c + 0) = _byteswap_uint64( r.m128i_u64[1] );
|
||||
*((unsigned __int64*)c + 1) = _byteswap_uint64( r.m128i_u64[0] );
|
||||
#endif
|
||||
#else
|
||||
unsigned char aa[16], bb[16], cc[16];
|
||||
size_t i;
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ target_sources(rpcs3_emu PRIVATE
|
|||
../../Utilities/Thread.cpp
|
||||
../../Utilities/version.cpp
|
||||
)
|
||||
|
||||
if(APPLE)
|
||||
target_sources(rpcs3_emu PRIVATE
|
||||
../../darwin/util/sysinfo_darwin.mm
|
||||
|
|
@ -90,12 +91,12 @@ endif()
|
|||
target_include_directories(rpcs3_emu PUBLIC "${CMAKE_SOURCE_DIR}")
|
||||
|
||||
set_source_files_properties("../../Utilities/JITLLVM.cpp" "../../Utilities/JITASM.cpp" PROPERTIES
|
||||
COMPILE_FLAGS "$<IF:$<CXX_COMPILER_ID:MSVC>,/GR-,-fno-rtti>"
|
||||
COMPILE_FLAGS "$<IF:$<CXX_COMPILER_ID:MSVC>,$<IF:$<CXX_COMPILER_ID:Clang>,/GR-,>,-fno-rtti>"
|
||||
SKIP_PRECOMPILE_HEADERS ON
|
||||
)
|
||||
|
||||
set_source_files_properties("../util/yaml.cpp" PROPERTIES
|
||||
COMPILE_FLAGS "$<IF:$<CXX_COMPILER_ID:MSVC>,/EHsc,-fexceptions>"
|
||||
COMPILE_FLAGS "$<IF:$<CXX_COMPILER_ID:MSVC>,$<IF:$<CXX_COMPILER_ID:Clang>,/EHsc,>,-fexceptions>"
|
||||
SKIP_PRECOMPILE_HEADERS ON
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -452,7 +452,7 @@ extern void mov_rdata_nt(spu_rdata_t& _dst, const spu_rdata_t& _src)
|
|||
#endif
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
#define mwaitx_func
|
||||
#define waitpkg_func
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -2063,7 +2063,7 @@ void lv2_obj::set_yield_frequency(u64 freq, u64 max_allowed_tsc)
|
|||
g_lv2_preempts_taken.release(0);
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
#define mwaitx_func
|
||||
#define waitpkg_func
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
#include "Emu/CPU/sse2neon.h"
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER) || !defined(__SSE2__)
|
||||
#if defined(_MSC_VER) && !defined(__clang__) || !defined(__SSE2__)
|
||||
#define SSE4_1_FUNC
|
||||
#define AVX2_FUNC
|
||||
#define AVX3_FUNC
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
#define AVX512_ICL_FUNC
|
||||
#else
|
||||
#define AVX512_ICL_FUNC __attribute__((__target__("avx512f,avx512bw,avx512dq,avx512cd,avx512vl,avx512bitalg,avx512ifma,avx512vbmi,avx512vbmi2,avx512vnni,avx512vpopcntdq")))
|
||||
|
|
|
|||
|
|
@ -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_cache{ this, "SPU Cache", true };
|
||||
cfg::_bool spu_prof{ this, "SPU Profiler", false };
|
||||
|
|
|
|||
|
|
@ -435,6 +435,12 @@ QCoreApplication* create_application(std::span<char* const> qt_argv)
|
|||
{
|
||||
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "0");
|
||||
}
|
||||
#elif __APPLE__
|
||||
// set the QT_MTL_NO_TRANSACTION variable in order to prevent Qt GUI freeze
|
||||
qputenv("QT_MTL_NO_TRANSACTION", "1");
|
||||
|
||||
// set the QT_MAC_NO_CONTAINER_LAYER variable in order to prevent swapchain crash
|
||||
qputenv("QT_MAC_NO_CONTAINER_LAYER", "1");
|
||||
#endif
|
||||
|
||||
bool use_high_dpi = true;
|
||||
|
|
|
|||
|
|
@ -1198,10 +1198,10 @@ QString emu_settings::GetLocalizedSetting(const QString& original, emu_settings_
|
|||
case emu_settings_type::FIFOAccuracy:
|
||||
switch (static_cast<rsx_fifo_mode>(index))
|
||||
{
|
||||
case rsx_fifo_mode::fast: return tr("Fast", "RSX FIFO Accuracy");
|
||||
case rsx_fifo_mode::atomic: return tr("Atomic", "RSX FIFO Accuracy");
|
||||
case rsx_fifo_mode::atomic_ordered: return tr("Ordered & Atomic", "RSX FIFO Accuracy");
|
||||
case rsx_fifo_mode::as_ps3: return tr("PS3", "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 Fetch 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 Fetch Accuracy");
|
||||
}
|
||||
break;
|
||||
case emu_settings_type::PerfOverlayDetailLevel:
|
||||
|
|
|
|||
|
|
@ -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::AccurateClineStores, { "Core", "Accurate Cache Line Stores"}},
|
||||
{ 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::MFCCommandsShuffling, { "Core", "MFC Commands Shuffling Limit"}},
|
||||
{ emu_settings_type::SetDAZandFTZ, { "Core", "Set DAZ and FTZ"}},
|
||||
|
|
|
|||
|
|
@ -2340,6 +2340,12 @@ void main_window::RetranslateUI(const QStringList& language_codes, const QString
|
|||
|
||||
ui->retranslateUi(this);
|
||||
|
||||
// Refresh game list first to prevent localization mismatches in further Refresh calls
|
||||
if (m_game_list_frame)
|
||||
{
|
||||
m_game_list_frame->Refresh(true);
|
||||
}
|
||||
|
||||
// Update menu bar size (needed if the corner widget changes its size)
|
||||
ui->menuBar->adjustSize();
|
||||
|
||||
|
|
@ -2354,11 +2360,6 @@ void main_window::RetranslateUI(const QStringList& language_codes, const QString
|
|||
default: break;
|
||||
}
|
||||
|
||||
if (m_game_list_frame)
|
||||
{
|
||||
m_game_list_frame->Refresh(true);
|
||||
}
|
||||
|
||||
Q_EMIT RequestDialogRepaint();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,15 +3,12 @@
|
|||
|
||||
movie_item::movie_item() : QTableWidgetItem(), movie_item_base()
|
||||
{
|
||||
setData(Qt::UserRole, {}); // Set any value to UserRole for proper indexing (e.g. for multiselection)
|
||||
}
|
||||
|
||||
movie_item::movie_item(const QString& text, int type) : QTableWidgetItem(text, type), movie_item_base()
|
||||
{
|
||||
setData(Qt::UserRole, {}); // Set any value to UserRole for proper indexing (e.g. for multiselection)
|
||||
}
|
||||
|
||||
movie_item::movie_item(const QIcon& icon, const QString& text, int type) : QTableWidgetItem(icon, text, type), movie_item_base()
|
||||
{
|
||||
setData(Qt::UserRole, {}); // Set any value to UserRole for proper indexing (e.g. for multiselection)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,14 +71,10 @@ bool qt_camera_video_sink::present(const QVideoFrame& frame)
|
|||
// Flip image if necessary
|
||||
if (flip_horizontally || flip_vertically)
|
||||
{
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0)
|
||||
Qt::Orientations orientation {};
|
||||
orientation.setFlag(Qt::Orientation::Horizontal, flip_horizontally);
|
||||
orientation.setFlag(Qt::Orientation::Vertical, flip_vertically);
|
||||
image.flip(orientation);
|
||||
#else
|
||||
image.mirror(flip_horizontally, flip_vertically);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (image.format() != QImage::Format_RGBA8888)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
#include <functional>
|
||||
|
||||
#ifdef ARCH_X64
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
#include <intrin.h>
|
||||
#else
|
||||
#include <immintrin.h>
|
||||
|
|
@ -66,10 +66,12 @@ namespace utils
|
|||
|
||||
constexpr u32 popcnt128(const u128& v)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
return std::popcount(v.lo) + std::popcount(v.hi);
|
||||
#else
|
||||
return std::popcount(v);
|
||||
const u64 lo = static_cast<u64>(v);
|
||||
const u64 hi = static_cast<u64>(v >> 64);
|
||||
return static_cast<u32>(std::popcount(lo) + std::popcount(hi));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -98,7 +100,7 @@ namespace utils
|
|||
|
||||
inline s64 div128(s64 high, s64 low, s64 divisor, s64* remainder = nullptr)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
s64 rem = 0;
|
||||
s64 r = _div128(high, low, divisor, &rem);
|
||||
|
||||
|
|
@ -120,7 +122,7 @@ namespace utils
|
|||
|
||||
inline u64 udiv128(u64 high, u64 low, u64 divisor, u64* remainder = nullptr)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
u64 rem = 0;
|
||||
u64 r = _udiv128(high, low, divisor, &rem);
|
||||
|
||||
|
|
@ -140,7 +142,7 @@ namespace utils
|
|||
return r;
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
inline u128 operator/(u128 lhs, u64 rhs)
|
||||
{
|
||||
u64 rem = 0;
|
||||
|
|
@ -150,25 +152,33 @@ namespace utils
|
|||
|
||||
constexpr u32 ctz128(u128 arg)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
if (!arg.lo)
|
||||
return std::countr_zero(arg.hi) + 64u;
|
||||
else
|
||||
return std::countr_zero(arg.lo);
|
||||
#else
|
||||
return std::countr_zero(arg);
|
||||
const u64 hi = static_cast<u64>(arg >> 64);
|
||||
if (hi != 0)
|
||||
return static_cast<u32>(std::countr_zero(hi));
|
||||
const u64 lo = static_cast<u64>(arg);
|
||||
return static_cast<u32>(std::countr_zero(lo) + 64u);
|
||||
#endif
|
||||
}
|
||||
|
||||
constexpr u32 clz128(u128 arg)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
if (arg.hi)
|
||||
return std::countl_zero(arg.hi);
|
||||
else
|
||||
return std::countl_zero(arg.lo) + 64;
|
||||
#else
|
||||
return std::countl_zero(arg);
|
||||
const u64 hi = static_cast<u64>(arg >> 64);
|
||||
if (hi != 0)
|
||||
return static_cast<u32>(std::countl_zero(hi));
|
||||
const u64 lo = static_cast<u64>(arg);
|
||||
return static_cast<u32>(std::countl_zero(lo) + 64u);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -279,6 +289,6 @@ namespace utils
|
|||
|
||||
using utils::busy_wait;
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
using utils::operator/;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ static inline std::array<u32, 4> get_cpuid(u32 func, u32 subfunc)
|
|||
|
||||
static inline u64 get_xgetbv(u32 xcr)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
return _xgetbv(xcr);
|
||||
#else
|
||||
u32 eax, edx;
|
||||
|
|
|
|||
|
|
@ -249,13 +249,13 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
#if defined(ARCH_X64) && !defined(_MSC_VER)
|
||||
#if defined(ARCH_X64) && !defined(_MSC_VER) && !defined(__m128)
|
||||
using __m128i = long long __attribute__((vector_size(16)));
|
||||
using __m128d = double __attribute__((vector_size(16)));
|
||||
using __m128 = float __attribute__((vector_size(16)));
|
||||
#endif
|
||||
|
||||
#ifndef _MSC_VER
|
||||
#if !defined(_MSC_VER) || defined(__clang__)
|
||||
using u128 = __uint128_t;
|
||||
using s128 = __int128_t;
|
||||
#else
|
||||
|
|
@ -266,8 +266,8 @@ extern "C"
|
|||
union __m128i;
|
||||
struct __m128d;
|
||||
|
||||
uchar _addcarry_u64(uchar, u64, u64, u64*);
|
||||
uchar _subborrow_u64(uchar, u64, u64, u64*);
|
||||
constexpr uchar _addcarry_u64(uchar, u64, u64, u64*);
|
||||
constexpr uchar _subborrow_u64(uchar, u64, u64, u64*);
|
||||
u64 __shiftleft128(u64, u64, uchar);
|
||||
u64 __shiftright128(u64, u64, uchar);
|
||||
u64 _umul128(u64, u64, u64*);
|
||||
|
|
@ -579,7 +579,7 @@ struct s128 : u128
|
|||
// Optimization for u64*u64=u128
|
||||
constexpr u128 u128_from_mul(u64 a, u64 b)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
if (!std::is_constant_evaluated())
|
||||
{
|
||||
u64 hi;
|
||||
|
|
|
|||
24
vcpkg.json
Normal file
24
vcpkg.json
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"name": "rpcs3",
|
||||
"version-string": "1.0",
|
||||
"builtin-baseline": "b94ab47c998b93fe72b0f501eaac70f96328019e",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "ffmpeg",
|
||||
"features": [
|
||||
"avcodec",
|
||||
"avformat",
|
||||
"swscale",
|
||||
"swresample"
|
||||
]
|
||||
},
|
||||
"libpng",
|
||||
"opencv",
|
||||
"qtbase",
|
||||
"qtmultimedia",
|
||||
"qtsvg",
|
||||
"qttools",
|
||||
"vulkan",
|
||||
"zlib"
|
||||
]
|
||||
}
|
||||
Loading…
Reference in a new issue