Compare commits

..

No commits in common. "master" and "v0.0.39" have entirely different histories.

501 changed files with 16695 additions and 102262 deletions

121
.ci/build-mac-arm64.sh Executable file
View file

@ -0,0 +1,121 @@
#!/bin/sh -ex
# shellcheck disable=SC2086
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
export HOMEBREW_NO_ENV_HINTS=1
export HOMEBREW_NO_INSTALL_CLEANUP=1
brew install -f --overwrite --quiet googletest opencv@4 ffmpeg@5 "llvm@$LLVM_COMPILER_VER" sdl3 vulkan-headers vulkan-loader
brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative
brew link -f --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
# moltenvk based on commit for 1.4.0 release
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/ea2bec5f1f4384e188d7fc0702ab21a20a2ced08/Formula/m/molten-vk.rb
/opt/homebrew/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
export HOMEBREW_DEVELOPER=0
export CXX=clang++
export CC=clang
export BREW_PATH;
BREW_PATH="$(brew --prefix)"
export BREW_BIN="/opt/homebrew/bin"
export BREW_SBIN="/opt/homebrew/sbin"
export CMAKE_EXTRA_OPTS='-DLLVM_TARGETS_TO_BUILD=arm64'
export WORKDIR;
WORKDIR="$(pwd)"
# Setup ccache
if [ ! -d "$CCACHE_DIR" ]; then
mkdir -p "$CCACHE_DIR"
fi
# Get Qt
if [ ! -d "/tmp/Qt/$QT_VER" ]; then
mkdir -p "/tmp/Qt"
git clone https://github.com/engnr/qt-downloader.git
cd qt-downloader
git checkout f52efee0f18668c6d6de2dec0234b8c4bc54c597
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"
pip3 install py7zr requests semantic_version lxml --no-cache --break-system-packages
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"
python3 "$WORKDIR/qt-downloader/qt-downloader" macos desktop "$QT_VER" clang_64 --opensource --addons qtmultimedia qtimageformats -o "$QT_VER/clang_64"
fi
cd "$WORKDIR"
ditto "/tmp/Qt/$QT_VER" "qt-downloader/$QT_VER"
export Qt6_DIR="$WORKDIR/qt-downloader/$QT_VER/clang_64/lib/cmake/Qt$QT_VER_MAIN"
export SDL3_DIR="$BREW_PATH/opt/sdl3/lib/cmake/SDL3"
export PATH="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/bin:$WORKDIR/qt-downloader/$QT_VER/clang_64/bin:$BREW_BIN:$BREW_SBIN:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:$PATH"
export LDFLAGS="-L$BREW_PATH/lib $BREW_PATH/opt/ffmpeg@5/lib/libavcodec.dylib $BREW_PATH/opt/ffmpeg@5/lib/libavformat.dylib $BREW_PATH/opt/ffmpeg@5/lib/libavutil.dylib $BREW_PATH/opt/ffmpeg@5/lib/libswscale.dylib $BREW_PATH/opt/ffmpeg@5/lib/libswresample.dylib $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++.1.dylib $BREW_PATH/lib/libSDL3.dylib $BREW_PATH/lib/libGLEW.dylib $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/unwind/libunwind.1.dylib -Wl,-rpath,$BREW_PATH/lib"
export CPPFLAGS="-I$BREW_PATH/include -D__MAC_OS_X_VERSION_MIN_REQUIRED=144000"
export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=144000"
export LIBRARY_PATH="$BREW_PATH/lib"
export LD_LIBRARY_PATH="$BREW_PATH/lib"
export VULKAN_SDK
VULKAN_SDK="$BREW_PATH/opt/molten-vk"
ln -s "$BREW_PATH/opt/vulkan-loader/lib/libvulkan.dylib" "$VULKAN_SDK/lib/libvulkan.dylib" || true
export LLVM_DIR
LLVM_DIR="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER"
# exclude ffmpeg, LLVM, opencv, and sdl from submodule update
# shellcheck disable=SC2046
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/ffmpeg/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules)
mkdir build && cd build || exit 1
export MACOSX_DEPLOYMENT_TARGET=14.4
"$BREW_PATH/bin/cmake" .. \
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
-DUSE_SDL=ON \
-DUSE_DISCORD_RPC=ON \
-DUSE_VULKAN=ON \
-DUSE_ALSA=OFF \
-DUSE_PULSE=OFF \
-DUSE_AUDIOUNIT=ON \
-DUSE_SYSTEM_FFMPEG=ON \
-DLLVM_CCACHE_BUILD=OFF \
-DLLVM_BUILD_RUNTIME=OFF \
-DLLVM_BUILD_TOOLS=OFF \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_TOOLS=OFF \
-DLLVM_INCLUDE_UTILS=OFF \
-DLLVM_USE_PERF=OFF \
-DLLVM_ENABLE_Z3_SOLVER=OFF \
-DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_SYSTEM_MVK=ON \
-DUSE_SYSTEM_FAUDIO=OFF \
-DUSE_SYSTEM_SDL=ON \
-DUSE_SYSTEM_OPENCV=ON \
"$CMAKE_EXTRA_OPTS" \
-DLLVM_TARGET_ARCH=arm64 \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DCMAKE_IGNORE_PATH="$BREW_PATH/lib" \
-DCMAKE_IGNORE_PREFIX_PATH=/opt/homebrew/opt \
-DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=144000" \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
-G Ninja
"$BREW_PATH/bin/ninja"; build_status=$?;
cd ..
# If it compiled succesfully let's deploy.
if [ "$build_status" -eq 0 ]; then
.ci/deploy-mac-arm64.sh
fi

View file

@ -1,51 +1,36 @@
#!/bin/sh -ex #!/bin/sh -ex
# Gather explicit version number and number of commits
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
# AVVER is used for GitHub releases, it is the version number. LVER is used for release naming.
AVVER="${COMM_TAG}-${COMM_COUNT}"
export LVER="${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}"
echo "AVVER=$AVVER" >> .ci/ci-vars.env
# shellcheck disable=SC2086
export HOMEBREW_NO_AUTO_UPDATE=1 export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 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 ccache "llvm@$LLVM_COMPILER_VER" brew install -f --overwrite --quiet ccache "llvm@$LLVM_COMPILER_VER"
brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER" brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER"
if [ "$AARCH64" -eq 1 ]; then # shellcheck disable=SC3009
brew install -f --overwrite --quiet googletest opencv@4 sdl3 vulkan-headers vulkan-loader molten-vk arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew unlink --quiet ffmpeg fmt qtbase qtsvg qtdeclarative arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet python@3.14 opencv@4 ffmpeg@5 "llvm@$LLVM_COMPILER_VER" sdl3 vulkan-headers vulkan-loader
else arch -x86_64 /usr/local/bin/brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" arch -x86_64 /usr/local/bin/brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER" ffmpeg@5
arch -x86_64 /usr/local/bin/brew install -f --overwrite --quiet python@3.14 opencv@4 "llvm@$LLVM_COMPILER_VER" sdl3 vulkan-headers vulkan-loader molten-vk
arch -x86_64 /usr/local/bin/brew unlink --quiet ffmpeg qtbase qtsvg qtdeclarative
fi
# moltenvk based on commit for 1.4.0 release
export HOMEBREW_DEVELOPER=1 # Prevents blocking of local formulae
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/ea2bec5f1f4384e188d7fc0702ab21a20a2ced08/Formula/m/molten-vk.rb
arch -x86_64 /usr/local/bin/brew install -f --overwrite --formula --quiet ./molten-vk.rb
export HOMEBREW_DEVELOPER=0
export CXX=clang++ export CXX=clang++
export CC=clang export CC=clang
export BREW_PATH; export BREW_X64_PATH;
if [ "$AARCH64" -eq 1 ]; then BREW_X64_PATH="$("/usr/local/bin/brew" --prefix)"
BREW_PATH="$(brew --prefix)" export BREW_BIN="/usr/local/bin"
export BREW_BIN="/opt/homebrew/bin" export BREW_SBIN="/usr/local/sbin"
export BREW_SBIN="/opt/homebrew/sbin" export CMAKE_EXTRA_OPTS='-DLLVM_TARGETS_TO_BUILD=X86'
else
BREW_PATH="$("/usr/local/bin/brew" --prefix)"
export BREW_BIN="/usr/local/bin"
export BREW_SBIN="/usr/local/sbin"
fi
export WORKDIR; export WORKDIR;
WORKDIR="$(pwd)" WORKDIR="$(pwd)"
# Setup ccache
if [ ! -d "$CCACHE_DIR" ]; then
mkdir -p "$CCACHE_DIR"
fi
# Get Qt # Get Qt
if [ ! -d "/tmp/Qt/$QT_VER" ]; then if [ ! -d "/tmp/Qt/$QT_VER" ]; then
mkdir -p "/tmp/Qt" mkdir -p "/tmp/Qt"
@ -65,68 +50,68 @@ cd "$WORKDIR"
ditto "/tmp/Qt/$QT_VER" "qt-downloader/$QT_VER" ditto "/tmp/Qt/$QT_VER" "qt-downloader/$QT_VER"
export Qt6_DIR="$WORKDIR/qt-downloader/$QT_VER/clang_64/lib/cmake/Qt$QT_VER_MAIN" export Qt6_DIR="$WORKDIR/qt-downloader/$QT_VER/clang_64/lib/cmake/Qt$QT_VER_MAIN"
export SDL3_DIR="$BREW_PATH/opt/sdl3/lib/cmake/SDL3" export SDL3_DIR="$BREW_X64_PATH/opt/sdl3/lib/cmake/SDL3"
export PATH="/opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/bin:$PATH" export PATH="/opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/bin:$WORKDIR/qt-downloader/$QT_VER/clang_64/bin:$BREW_BIN:$BREW_SBIN:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin:$PATH"
export LDFLAGS="-L$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++ -L$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/unwind -lunwind" # shellcheck disable=SC2155
export LDFLAGS="-L$BREW_X64_PATH/lib -Wl,-rpath,$BREW_X64_PATH/lib,-L$(brew --prefix llvm)/lib/c++"
export CPPFLAGS="-I$BREW_X64_PATH/include -msse -msse2 -mcx16 -D__MAC_OS_X_VERSION_MIN_REQUIRED=144000"
export CFLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=144000"
export LIBRARY_PATH="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib:$BREW_X64_PATH/lib"
export LD_LIBRARY_PATH="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER/lib:$BREW_X64_PATH/lib"
export VULKAN_SDK export VULKAN_SDK
VULKAN_SDK="$BREW_PATH/opt/molten-vk" VULKAN_SDK="$BREW_X64_PATH/opt/molten-vk"
ln -s "$BREW_PATH/opt/vulkan-loader/lib/libvulkan.dylib" "$VULKAN_SDK/lib/libvulkan.dylib" ln -s "$BREW_X64_PATH/opt/vulkan-loader/lib/libvulkan.dylib" "$VULKAN_SDK/lib/libvulkan.dylib"
export LLVM_DIR export LLVM_DIR
LLVM_DIR="$BREW_PATH/opt/llvm@$LLVM_COMPILER_VER" LLVM_DIR="$BREW_X64_PATH/opt/llvm@$LLVM_COMPILER_VER"
# Pull all the submodules except some # exclude ffmpeg, LLVM, opencv, and sdl from submodule update
# shellcheck disable=SC2046 # shellcheck disable=SC2046
git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules) git submodule -q update --init --depth=1 --jobs=8 $(awk '/path/ && !/ffmpeg/ && !/llvm/ && !/opencv/ && !/SDL/ && !/feralinteractive/ { print $3 }' .gitmodules)
mkdir build && cd build || exit 1 mkdir build && cd build || exit 1
if [ "$AARCH64" -eq 1 ]; then export MACOSX_DEPLOYMENT_TARGET=14.4
cmake .. \
-DBUILD_RPCS3_TESTS="${RUN_UNIT_TESTS}" \ "/opt/homebrew/bin/cmake" .. \
-DRUN_RPCS3_TESTS="${RUN_UNIT_TESTS}" \
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 \
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
-DMACOSX_BUNDLE_SHORT_VERSION_STRING="${COMM_TAG}" \
-DMACOSX_BUNDLE_BUNDLE_VERSION="${COMM_COUNT}" \
-DSTATIC_LINK_LLVM=ON \
-DUSE_SDL=ON \
-DUSE_DISCORD_RPC=ON \
-DUSE_AUDIOUNIT=ON \
-DUSE_SYSTEM_FFMPEG=OFF \
-DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_PRECOMPILED_HEADERS=OFF \
-DUSE_SYSTEM_MVK=ON \
-DUSE_SYSTEM_SDL=ON \
-DUSE_SYSTEM_OPENCV=ON \
-G Ninja
else
cmake .. \
-DBUILD_RPCS3_TESTS=OFF \ -DBUILD_RPCS3_TESTS=OFF \
-DRUN_RPCS3_TESTS=OFF \ -DRUN_RPCS3_TESTS=OFF \
-DUSE_SDL=ON \
-DUSE_DISCORD_RPC=ON \
-DUSE_VULKAN=ON \
-DUSE_ALSA=OFF \
-DUSE_PULSE=OFF \
-DUSE_AUDIOUNIT=ON \
-DUSE_SYSTEM_FFMPEG=ON \
-DLLVM_CCACHE_BUILD=OFF \
-DLLVM_BUILD_RUNTIME=OFF \
-DLLVM_BUILD_TOOLS=OFF \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_TOOLS=OFF \
-DLLVM_INCLUDE_UTILS=OFF \
-DLLVM_USE_PERF=OFF \
-DLLVM_ENABLE_Z3_SOLVER=OFF \
-DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_SYSTEM_MVK=ON \
-DUSE_SYSTEM_FAUDIO=OFF \
-DUSE_SYSTEM_SDL=ON \
-DUSE_SYSTEM_OPENCV=ON \
"$CMAKE_EXTRA_OPTS" \
-DLLVM_TARGET_ARCH=X86_64 \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DCMAKE_SYSTEM_PROCESSOR=x86_64 \ -DCMAKE_SYSTEM_PROCESSOR=x86_64 \
-DCMAKE_TOOLCHAIN_FILE=buildfiles/cmake/TCDarwinX86_64.cmake \ -DCMAKE_TOOLCHAIN_FILE=buildfiles/cmake/TCDarwinX86_64.cmake \
-DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 \ -DCMAKE_IGNORE_PATH="$BREW_X64_PATH/lib" \
-DCMAKE_IGNORE_PREFIX_PATH=/usr/local/opt \
-DCMAKE_CXX_FLAGS="-D__MAC_OS_X_VERSION_MIN_REQUIRED=144000" \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \ -DCMAKE_OSX_SYSROOT="$(xcrun --sdk macosx --show-sdk-path)" \
-DMACOSX_BUNDLE_SHORT_VERSION_STRING="${COMM_TAG}" \
-DMACOSX_BUNDLE_BUNDLE_VERSION="${COMM_COUNT}"\
-DSTATIC_LINK_LLVM=ON \
-DUSE_SDL=ON \
-DUSE_DISCORD_RPC=ON \
-DUSE_AUDIOUNIT=ON \
-DUSE_SYSTEM_FFMPEG=OFF \
-DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_PRECOMPILED_HEADERS=OFF \
-DUSE_SYSTEM_MVK=ON \
-DUSE_SYSTEM_SDL=ON \
-DUSE_SYSTEM_OPENCV=ON \
-DUSE_SYSTEM_PROTOBUF=ON \
-G Ninja -G Ninja
fi
ninja; build_status=$?; "/opt/homebrew/bin/ninja"; build_status=$?;
cd .. cd ..

View file

@ -2,9 +2,6 @@
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
@ -26,7 +23,7 @@ else
fi fi
cmake .. \ cmake .. \
-DCMAKE_PREFIX_PATH=/"${MSYS2}" \ -DCMAKE_PREFIX_PATH=/clang64 \
-DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_PREFIX=/usr \
-DUSE_NATIVE_INSTRUCTIONS=OFF \ -DUSE_NATIVE_INSTRUCTIONS=OFF \
-DUSE_PRECOMPILED_HEADERS=OFF \ -DUSE_PRECOMPILED_HEADERS=OFF \
@ -47,8 +44,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=/"${MSYS2}"/lib/cmake/llvm \ -DLLVM_DIR=/clang64/lib/cmake/llvm \
-DVulkan_LIBRARY=/"${MSYS2}"/lib/libvulkan-1.dll.a \ -DVulkan_LIBRARY=/clang64/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 \
@ -60,5 +57,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 "${CPU_ARCH}" "${MSYS2}" .ci/deploy-windows-clang.sh "x86_64"
fi fi

82
.ci/deploy-mac-arm64.sh Executable file
View file

@ -0,0 +1,82 @@
#!/bin/sh -ex
# shellcheck disable=SC2086
cd build || exit 1
# Gather explicit version number and number of commits
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ../rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
AVVER="${COMM_TAG}-${COMM_COUNT}"
# AVVER is used for GitHub releases, it is the version number.
echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
cd bin
mkdir "rpcs3.app/Contents/lib/" || true
mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true
wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar
tar -xvf MoltenVK-macos-privateapi.tar
cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib" "rpcs3.app/Contents/Frameworks/libMoltenVK.dylib"
cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/MoltenVK_icd.json" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
sed -i '' "s/.\//..\/..\/..\/Frameworks\//g" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
cp "$(realpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
cp "$(realpath /opt/homebrew/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib"
cp "$(realpath /opt/homebrew/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
cp "$(realpath /opt/homebrew/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib"
rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
"rpcs3.app/Contents/Frameworks/QtQml.framework" \
"rpcs3.app/Contents/Frameworks/QtQmlModels.framework" \
"rpcs3.app/Contents/Frameworks/QtQuick.framework" \
"rpcs3.app/Contents/Frameworks/QtVirtualKeyboard.framework" \
"rpcs3.app/Contents/Plugins/platforminputcontexts" \
"rpcs3.app/Contents/Plugins/virtualkeyboard" \
"rpcs3.app/Contents/Resources/git"
../../.ci/optimize-mac.sh rpcs3.app
# Download translations
mkdir -p "rpcs3.app/Contents/translations"
ZIP_URL=$(curl -fsSL "https://api.github.com/repos/RPCS3/rpcs3_translations/releases/latest" \
| grep "browser_download_url" \
| grep "RPCS3-languages.zip" \
| cut -d '"' -f 4)
if [ -z "$ZIP_URL" ]; then
echo "Failed to find RPCS3-languages.zip in the latest release. Continuing without translations."
else
echo "Downloading translations from: $ZIP_URL"
curl -L -o translations.zip "$ZIP_URL" || {
echo "Failed to download translations.zip. Continuing without translations."
exit 0
}
unzip -o translations.zip -d "rpcs3.app/Contents/translations" >/dev/null 2>&1 || \
echo "Failed to extract translations.zip. Continuing without translations."
rm -f translations.zip
fi
# Hack
install_name_tool -delete_rpath /opt/homebrew/lib RPCS3.app/Contents/MacOS/rpcs3 || echo "Hack for deleting rpath /opt/homebrew/lib not needed"
install_name_tool -delete_rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib RPCS3.app/Contents/MacOS/rpcs3 || echo "Hack for deleting rpath /opt/homebrew/opt/llvm@$LLVM_COMPILER_VER/lib not needed"
# Need to do this rename hack due to case insensitive filesystem
mv rpcs3.app RPCS3_.app
mv RPCS3_.app RPCS3.app
# NOTE: "--deep" is deprecated
codesign --deep -fs - RPCS3.app
echo "[InternetShortcut]" > Quickstart.url
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
echo "IconIndex=0" >> Quickstart.url
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos_arm64.7z"
"/opt/homebrew/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH")
SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }')
cd ..
echo "${SHA256SUM};${FILESIZE}B" > "$RELEASE_MESSAGE"
cd bin

View file

@ -3,7 +3,18 @@
# shellcheck disable=SC2086 # shellcheck disable=SC2086
cd build || exit 1 cd build || exit 1
# Gather explicit version number and number of commits
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ../rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
AVVER="${COMM_TAG}-${COMM_COUNT}"
# AVVER is used for GitHub releases, it is the version number.
echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
cd bin cd bin
mkdir "rpcs3.app/Contents/lib/" || true
mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true
wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar
tar -xvf MoltenVK-macos-privateapi.tar tar -xvf MoltenVK-macos-privateapi.tar
@ -11,8 +22,11 @@ cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib" "rpcs3.app/Contents
cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/MoltenVK_icd.json" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json" cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/MoltenVK_icd.json" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
sed -i '' "s/.\//..\/..\/..\/Frameworks\//g" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json" sed -i '' "s/.\//..\/..\/..\/Frameworks\//g" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json"
cp "$(realpath $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib" cp "$(realpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib"
cp "$(realpath $BREW_PATH/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib" cp "$(realpath /usr/local/opt/llvm@$LLVM_COMPILER_VER/lib/unwind/libunwind.1.dylib)" "rpcs3.app/Contents/Frameworks/libunwind.1.dylib"
cp "$(realpath /usr/local/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib"
cp "$(realpath /usr/local/lib/libsharpyuv.0.dylib)" "rpcs3.app/Contents/lib/libsharpyuv.0.dylib"
cp "$(realpath /usr/local/lib/libintl.8.dylib)" "rpcs3.app/Contents/lib/libintl.8.dylib"
rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \ rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
"rpcs3.app/Contents/Frameworks/QtQml.framework" \ "rpcs3.app/Contents/Frameworks/QtQml.framework" \
@ -44,20 +58,13 @@ else
rm -f translations.zip rm -f translations.zip
fi fi
# Copy Qt translations manually
QT_TRANS="$WORKDIR/qt-downloader/$QT_VER/clang_64/translations"
cp $QT_TRANS/qt_*.qm rpcs3.app/Contents/translations
cp $QT_TRANS/qtbase_*.qm rpcs3.app/Contents/translations
cp $QT_TRANS/qtmultimedia_*.qm rpcs3.app/Contents/translations
rm -f rpcs3.app/Contents/translations/qt_help_*.qm
# Need to do this rename hack due to case insensitive filesystem # Need to do this rename hack due to case insensitive filesystem
mv rpcs3.app RPCS3_.app mv rpcs3.app RPCS3_.app
mv RPCS3_.app RPCS3.app mv RPCS3_.app RPCS3.app
# Hack # Hack
install_name_tool -delete_rpath /opt/homebrew/lib RPCS3.app/Contents/MacOS/rpcs3 || true install_name_tool -delete_rpath /usr/local/lib RPCS3.app/Contents/MacOS/rpcs3
install_name_tool -delete_rpath /usr/local/lib RPCS3.app/Contents/MacOS/rpcs3 || true #-delete_rpath /usr/local/Cellar/sdl3/3.2.8/lib
# NOTE: "--deep" is deprecated # NOTE: "--deep" is deprecated
codesign --deep -fs - RPCS3.app codesign --deep -fs - RPCS3.app
@ -66,12 +73,8 @@ echo "[InternetShortcut]" > Quickstart.url
echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url echo "URL=https://rpcs3.net/quickstart" >> Quickstart.url
echo "IconIndex=0" >> Quickstart.url echo "IconIndex=0" >> Quickstart.url
if [ "$AARCH64" -eq 1 ]; then ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${COMM_TAG}-${COMM_COUNT}-${COMM_HASH}_macos.7z"
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos_aarch64.7z" "/opt/homebrew/bin/7z" a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
else
ARCHIVE_FILEPATH="$BUILD_ARTIFACTSTAGINGDIRECTORY/rpcs3-v${LVER}_macos.7z"
fi
7z a -mx9 "$ARCHIVE_FILEPATH" RPCS3.app Quickstart.url
FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH") FILESIZE=$(stat -f %z "$ARCHIVE_FILEPATH")
SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }') SHA256SUM=$(shasum -a 256 "$ARCHIVE_FILEPATH" | awk '{ print $1 }')

View file

@ -7,13 +7,12 @@
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 /"${MSYS2}"/bin) MSYS2_CLANG_BIN=$(cygpath -w /clang64/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')"
@ -23,7 +22,7 @@ cmake -DMSYS2_CLANG_BIN="$MSYS2_CLANG_BIN" -DMSYS2_USR_BIN="$MSYS2_USR_BIN" -Dex
mkdir ./bin/config mkdir ./bin/config
mkdir ./bin/config/input_configs 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://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 -f ISO-8859-1 -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat curl -fsSL 'https://rpcs3.net/compatibility?api=v1&export' | iconv -t UTF-8 1> ./bin/GuiConfigs/compat_database.dat
# Download translations # Download translations
mkdir -p ./bin/share/qt6/translations mkdir -p ./bin/share/qt6/translations
@ -39,7 +38,7 @@ else
echo "Failed to download translations.zip. Continuing without translations." echo "Failed to download translations.zip. Continuing without translations."
exit 0 exit 0
} }
7z x translations.zip -o"./bin/share/qt6/translations" >/dev/null 2>&1 || \ unzip -o translations.zip -d "./bin/share/qt6/translations" >/dev/null 2>&1 || \
echo "Failed to extract translations.zip. Continuing without translations." echo "Failed to extract translations.zip. Continuing without translations."
rm -f translations.zip rm -f translations.zip
fi fi
@ -50,7 +49,7 @@ fi
# Generate sha256 hashes # Generate sha256 hashes
# Write to file for GitHub releases # Write to file for GitHub releases
sha256sum "$BUILD" | awk '{ print $1 }' | tee "$BUILD.sha256" sha256sum "$BUILD" | awk '{ print $1 }' | tee "$BUILD.sha256"
echo "$(cat "$BUILD.sha256");$(stat -c %s "$BUILD")B" > "$RELEASE_MESSAGE" echo "$(cat "$BUILD.sha256");$(stat -c %s "$BUILD")B" > GitHubReleaseMessage.txt
# Move files to publishing directory # Move files to publishing directory
mkdir -p "$ARTIFACT_DIR" mkdir -p "$ARTIFACT_DIR"

View file

@ -1,7 +1,7 @@
#!/bin/sh -ex #!/bin/sh -ex
# Resource/dependency URLs # Resource/dependency URLs
CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.12.3/ccache-4.12.3-windows-x86_64.zip" CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.11.2/ccache-4.11.2-windows-x86_64.zip"
DEP_URLS=" \ DEP_URLS=" \
$CCACHE_URL" $CCACHE_URL"
@ -28,23 +28,11 @@ download_and_verify()
correctChecksum="$2" correctChecksum="$2"
algo="$3" algo="$3"
fileName="$4" fileName="$4"
path="$DEPS_CACHE_DIR/$fileName"
for _ in 1 2 3; do for _ in 1 2 3; do
# Check if the file exists and the checksum is correct [ -e "$DEPS_CACHE_DIR/$fileName" ] || curl -fLo "$DEPS_CACHE_DIR/$fileName" "$url"
if [ -e "$path" ]; then fileChecksum=$("${algo}sum" "$DEPS_CACHE_DIR/$fileName" | awk '{ print $1 }')
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0 [ "$fileChecksum" = "$correctChecksum" ] && return 0
fi
# Otherwise download the file
curl -fLo "$path" "$url"
# Check again if the file exists and the checksum is correct
if [ -e "$path" ]; then
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0
fi
done done
return 1; return 1;

View file

@ -13,21 +13,14 @@ COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_
COMM_COUNT=$(git rev-list --count HEAD) COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD) COMM_HASH=$(git rev-parse --short=8 HEAD)
# Differentiate Windows builds
if [ "$COMPILER" = 'clang' ];then
BUILD_SUFFIX="win64_${CPU_ARCH}_${COMPILER}"
else
BUILD_SUFFIX="${CPU_ARCH}_${COMPILER}"
fi
# Format the above into filenames # Format the above into filenames
if [ -n "$PR_NUMBER" ]; then if [ -n "$PR_NUMBER" ]; then
AVVER="${COMM_TAG}-${COMM_HASH}" AVVER="${COMM_TAG}-${COMM_HASH}"
BUILD_RAW="rpcs3-v${AVVER}_${BUILD_SUFFIX}" BUILD_RAW="rpcs3-v${AVVER}_${CPU_ARCH}_${COMPILER}"
BUILD="${BUILD_RAW}.7z" BUILD="${BUILD_RAW}.7z"
else else
AVVER="${COMM_TAG}-${COMM_COUNT}" AVVER="${COMM_TAG}-${COMM_COUNT}"
BUILD_RAW="rpcs3-v${AVVER}-${COMM_HASH}_${BUILD_SUFFIX}" BUILD_RAW="rpcs3-v${AVVER}-${COMM_HASH}_${CPU_ARCH}_${COMPILER}"
BUILD="${BUILD_RAW}.7z" BUILD="${BUILD_RAW}.7z"
fi fi

View file

@ -14,10 +14,9 @@ QT_DECL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtdeclarative${QT_SUFFIX}"
QT_TOOL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qttools${QT_SUFFIX}" QT_TOOL_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qttools${QT_SUFFIX}"
QT_MM_URL="${QT_HOST}${QT_PREFIX}addons.qtmultimedia.${QT_PREFIX_2}qtmultimedia${QT_SUFFIX}" QT_MM_URL="${QT_HOST}${QT_PREFIX}addons.qtmultimedia.${QT_PREFIX_2}qtmultimedia${QT_SUFFIX}"
QT_SVG_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtsvg${QT_SUFFIX}" QT_SVG_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qtsvg${QT_SUFFIX}"
QT_TRANSLATIONS_URL="${QT_HOST}${QT_PREFIX}${QT_PREFIX_2}qttranslations${QT_SUFFIX}"
LLVMLIBS_URL="https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-${LLVM_VER}/llvmlibs_mt.7z" LLVMLIBS_URL="https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win-${LLVM_VER}/llvmlibs_mt.7z"
VULKAN_SDK_URL="https://www.dropbox.com/scl/fi/sjjh0fc4ld281pjbl2xzu/VulkanSDK-${VULKAN_VER}-Installer.exe?rlkey=f6wzc0lvms5vwkt2z3qabfv9d&dl=1" VULKAN_SDK_URL="https://www.dropbox.com/scl/fi/sjjh0fc4ld281pjbl2xzu/VulkanSDK-${VULKAN_VER}-Installer.exe?rlkey=f6wzc0lvms5vwkt2z3qabfv9d&dl=1"
CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.12.3/ccache-4.12.3-windows-x86_64.zip" CCACHE_URL="https://github.com/ccache/ccache/releases/download/v4.11.2/ccache-4.11.2-windows-x86_64.zip"
DEP_URLS=" \ DEP_URLS=" \
$QT_BASE_URL \ $QT_BASE_URL \
@ -25,7 +24,6 @@ DEP_URLS=" \
$QT_TOOL_URL \ $QT_TOOL_URL \
$QT_MM_URL \ $QT_MM_URL \
$QT_SVG_URL \ $QT_SVG_URL \
$QT_TRANSLATIONS_URL \
$LLVMLIBS_URL \ $LLVMLIBS_URL \
$VULKAN_SDK_URL\ $VULKAN_SDK_URL\
$CCACHE_URL" $CCACHE_URL"
@ -53,23 +51,11 @@ download_and_verify()
correctChecksum="$2" correctChecksum="$2"
algo="$3" algo="$3"
fileName="$4" fileName="$4"
path="$DEPS_CACHE_DIR/$fileName"
for _ in 1 2 3; do for _ in 1 2 3; do
# Check if the file exists and the checksum is correct [ -e "$DEPS_CACHE_DIR/$fileName" ] || curl -fLo "$DEPS_CACHE_DIR/$fileName" "$url"
if [ -e "$path" ]; then fileChecksum=$("${algo}sum" "$DEPS_CACHE_DIR/$fileName" | awk '{ print $1 }')
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0 [ "$fileChecksum" = "$correctChecksum" ] && return 0
fi
# Otherwise download the file
curl -fLo "$path" "$url"
# Check again if the file exists and the checksum is correct
if [ -e "$path" ]; then
fileChecksum=$("${algo}sum" "$path" | awk '{ print $1 }')
[ "$fileChecksum" = "$correctChecksum" ] && return 0
fi
done done
return 1; return 1;

View file

@ -20,7 +20,7 @@ jobs:
runs-on: windows-2025 runs-on: windows-2025
env: env:
COMPILER: msvc COMPILER: msvc
CCACHE_SHA: '859141059ac950e1e8cd042c66f842f26b9e3a62a1669a69fe6ba180cb58bbdf' CCACHE_SHA: '1f39f3ad5aae3fe915e99ad1302633bc8f6718e58fa7c0de2b0ba7e080f0f08c'
CCACHE_BIN_DIR: 'C:\ccache_bin' CCACHE_BIN_DIR: 'C:\ccache_bin'
CCACHE_DIR: 'C:\ccache' CCACHE_DIR: 'C:\ccache'
CCACHE_INODECACHE: 'true' CCACHE_INODECACHE: 'true'

View file

@ -30,23 +30,23 @@ jobs:
matrix: matrix:
include: include:
- os: ubuntu-24.04 - os: ubuntu-24.04
docker_img: "rpcs3/rpcs3-ci-jammy:1.9" docker_img: "rpcs3/rpcs3-ci-jammy:1.7"
build_sh: "/rpcs3/.ci/build-linux.sh" build_sh: "/rpcs3/.ci/build-linux.sh"
compiler: clang compiler: clang
UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux" UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux"
- os: ubuntu-24.04 - os: ubuntu-24.04
docker_img: "rpcs3/rpcs3-ci-jammy:1.9" docker_img: "rpcs3/rpcs3-ci-jammy:1.7"
build_sh: "/rpcs3/.ci/build-linux.sh" build_sh: "/rpcs3/.ci/build-linux.sh"
compiler: gcc compiler: gcc
- os: ubuntu-24.04-arm - os: ubuntu-24.04-arm
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.9" docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.7"
build_sh: "/rpcs3/.ci/build-linux-aarch64.sh" build_sh: "/rpcs3/.ci/build-linux-aarch64.sh"
compiler: clang compiler: clang
UPLOAD_COMMIT_HASH: a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1 UPLOAD_COMMIT_HASH: a1d35836e8d45bfc6f63c26f0a3e5d46ef622fe1
UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux-arm64" UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux-arm64"
- os: ubuntu-24.04-arm - os: ubuntu-24.04-arm
docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.9" docker_img: "rpcs3/rpcs3-ci-jammy-aarch64:1.7"
build_sh: "/rpcs3/.ci/build-linux-aarch64.sh" build_sh: "/rpcs3/.ci/build-linux-aarch64.sh"
compiler: gcc compiler: gcc
name: RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }} name: RPCS3 Linux ${{ matrix.os }} ${{ matrix.compiler }}
@ -123,24 +123,23 @@ jobs:
matrix: matrix:
include: include:
- name: Intel - name: Intel
AARCH64: 0 build_sh: .ci/build-mac.sh
UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842 UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac
- name: Apple Silicon - name: Apple Silicon
AARCH64: 1 build_sh: .ci/build-mac-arm64.sh
UPLOAD_COMMIT_HASH: 8e21bdbc40711a3fccd18fbf17b742348b0f4281 UPLOAD_COMMIT_HASH: 8e21bdbc40711a3fccd18fbf17b742348b0f4281
UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac-arm64 UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac-arm64
name: RPCS3 Mac ${{ matrix.name }} name: RPCS3 Mac ${{ matrix.name }}
runs-on: macos-14 runs-on: macos-14
env: env:
CCACHE_DIR: /tmp/ccache_dir CCACHE_DIR: /tmp/ccache_dir
QT_VER: '6.10.2' QT_VER: '6.10.1'
QT_VER_MAIN: '6' QT_VER_MAIN: '6'
LLVM_COMPILER_VER: '21' LLVM_COMPILER_VER: '21'
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }} UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }}
UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }} UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }}
AARCH64: ${{ matrix.AARCH64 }}
RUN_UNIT_TESTS: github.event_name == 'pull_request' && 'ON' || 'OFF' RUN_UNIT_TESTS: github.event_name == 'pull_request' && 'ON' || 'OFF'
steps: steps:
- name: Checkout repository - name: Checkout repository
@ -165,7 +164,7 @@ jobs:
restore-keys: ${{ runner.os }}-qt-${{ matrix.name }}-${{ env.QT_VER }} restore-keys: ${{ runner.os }}-qt-${{ matrix.name }}-${{ env.QT_VER }}
- name: Build - name: Build
run: .ci/build-mac.sh run: ${{ matrix.build_sh }}
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@main uses: actions/upload-artifact@main
@ -213,13 +212,13 @@ jobs:
env: env:
COMPILER: msvc COMPILER: msvc
QT_VER_MAIN: '6' QT_VER_MAIN: '6'
QT_VER: '6.10.2' QT_VER: '6.10.1'
QT_VER_MSVC: 'msvc2022' QT_VER_MSVC: 'msvc2022'
QT_DATE: '202601261212' QT_DATE: '202511161843'
LLVM_VER: '19.1.7' LLVM_VER: '19.1.7'
VULKAN_VER: '1.3.268.0' VULKAN_VER: '1.3.268.0'
VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5' VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5'
CCACHE_SHA: '859141059ac950e1e8cd042c66f842f26b9e3a62a1669a69fe6ba180cb58bbdf' CCACHE_SHA: '1f39f3ad5aae3fe915e99ad1302633bc8f6718e58fa7c0de2b0ba7e080f0f08c'
CCACHE_BIN_DIR: 'C:\ccache_bin' CCACHE_BIN_DIR: 'C:\ccache_bin'
CCACHE_DIR: 'C:\ccache' CCACHE_DIR: 'C:\ccache'
CCACHE_INODECACHE: 'true' CCACHE_INODECACHE: 'true'
@ -329,25 +328,16 @@ 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: x86_64 arch: win64
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'
RELEASE_MESSAGE: ../GitHubReleaseMessage.txt
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
@ -361,26 +351,23 @@ jobs:
update: true update: true
cache: true cache: true
install: | install: |
mingw-w64-clang-${{ matrix.arch }}-clang mingw-w64-clang-x86_64-clang
mingw-w64-clang-${{ matrix.arch }}-ccache mingw-w64-clang-x86_64-ccache
mingw-w64-clang-${{ matrix.arch }}-cmake mingw-w64-clang-x86_64-cmake
mingw-w64-clang-${{ matrix.arch }}-lld mingw-w64-clang-x86_64-lld
mingw-w64-clang-${{ matrix.arch }}-ninja mingw-w64-clang-x86_64-ninja
mingw-w64-clang-${{ matrix.arch }}-llvm mingw-w64-clang-x86_64-llvm
mingw-w64-clang-${{ matrix.arch }}-ffmpeg mingw-w64-clang-x86_64-ffmpeg
mingw-w64-clang-${{ matrix.arch }}-opencv mingw-w64-clang-x86_64-opencv
mingw-w64-clang-${{ matrix.arch }}-iconv 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
mingw-w64-clang-${{ matrix.arch }}-qt6-tools
mingw-w64-clang-${{ matrix.arch }}-qt6-translations
base-devel base-devel
curl curl
git git
@ -391,8 +378,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 }}-${{ matrix.arch }}-${{ github.run_id }} key: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-${{ github.run_id }}
restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ matrix.arch }}- restore-keys: ${{ runner.os }}-ccache-${{ matrix.compiler }}-${{ runner.arch }}-
- name: Build RPCS3 - name: Build RPCS3
shell: msys2 {0} shell: msys2 {0}
@ -400,25 +387,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 ${{ matrix.arch }} ${{ matrix.msys2 }} .ci/build-windows-clang.sh
- name: Deploy master build to GitHub Releases (only aarch64)
if: |
matrix.arch == 'aarch64' &&
github.event_name != 'pull_request' &&
github.repository == 'RPCS3/rpcs3' &&
github.ref == 'refs/heads/master'
env:
RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }}
# We specify it here since this upload is specific to arm64
UPLOAD_COMMIT_HASH: ee05050fd1d8488148a771b526702656a10dacf0
UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-win-arm64"
run: |
COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_version.cpp)
COMM_COUNT=$(git rev-list --count HEAD)
COMM_HASH=$(git rev-parse --short=8 HEAD)
export AVVER="${COMM_TAG}-${COMM_COUNT}"
.ci/github-upload.sh
- name: Save build Ccache - name: Save build Ccache
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'
@ -430,7 +399,7 @@ jobs:
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@main uses: actions/upload-artifact@main
with: with:
name: RPCS3 for Windows (${{ matrix.name }}, clang) name: RPCS3 for Windows (${{ runner.arch }}, ${{ matrix.compiler }})
path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }} path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}
compression-level: 0 compression-level: 0
if-no-files-found: error if-no-files-found: error
@ -469,8 +438,6 @@ jobs:
with: with:
envs: 'QT_VER_MAIN LLVM_COMPILER_VER CCACHE_DIR CC CXX LLVM_CONFIG' envs: 'QT_VER_MAIN LLVM_COMPILER_VER CCACHE_DIR CC CXX LLVM_CONFIG'
usesh: true usesh: true
copyback: false
release: "14.3"
run: .ci/install-freebsd.sh && .ci/build-freebsd.sh run: .ci/install-freebsd.sh && .ci/build-freebsd.sh
- name: Save Build Ccache - name: Save Build Ccache

8
.gitmodules vendored
View file

@ -52,6 +52,10 @@
path = 3rdparty/wolfssl/wolfssl path = 3rdparty/wolfssl/wolfssl
url = ../../wolfSSL/wolfssl.git url = ../../wolfSSL/wolfssl.git
ignore = dirty ignore = dirty
[submodule "3rdparty/flatbuffers"]
path = 3rdparty/flatbuffers
url = ../../google/flatbuffers.git
ignore = dirty
[submodule "3rdparty/cubeb/cubeb"] [submodule "3rdparty/cubeb/cubeb"]
path = 3rdparty/cubeb/cubeb path = 3rdparty/cubeb/cubeb
url = ../../mozilla/cubeb.git url = ../../mozilla/cubeb.git
@ -108,7 +112,3 @@
path = 3rdparty/feralinteractive/feralinteractive path = 3rdparty/feralinteractive/feralinteractive
url = ../../FeralInteractive/gamemode.git url = ../../FeralInteractive/gamemode.git
ignore = dirty ignore = dirty
[submodule "3rdparty/protobuf/protobuf"]
path = 3rdparty/protobuf/protobuf
url = ../../protocolbuffers/protobuf.git
ignore = dirty

2
3rdparty/7zip/7zip vendored

@ -1 +1 @@
Subproject commit 839151eaaad24771892afaae6bac690e31e58384 Subproject commit 5e96a8279489832924056b1fa82f29d5837c9469

View file

@ -25,8 +25,18 @@ add_subdirectory(zstd EXCLUDE_FROM_ALL)
# 7zip sdk # 7zip sdk
add_subdirectory(7zip EXCLUDE_FROM_ALL) add_subdirectory(7zip EXCLUDE_FROM_ALL)
# Protobuf add_library(3rdparty_flatbuffers INTERFACE)
add_subdirectory(protobuf EXCLUDE_FROM_ALL) if (USE_SYSTEM_FLATBUFFERS)
pkg_check_modules(FLATBUFFERS REQUIRED IMPORTED_TARGET flatbuffers>=2.0.0)
target_link_libraries(3rdparty_flatbuffers INTERFACE PkgConfig::FLATBUFFERS)
set(FBS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../rpcs3/Emu/NP/generated/")
execute_process(COMMAND flatc --cpp -o "${FBS_DIR}" "${FBS_DIR}/np2_structs.fbs" RESULT_VARIABLE FBS_CMD_ERROR)
if(FBS_CMD_ERROR AND NOT FBS_CMD_ERROR EQUAL 0)
message(FATAL_ERROR "flatc failed to regenerate flatbuffers headers.")
endif()
else()
target_include_directories(3rdparty_flatbuffers SYSTEM INTERFACE flatbuffers/include)
endif()
# libPNG # libPNG
add_subdirectory(libpng EXCLUDE_FROM_ALL) add_subdirectory(libpng EXCLUDE_FROM_ALL)
@ -362,7 +372,7 @@ endif()
add_library(3rdparty::zlib ALIAS 3rdparty_zlib) add_library(3rdparty::zlib ALIAS 3rdparty_zlib)
add_library(3rdparty::zstd ALIAS 3rdparty_zstd) add_library(3rdparty::zstd ALIAS 3rdparty_zstd)
add_library(3rdparty::7zip ALIAS 3rdparty_7zip) add_library(3rdparty::7zip ALIAS 3rdparty_7zip)
add_library(3rdparty::protobuf ALIAS 3rdparty_protobuf) add_library(3rdparty::flatbuffers ALIAS 3rdparty_flatbuffers)
add_library(3rdparty::pugixml ALIAS pugixml) add_library(3rdparty::pugixml ALIAS pugixml)
add_library(3rdparty::glslang ALIAS 3rdparty_glslang) add_library(3rdparty::glslang ALIAS 3rdparty_glslang)
add_library(3rdparty::yaml-cpp ALIAS yaml-cpp) add_library(3rdparty::yaml-cpp ALIAS yaml-cpp)

2
3rdparty/FAudio vendored

@ -1 +1 @@
Subproject commit dc034fc671b07bbd14e8410d5dd6be6da38fdf6d Subproject commit 4ea8afea6ba857c24e40877f487d000d559b196d

125
3rdparty/GL/glext.h vendored
View file

@ -6,7 +6,7 @@ extern "C" {
#endif #endif
/* /*
** Copyright 2013-2026 The Khronos Group Inc. ** Copyright 2013-2020 The Khronos Group Inc.
** SPDX-License-Identifier: MIT ** SPDX-License-Identifier: MIT
** **
** This header is generated from the Khronos OpenGL / OpenGL ES XML ** This header is generated from the Khronos OpenGL / OpenGL ES XML
@ -32,7 +32,7 @@ extern "C" {
#define GLAPI extern #define GLAPI extern
#endif #endif
#define GL_GLEXT_VERSION 20260126 #define GL_GLEXT_VERSION 20250203
#include <KHR/khrplatform.h> #include <KHR/khrplatform.h>
@ -7358,47 +7358,6 @@ GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const voi
#endif #endif
#endif /* GL_EXT_fog_coord */ #endif /* GL_EXT_fog_coord */
#ifndef GL_EXT_fragment_shading_rate
#define GL_EXT_fragment_shading_rate 1
#define GL_SHADING_RATE_1X1_PIXELS_EXT 0x96A6
#define GL_SHADING_RATE_1X2_PIXELS_EXT 0x96A7
#define GL_SHADING_RATE_2X1_PIXELS_EXT 0x96A8
#define GL_SHADING_RATE_2X2_PIXELS_EXT 0x96A9
#define GL_SHADING_RATE_1X4_PIXELS_EXT 0x96AA
#define GL_SHADING_RATE_4X1_PIXELS_EXT 0x96AB
#define GL_SHADING_RATE_4X2_PIXELS_EXT 0x96AC
#define GL_SHADING_RATE_2X4_PIXELS_EXT 0x96AD
#define GL_SHADING_RATE_4X4_PIXELS_EXT 0x96AE
#define GL_SHADING_RATE_EXT 0x96D0
#define GL_SHADING_RATE_ATTACHMENT_EXT 0x96D1
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT 0x96D2
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT 0x96D3
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT 0x96D4
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT 0x96D5
#define GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT 0x96D6
#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D7
#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT 0x96D8
#define GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96D9
#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT 0x96DA
#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT 0x96DB
#define GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT 0x96DC
#define GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT 0x96DD
#define GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT 0x96DE
#define GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT 0x96DF
#define GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT 0x8F6F
#define GL_FRAGMENT_SHADING_RATE_PRIMITIVE_RATE_WITH_MULTI_VIEWPORT_SUPPORTED_EXT 0x9780
typedef void (APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates);
typedef void (APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate);
typedef void (APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1);
typedef void (APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates);
GLAPI void APIENTRY glShadingRateEXT (GLenum rate);
GLAPI void APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1);
GLAPI void APIENTRY glFramebufferShadingRateEXT (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight);
#endif
#endif /* GL_EXT_fragment_shading_rate */
#ifndef GL_EXT_framebuffer_blit #ifndef GL_EXT_framebuffer_blit
#define GL_EXT_framebuffer_blit 1 #define GL_EXT_framebuffer_blit 1
#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 #define GL_READ_FRAMEBUFFER_EXT 0x8CA8
@ -7857,86 +7816,6 @@ GLAPI void APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GL
#endif #endif
#endif /* GL_EXT_memory_object_win32 */ #endif /* GL_EXT_memory_object_win32 */
#ifndef GL_EXT_mesh_shader
#define GL_EXT_mesh_shader 1
#define GL_MESH_SHADER_EXT 0x9559
#define GL_TASK_SHADER_EXT 0x955A
#define GL_MAX_MESH_UNIFORM_BLOCKS_EXT 0x8E60
#define GL_MAX_MESH_TEXTURE_IMAGE_UNITS_EXT 0x8E61
#define GL_MAX_MESH_IMAGE_UNIFORMS_EXT 0x8E62
#define GL_MAX_MESH_UNIFORM_COMPONENTS_EXT 0x8E63
#define GL_MAX_MESH_ATOMIC_COUNTER_BUFFERS_EXT 0x8E64
#define GL_MAX_MESH_ATOMIC_COUNTERS_EXT 0x8E65
#define GL_MAX_MESH_SHADER_STORAGE_BLOCKS_EXT 0x8E66
#define GL_MAX_COMBINED_MESH_UNIFORM_COMPONENTS_EXT 0x8E67
#define GL_MAX_TASK_UNIFORM_BLOCKS_EXT 0x8E68
#define GL_MAX_TASK_TEXTURE_IMAGE_UNITS_EXT 0x8E69
#define GL_MAX_TASK_IMAGE_UNIFORMS_EXT 0x8E6A
#define GL_MAX_TASK_UNIFORM_COMPONENTS_EXT 0x8E6B
#define GL_MAX_TASK_ATOMIC_COUNTER_BUFFERS_EXT 0x8E6C
#define GL_MAX_TASK_ATOMIC_COUNTERS_EXT 0x8E6D
#define GL_MAX_TASK_SHADER_STORAGE_BLOCKS_EXT 0x8E6E
#define GL_MAX_COMBINED_TASK_UNIFORM_COMPONENTS_EXT 0x8E6F
#define GL_MAX_TASK_WORK_GROUP_TOTAL_COUNT_EXT 0x9740
#define GL_MAX_MESH_WORK_GROUP_TOTAL_COUNT_EXT 0x9741
#define GL_MAX_MESH_WORK_GROUP_INVOCATIONS_EXT 0x9757
#define GL_MAX_TASK_WORK_GROUP_INVOCATIONS_EXT 0x9759
#define GL_MAX_TASK_PAYLOAD_SIZE_EXT 0x9742
#define GL_MAX_TASK_SHARED_MEMORY_SIZE_EXT 0x9743
#define GL_MAX_MESH_SHARED_MEMORY_SIZE_EXT 0x9744
#define GL_MAX_TASK_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9745
#define GL_MAX_MESH_PAYLOAD_AND_SHARED_MEMORY_SIZE_EXT 0x9746
#define GL_MAX_MESH_OUTPUT_MEMORY_SIZE_EXT 0x9747
#define GL_MAX_MESH_PAYLOAD_AND_OUTPUT_MEMORY_SIZE_EXT 0x9748
#define GL_MAX_MESH_OUTPUT_VERTICES_EXT 0x9538
#define GL_MAX_MESH_OUTPUT_PRIMITIVES_EXT 0x9756
#define GL_MAX_MESH_OUTPUT_COMPONENTS_EXT 0x9749
#define GL_MAX_MESH_OUTPUT_LAYERS_EXT 0x974A
#define GL_MAX_MESH_MULTIVIEW_VIEW_COUNT_EXT 0x9557
#define GL_MESH_OUTPUT_PER_VERTEX_GRANULARITY_EXT 0x92DF
#define GL_MESH_OUTPUT_PER_PRIMITIVE_GRANULARITY_EXT 0x9543
#define GL_MAX_PREFERRED_TASK_WORK_GROUP_INVOCATIONS_EXT 0x974B
#define GL_MAX_PREFERRED_MESH_WORK_GROUP_INVOCATIONS_EXT 0x974C
#define GL_MESH_PREFERS_LOCAL_INVOCATION_VERTEX_OUTPUT_EXT 0x974D
#define GL_MESH_PREFERS_LOCAL_INVOCATION_PRIMITIVE_OUTPUT_EXT 0x974E
#define GL_MESH_PREFERS_COMPACT_VERTEX_OUTPUT_EXT 0x974F
#define GL_MESH_PREFERS_COMPACT_PRIMITIVE_OUTPUT_EXT 0x9750
#define GL_MAX_TASK_WORK_GROUP_COUNT_EXT 0x9751
#define GL_MAX_MESH_WORK_GROUP_COUNT_EXT 0x9752
#define GL_MAX_MESH_WORK_GROUP_SIZE_EXT 0x9758
#define GL_MAX_TASK_WORK_GROUP_SIZE_EXT 0x975A
#define GL_MESH_WORK_GROUP_SIZE_EXT 0x953E
#define GL_TASK_WORK_GROUP_SIZE_EXT 0x953F
#define GL_MESH_VERTICES_OUT_EXT 0x9579
#define GL_MESH_PRIMITIVES_OUT_EXT 0x957A
#define GL_MESH_OUTPUT_TYPE_EXT 0x957B
#define GL_UNIFORM_BLOCK_REFERENCED_BY_MESH_SHADER_EXT 0x959C
#define GL_UNIFORM_BLOCK_REFERENCED_BY_TASK_SHADER_EXT 0x959D
#define GL_REFERENCED_BY_MESH_SHADER_EXT 0x95A0
#define GL_REFERENCED_BY_TASK_SHADER_EXT 0x95A1
#define GL_TASK_SHADER_INVOCATIONS_EXT 0x9753
#define GL_MESH_SHADER_INVOCATIONS_EXT 0x9754
#define GL_MESH_PRIMITIVES_GENERATED_EXT 0x9755
#define GL_MESH_SHADER_BIT_EXT 0x00000040
#define GL_TASK_SHADER_BIT_EXT 0x00000080
#define GL_MESH_SUBROUTINE_EXT 0x957C
#define GL_TASK_SUBROUTINE_EXT 0x957D
#define GL_MESH_SUBROUTINE_UNIFORM_EXT 0x957E
#define GL_TASK_SUBROUTINE_UNIFORM_EXT 0x957F
#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_MESH_SHADER_EXT 0x959E
#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TASK_SHADER_EXT 0x959F
typedef void (APIENTRYP PFNGLDRAWMESHTASKSEXTPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
typedef void (APIENTRYP PFNGLDRAWMESHTASKSINDIRECTEXTPROC) (GLintptr indirect);
typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTEXTPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride);
typedef void (APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTEXTPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glDrawMeshTasksEXT (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
GLAPI void APIENTRY glDrawMeshTasksIndirectEXT (GLintptr indirect);
GLAPI void APIENTRY glMultiDrawMeshTasksIndirectEXT (GLintptr indirect, GLsizei drawcount, GLsizei stride);
GLAPI void APIENTRY glMultiDrawMeshTasksIndirectCountEXT (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride);
#endif
#endif /* GL_EXT_mesh_shader */
#ifndef GL_EXT_misc_attribute #ifndef GL_EXT_misc_attribute
#define GL_EXT_misc_attribute 1 #define GL_EXT_misc_attribute 1
#endif /* GL_EXT_misc_attribute */ #endif /* GL_EXT_misc_attribute */

@ -1 +1 @@
Subproject commit c41d64c6a35f6174bf4a27010aeac52a8d3bb2c6 Subproject commit 0e5e98e4ac8adae92e4f7653dd6eee17aa9c8791

@ -1 +1 @@
Subproject commit 484857522c73318c06f18ba0a3e17525fa98c608 Subproject commit e495bee4cd630c9f99907a764e16edba37a4b564

2
3rdparty/curl/curl vendored

@ -1 +1 @@
Subproject commit 8c908d2d0a6d32abdedda2c52e90bd56ec76c24d Subproject commit 400fffa90f30c7a2dc762fa33009d24851bd2016

View file

@ -79,16 +79,12 @@
<ClCompile Include="curl\lib\cookie.c" /> <ClCompile Include="curl\lib\cookie.c" />
<ClCompile Include="curl\lib\cshutdn.c" /> <ClCompile Include="curl\lib\cshutdn.c" />
<ClCompile Include="curl\lib\curlx\base64.c" /> <ClCompile Include="curl\lib\curlx\base64.c" />
<ClCompile Include="curl\lib\curlx\basename.c" />
<ClCompile Include="curl\lib\curlx\dynbuf.c" /> <ClCompile Include="curl\lib\curlx\dynbuf.c" />
<ClCompile Include="curl\lib\curlx\fopen.c" /> <ClCompile Include="curl\lib\curlx\fopen.c" />
<ClCompile Include="curl\lib\curlx\inet_ntop.c" /> <ClCompile Include="curl\lib\curlx\inet_ntop.c" />
<ClCompile Include="curl\lib\curlx\inet_pton.c" /> <ClCompile Include="curl\lib\curlx\inet_pton.c" />
<ClCompile Include="curl\lib\curlx\multibyte.c" /> <ClCompile Include="curl\lib\curlx\multibyte.c" />
<ClCompile Include="curl\lib\curlx\nonblock.c" /> <ClCompile Include="curl\lib\curlx\nonblock.c" />
<ClCompile Include="curl\lib\curlx\snprintf.c" />
<ClCompile Include="curl\lib\curlx\strcopy.c" />
<ClCompile Include="curl\lib\curlx\strdup.c" />
<ClCompile Include="curl\lib\curlx\strerr.c" /> <ClCompile Include="curl\lib\curlx\strerr.c" />
<ClCompile Include="curl\lib\curlx\strparse.c" /> <ClCompile Include="curl\lib\curlx\strparse.c" />
<ClCompile Include="curl\lib\curlx\timediff.c" /> <ClCompile Include="curl\lib\curlx\timediff.c" />
@ -110,7 +106,6 @@
<ClCompile Include="curl\lib\curl_rtmp.c" /> <ClCompile Include="curl\lib\curl_rtmp.c" />
<ClCompile Include="curl\lib\curl_sasl.c" /> <ClCompile Include="curl\lib\curl_sasl.c" />
<ClCompile Include="curl\lib\curl_sha512_256.c" /> <ClCompile Include="curl\lib\curl_sha512_256.c" />
<ClCompile Include="curl\lib\curl_share.c" />
<ClCompile Include="curl\lib\curl_sspi.c" /> <ClCompile Include="curl\lib\curl_sspi.c" />
<ClCompile Include="curl\lib\curl_threads.c" /> <ClCompile Include="curl\lib\curl_threads.c" />
<ClCompile Include="curl\lib\curl_trc.c" /> <ClCompile Include="curl\lib\curl_trc.c" />
@ -174,13 +169,14 @@
<ClCompile Include="curl\lib\progress.c" /> <ClCompile Include="curl\lib\progress.c" />
<ClCompile Include="curl\lib\psl.c" /> <ClCompile Include="curl\lib\psl.c" />
<ClCompile Include="curl\lib\rand.c" /> <ClCompile Include="curl\lib\rand.c" />
<ClCompile Include="curl\lib\ratelimit.c" /> <ClCompile Include="curl\lib\rename.c" />
<ClCompile Include="curl\lib\request.c" /> <ClCompile Include="curl\lib\request.c" />
<ClCompile Include="curl\lib\rtsp.c" /> <ClCompile Include="curl\lib\rtsp.c" />
<ClCompile Include="curl\lib\select.c" /> <ClCompile Include="curl\lib\select.c" />
<ClCompile Include="curl\lib\sendf.c" /> <ClCompile Include="curl\lib\sendf.c" />
<ClCompile Include="curl\lib\setopt.c" /> <ClCompile Include="curl\lib\setopt.c" />
<ClCompile Include="curl\lib\sha256.c" /> <ClCompile Include="curl\lib\sha256.c" />
<ClCompile Include="curl\lib\share.c" />
<ClCompile Include="curl\lib\slist.c" /> <ClCompile Include="curl\lib\slist.c" />
<ClCompile Include="curl\lib\smb.c" /> <ClCompile Include="curl\lib\smb.c" />
<ClCompile Include="curl\lib\smtp.c" /> <ClCompile Include="curl\lib\smtp.c" />
@ -188,8 +184,10 @@
<ClCompile Include="curl\lib\socks.c" /> <ClCompile Include="curl\lib\socks.c" />
<ClCompile Include="curl\lib\socks_gssapi.c" /> <ClCompile Include="curl\lib\socks_gssapi.c" />
<ClCompile Include="curl\lib\socks_sspi.c" /> <ClCompile Include="curl\lib\socks_sspi.c" />
<ClCompile Include="curl\lib\speedcheck.c" />
<ClCompile Include="curl\lib\splay.c" /> <ClCompile Include="curl\lib\splay.c" />
<ClCompile Include="curl\lib\strcase.c" /> <ClCompile Include="curl\lib\strcase.c" />
<ClCompile Include="curl\lib\strdup.c" />
<ClCompile Include="curl\lib\strequal.c" /> <ClCompile Include="curl\lib\strequal.c" />
<ClCompile Include="curl\lib\strerror.c" /> <ClCompile Include="curl\lib\strerror.c" />
<ClCompile Include="curl\lib\system_win32.c" /> <ClCompile Include="curl\lib\system_win32.c" />
@ -206,7 +204,6 @@
<ClCompile Include="curl\lib\version.c" /> <ClCompile Include="curl\lib\version.c" />
<ClCompile Include="curl\lib\vquic\curl_ngtcp2.c" /> <ClCompile Include="curl\lib\vquic\curl_ngtcp2.c" />
<ClCompile Include="curl\lib\vquic\curl_quiche.c" /> <ClCompile Include="curl\lib\vquic\curl_quiche.c" />
<ClCompile Include="curl\lib\vssh\vssh.c" />
<ClCompile Include="curl\lib\vtls\apple.c" /> <ClCompile Include="curl\lib\vtls\apple.c" />
<ClCompile Include="curl\lib\vtls\cipher_suite.c" /> <ClCompile Include="curl\lib\vtls\cipher_suite.c" />
<ClCompile Include="curl\lib\vtls\hostcheck.c" /> <ClCompile Include="curl\lib\vtls\hostcheck.c" />
@ -227,11 +224,13 @@
<ClCompile Include="curl\lib\vauth\spnego_sspi.c" /> <ClCompile Include="curl\lib\vauth\spnego_sspi.c" />
<ClCompile Include="curl\lib\vauth\vauth.c" /> <ClCompile Include="curl\lib\vauth\vauth.c" />
<ClCompile Include="curl\lib\vquic\vquic.c" /> <ClCompile Include="curl\lib\vquic\vquic.c" />
<ClCompile Include="curl\lib\vssh\curl_path.c" />
<ClCompile Include="curl\lib\vssh\libssh.c" /> <ClCompile Include="curl\lib\vssh\libssh.c" />
<ClCompile Include="curl\lib\vssh\libssh2.c" /> <ClCompile Include="curl\lib\vssh\libssh2.c" />
<ClCompile Include="curl\lib\vtls\gtls.c" /> <ClCompile Include="curl\lib\vtls\gtls.c" />
<ClCompile Include="curl\lib\vtls\keylog.c" /> <ClCompile Include="curl\lib\vtls\keylog.c" />
<ClCompile Include="curl\lib\vtls\mbedtls.c" /> <ClCompile Include="curl\lib\vtls\mbedtls.c" />
<ClCompile Include="curl\lib\vtls\mbedtls_threadlock.c" />
<ClCompile Include="curl\lib\vtls\openssl.c" /> <ClCompile Include="curl\lib\vtls\openssl.c" />
<ClCompile Include="curl\lib\vtls\schannel.c" /> <ClCompile Include="curl\lib\vtls\schannel.c" />
<ClCompile Include="curl\lib\vtls\schannel_verify.c" /> <ClCompile Include="curl\lib\vtls\schannel_verify.c" />
@ -273,7 +272,6 @@
<ClInclude Include="curl\lib\cookie.h" /> <ClInclude Include="curl\lib\cookie.h" />
<ClInclude Include="curl\lib\cshutdn.h" /> <ClInclude Include="curl\lib\cshutdn.h" />
<ClInclude Include="curl\lib\curlx\base64.h" /> <ClInclude Include="curl\lib\curlx\base64.h" />
<ClInclude Include="curl\lib\curlx\basename.h" />
<ClInclude Include="curl\lib\curlx\binmode.h" /> <ClInclude Include="curl\lib\curlx\binmode.h" />
<ClInclude Include="curl\lib\curlx\curlx.h" /> <ClInclude Include="curl\lib\curlx\curlx.h" />
<ClInclude Include="curl\lib\curlx\dynbuf.h" /> <ClInclude Include="curl\lib\curlx\dynbuf.h" />
@ -282,9 +280,6 @@
<ClInclude Include="curl\lib\curlx\inet_pton.h" /> <ClInclude Include="curl\lib\curlx\inet_pton.h" />
<ClInclude Include="curl\lib\curlx\multibyte.h" /> <ClInclude Include="curl\lib\curlx\multibyte.h" />
<ClInclude Include="curl\lib\curlx\nonblock.h" /> <ClInclude Include="curl\lib\curlx\nonblock.h" />
<ClInclude Include="curl\lib\curlx\snprintf.h" />
<ClInclude Include="curl\lib\curlx\strcopy.h" />
<ClInclude Include="curl\lib\curlx\strdup.h" />
<ClInclude Include="curl\lib\curlx\strerr.h" /> <ClInclude Include="curl\lib\curlx\strerr.h" />
<ClInclude Include="curl\lib\curlx\strparse.h" /> <ClInclude Include="curl\lib\curlx\strparse.h" />
<ClInclude Include="curl\lib\curlx\timediff.h" /> <ClInclude Include="curl\lib\curlx\timediff.h" />
@ -305,7 +300,9 @@
<ClInclude Include="curl\lib\curl_ldap.h" /> <ClInclude Include="curl\lib\curl_ldap.h" />
<ClInclude Include="curl\lib\curl_md4.h" /> <ClInclude Include="curl\lib\curl_md4.h" />
<ClInclude Include="curl\lib\curl_md5.h" /> <ClInclude Include="curl\lib\curl_md5.h" />
<ClInclude Include="curl\lib\curl_memory.h" />
<ClInclude Include="curl\lib\curl_memrchr.h" /> <ClInclude Include="curl\lib\curl_memrchr.h" />
<ClInclude Include="curl\lib\curl_mem_undef.h" />
<ClInclude Include="curl\lib\curl_ntlm_core.h" /> <ClInclude Include="curl\lib\curl_ntlm_core.h" />
<ClInclude Include="curl\lib\curl_printf.h" /> <ClInclude Include="curl\lib\curl_printf.h" />
<ClInclude Include="curl\lib\curl_range.h" /> <ClInclude Include="curl\lib\curl_range.h" />
@ -315,7 +312,6 @@
<ClInclude Include="curl\lib\curl_setup_once.h" /> <ClInclude Include="curl\lib\curl_setup_once.h" />
<ClInclude Include="curl\lib\curl_sha256.h" /> <ClInclude Include="curl\lib\curl_sha256.h" />
<ClInclude Include="curl\lib\curl_sha512_256.h" /> <ClInclude Include="curl\lib\curl_sha512_256.h" />
<ClInclude Include="curl\lib\curl_share.h" />
<ClInclude Include="curl\lib\curl_sspi.h" /> <ClInclude Include="curl\lib\curl_sspi.h" />
<ClInclude Include="curl\lib\curl_threads.h" /> <ClInclude Include="curl\lib\curl_threads.h" />
<ClInclude Include="curl\lib\curl_trc.h" /> <ClInclude Include="curl\lib\curl_trc.h" />
@ -356,6 +352,7 @@
<ClInclude Include="curl\lib\imap.h" /> <ClInclude Include="curl\lib\imap.h" />
<ClInclude Include="curl\lib\llist.h" /> <ClInclude Include="curl\lib\llist.h" />
<ClInclude Include="curl\lib\macos.h" /> <ClInclude Include="curl\lib\macos.h" />
<ClInclude Include="curl\lib\memdebug.h" />
<ClInclude Include="curl\lib\mime.h" /> <ClInclude Include="curl\lib\mime.h" />
<ClInclude Include="curl\lib\mqtt.h" /> <ClInclude Include="curl\lib\mqtt.h" />
<ClInclude Include="curl\lib\multihandle.h" /> <ClInclude Include="curl\lib\multihandle.h" />
@ -370,7 +367,7 @@
<ClInclude Include="curl\lib\progress.h" /> <ClInclude Include="curl\lib\progress.h" />
<ClInclude Include="curl\lib\psl.h" /> <ClInclude Include="curl\lib\psl.h" />
<ClInclude Include="curl\lib\rand.h" /> <ClInclude Include="curl\lib\rand.h" />
<ClInclude Include="curl\lib\ratelimit.h" /> <ClInclude Include="curl\lib\rename.h" />
<ClInclude Include="curl\lib\request.h" /> <ClInclude Include="curl\lib\request.h" />
<ClInclude Include="curl\lib\rtsp.h" /> <ClInclude Include="curl\lib\rtsp.h" />
<ClInclude Include="curl\lib\select.h" /> <ClInclude Include="curl\lib\select.h" />
@ -379,6 +376,7 @@
<ClInclude Include="curl\lib\setup-os400.h" /> <ClInclude Include="curl\lib\setup-os400.h" />
<ClInclude Include="curl\lib\setup-vms.h" /> <ClInclude Include="curl\lib\setup-vms.h" />
<ClInclude Include="curl\lib\setup-win32.h" /> <ClInclude Include="curl\lib\setup-win32.h" />
<ClInclude Include="curl\lib\share.h" />
<ClInclude Include="curl\lib\sigpipe.h" /> <ClInclude Include="curl\lib\sigpipe.h" />
<ClInclude Include="curl\lib\slist.h" /> <ClInclude Include="curl\lib\slist.h" />
<ClInclude Include="curl\lib\smb.h" /> <ClInclude Include="curl\lib\smb.h" />
@ -386,6 +384,7 @@
<ClInclude Include="curl\lib\sockaddr.h" /> <ClInclude Include="curl\lib\sockaddr.h" />
<ClInclude Include="curl\lib\socketpair.h" /> <ClInclude Include="curl\lib\socketpair.h" />
<ClInclude Include="curl\lib\socks.h" /> <ClInclude Include="curl\lib\socks.h" />
<ClInclude Include="curl\lib\speedcheck.h" />
<ClInclude Include="curl\lib\splay.h" /> <ClInclude Include="curl\lib\splay.h" />
<ClInclude Include="curl\lib\strcase.h" /> <ClInclude Include="curl\lib\strcase.h" />
<ClInclude Include="curl\lib\strdup.h" /> <ClInclude Include="curl\lib\strdup.h" />
@ -406,7 +405,6 @@
<ClInclude Include="curl\lib\vquic\curl_ngtcp2.h" /> <ClInclude Include="curl\lib\vquic\curl_ngtcp2.h" />
<ClInclude Include="curl\lib\vquic\curl_quiche.h" /> <ClInclude Include="curl\lib\vquic\curl_quiche.h" />
<ClInclude Include="curl\lib\vquic\vquic_int.h" /> <ClInclude Include="curl\lib\vquic\vquic_int.h" />
<ClInclude Include="curl\lib\vssh\vssh.h" />
<ClInclude Include="curl\lib\vtls\apple.h" /> <ClInclude Include="curl\lib\vtls\apple.h" />
<ClInclude Include="curl\lib\vtls\cipher_suite.h" /> <ClInclude Include="curl\lib\vtls\cipher_suite.h" />
<ClInclude Include="curl\lib\vtls\hostcheck.h" /> <ClInclude Include="curl\lib\vtls\hostcheck.h" />
@ -420,10 +418,12 @@
<ClInclude Include="curl\lib\vauth\ntlm.h" /> <ClInclude Include="curl\lib\vauth\ntlm.h" />
<ClInclude Include="curl\lib\vauth\vauth.h" /> <ClInclude Include="curl\lib\vauth\vauth.h" />
<ClInclude Include="curl\lib\vquic\vquic.h" /> <ClInclude Include="curl\lib\vquic\vquic.h" />
<ClInclude Include="curl\lib\vssh\curl_path.h" />
<ClInclude Include="curl\lib\vssh\ssh.h" /> <ClInclude Include="curl\lib\vssh\ssh.h" />
<ClInclude Include="curl\lib\vtls\gtls.h" /> <ClInclude Include="curl\lib\vtls\gtls.h" />
<ClInclude Include="curl\lib\vtls\keylog.h" /> <ClInclude Include="curl\lib\vtls\keylog.h" />
<ClInclude Include="curl\lib\vtls\mbedtls.h" /> <ClInclude Include="curl\lib\vtls\mbedtls.h" />
<ClInclude Include="curl\lib\vtls\mbedtls_threadlock.h" />
<ClInclude Include="curl\lib\vtls\openssl.h" /> <ClInclude Include="curl\lib\vtls\openssl.h" />
<ClInclude Include="curl\lib\vtls\schannel.h" /> <ClInclude Include="curl\lib\vtls\schannel.h" />
<ClInclude Include="curl\lib\vtls\vtls.h" /> <ClInclude Include="curl\lib\vtls\vtls.h" />

View file

@ -204,6 +204,9 @@
<ClCompile Include="curl\lib\rand.c"> <ClCompile Include="curl\lib\rand.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\rename.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\rtsp.c"> <ClCompile Include="curl\lib\rtsp.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -219,6 +222,9 @@
<ClCompile Include="curl\lib\sha256.c"> <ClCompile Include="curl\lib\sha256.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\share.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\slist.c"> <ClCompile Include="curl\lib\slist.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -240,12 +246,18 @@
<ClCompile Include="curl\lib\socks_sspi.c"> <ClCompile Include="curl\lib\socks_sspi.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\speedcheck.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\splay.c"> <ClCompile Include="curl\lib\splay.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\strcase.c"> <ClCompile Include="curl\lib\strcase.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\strdup.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\strerror.c"> <ClCompile Include="curl\lib\strerror.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -306,6 +318,9 @@
<ClCompile Include="curl\lib\vauth\vauth.c"> <ClCompile Include="curl\lib\vauth\vauth.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\vssh\curl_path.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vssh\libssh.c"> <ClCompile Include="curl\lib\vssh\libssh.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -318,6 +333,9 @@
<ClCompile Include="curl\lib\vtls\mbedtls.c"> <ClCompile Include="curl\lib\vtls\mbedtls.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\vtls\mbedtls_threadlock.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vtls\openssl.c"> <ClCompile Include="curl\lib\vtls\openssl.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
@ -531,27 +549,6 @@
<ClCompile Include="curl\lib\curlx\strerr.c"> <ClCompile Include="curl\lib\curlx\strerr.c">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="curl\lib\curlx\strcopy.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\vssh\vssh.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curl_share.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\ratelimit.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\basename.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\snprintf.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curlx\strdup.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="curl\include\curl\curl.h"> <ClInclude Include="curl\include\curl\curl.h">
@ -656,6 +653,9 @@
<ClInclude Include="curl\lib\curl_md5.h"> <ClInclude Include="curl\lib\curl_md5.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\curl_memory.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_memrchr.h"> <ClInclude Include="curl\lib\curl_memrchr.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -758,6 +758,9 @@
<ClInclude Include="curl\lib\llist.h"> <ClInclude Include="curl\lib\llist.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\memdebug.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\mime.h"> <ClInclude Include="curl\lib\mime.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -788,6 +791,9 @@
<ClInclude Include="curl\lib\rand.h"> <ClInclude Include="curl\lib\rand.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\rename.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\rtsp.h"> <ClInclude Include="curl\lib\rtsp.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -806,6 +812,9 @@
<ClInclude Include="curl\lib\setup-vms.h"> <ClInclude Include="curl\lib\setup-vms.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\share.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\sigpipe.h"> <ClInclude Include="curl\lib\sigpipe.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -827,6 +836,9 @@
<ClInclude Include="curl\lib\socks.h"> <ClInclude Include="curl\lib\socks.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\speedcheck.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\splay.h"> <ClInclude Include="curl\lib\splay.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -875,6 +887,9 @@
<ClInclude Include="curl\lib\vauth\vauth.h"> <ClInclude Include="curl\lib\vauth\vauth.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\vssh\curl_path.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vssh\ssh.h"> <ClInclude Include="curl\lib\vssh\ssh.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -884,6 +899,9 @@
<ClInclude Include="curl\lib\vtls\mbedtls.h"> <ClInclude Include="curl\lib\vtls\mbedtls.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\vtls\mbedtls_threadlock.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vtls\openssl.h"> <ClInclude Include="curl\lib\vtls\openssl.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -1085,6 +1103,9 @@
<ClInclude Include="curl\lib\cf-ip-happy.h"> <ClInclude Include="curl\lib\cf-ip-happy.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\curl_mem_undef.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_fopen.h"> <ClInclude Include="curl\lib\curl_fopen.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
@ -1100,27 +1121,6 @@
<ClInclude Include="curl\lib\curlx\strerr.h"> <ClInclude Include="curl\lib\curlx\strerr.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="curl\lib\curlx\snprintf.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\strcopy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\vssh\vssh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curl_share.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\ratelimit.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\basename.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\curlx\strdup.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="curl\lib\libcurl.rc"> <ResourceCompile Include="curl\lib\libcurl.rc">

2
3rdparty/ffmpeg vendored

@ -1 +1 @@
Subproject commit ce81114ed99e5510f6cd983f59a1eac9f33bb73c Subproject commit ec6367d3ba9d0d57b9d22d4b87da8144acaf428f

1
3rdparty/flatbuffers vendored Submodule

@ -0,0 +1 @@
Subproject commit 187240970746d00bbd26b0f5873ed54d2477f9f3

@ -1 +1 @@
Subproject commit c3e304954a9cfd154bc0dfbfea2b01cd61d6546d Subproject commit 49363adcfaf098748d7a4c8c624ad8c45a8c3a86

@ -1 +1 @@
Subproject commit 683181b47cfabd293e3ea409f838915b8297a4fd Subproject commit 7f3ae3d57459e59943a4ecfefc8f6277ec6bf540

View file

@ -23,7 +23,6 @@
<ClInclude Include="SDL\include\SDL3\SDL_clipboard.h" /> <ClInclude Include="SDL\include\SDL3\SDL_clipboard.h" />
<ClInclude Include="SDL\include\SDL3\SDL_copying.h" /> <ClInclude Include="SDL\include\SDL3\SDL_copying.h" />
<ClInclude Include="SDL\include\SDL3\SDL_cpuinfo.h" /> <ClInclude Include="SDL\include\SDL3\SDL_cpuinfo.h" />
<ClInclude Include="SDL\include\SDL3\SDL_dlopennote.h" />
<ClInclude Include="SDL\include\SDL3\SDL_egl.h" /> <ClInclude Include="SDL\include\SDL3\SDL_egl.h" />
<ClInclude Include="SDL\include\SDL3\SDL_endian.h" /> <ClInclude Include="SDL\include\SDL3\SDL_endian.h" />
<ClInclude Include="SDL\include\SDL3\SDL_error.h" /> <ClInclude Include="SDL\include\SDL3\SDL_error.h" />
@ -103,7 +102,6 @@
<ClInclude Include="SDL\src\audio\wasapi\SDL_wasapi.h" /> <ClInclude Include="SDL\src\audio\wasapi\SDL_wasapi.h" />
<ClInclude Include="SDL\src\camera\SDL_camera_c.h" /> <ClInclude Include="SDL\src\camera\SDL_camera_c.h" />
<ClInclude Include="SDL\src\camera\SDL_syscamera.h" /> <ClInclude Include="SDL\src\camera\SDL_syscamera.h" />
<ClInclude Include="SDL\src\core\SDL_core_unsupported.h" />
<ClInclude Include="SDL\src\core\windows\SDL_directx.h" /> <ClInclude Include="SDL\src\core\windows\SDL_directx.h" />
<ClInclude Include="SDL\src\core\windows\SDL_gameinput.h" /> <ClInclude Include="SDL\src\core\windows\SDL_gameinput.h" />
<ClInclude Include="SDL\src\core\windows\SDL_hid.h" /> <ClInclude Include="SDL\src\core\windows\SDL_hid.h" />
@ -132,8 +130,6 @@
<ClInclude Include="SDL\src\filesystem\SDL_sysfilesystem.h" /> <ClInclude Include="SDL\src\filesystem\SDL_sysfilesystem.h" />
<ClInclude Include="SDL\src\gpu\SDL_sysgpu.h" /> <ClInclude Include="SDL\src\gpu\SDL_sysgpu.h" />
<ClInclude Include="SDL\src\gpu\vulkan\SDL_gpu_vulkan_vkfuncs.h" /> <ClInclude Include="SDL\src\gpu\vulkan\SDL_gpu_vulkan_vkfuncs.h" />
<ClInclude Include="SDL\src\haptic\hidapi\SDL_hidapihaptic.h" />
<ClInclude Include="SDL\src\haptic\hidapi\SDL_hidapihaptic_c.h" />
<ClInclude Include="SDL\src\io\SDL_asyncio_c.h" /> <ClInclude Include="SDL\src\io\SDL_asyncio_c.h" />
<ClInclude Include="SDL\src\io\SDL_sysasyncio.h" /> <ClInclude Include="SDL\src\io\SDL_sysasyncio.h" />
<ClInclude Include="SDL\src\haptic\SDL_haptic_c.h" /> <ClInclude Include="SDL\src\haptic\SDL_haptic_c.h" />
@ -144,11 +140,7 @@
<ClInclude Include="SDL\src\hidapi\SDL_hidapi_c.h" /> <ClInclude Include="SDL\src\hidapi\SDL_hidapi_c.h" />
<ClInclude Include="SDL\src\joystick\controller_type.h" /> <ClInclude Include="SDL\src\joystick\controller_type.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapijoystick_c.h" /> <ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapijoystick_c.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_flydigi.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_nintendo.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_rumble.h" /> <ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_rumble.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_sinput.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_report_descriptor.h" />
<ClInclude Include="SDL\src\joystick\SDL_gamepad_c.h" /> <ClInclude Include="SDL\src\joystick\SDL_gamepad_c.h" />
<ClInclude Include="SDL\src\joystick\SDL_gamepad_db.h" /> <ClInclude Include="SDL\src\joystick\SDL_gamepad_db.h" />
<ClInclude Include="SDL\src\joystick\SDL_joystick_c.h" /> <ClInclude Include="SDL\src\joystick\SDL_joystick_c.h" />
@ -164,7 +156,6 @@
<ClInclude Include="SDL\src\libm\math_private.h" /> <ClInclude Include="SDL\src\libm\math_private.h" />
<ClInclude Include="SDL\src\locale\SDL_syslocale.h" /> <ClInclude Include="SDL\src\locale\SDL_syslocale.h" />
<ClInclude Include="SDL\src\main\SDL_main_callbacks.h" /> <ClInclude Include="SDL\src\main\SDL_main_callbacks.h" />
<ClInclude Include="SDL\src\misc\SDL_libusb.h" />
<ClInclude Include="SDL\src\misc\SDL_sysurl.h" /> <ClInclude Include="SDL\src\misc\SDL_sysurl.h" />
<ClInclude Include="SDL\src\power\SDL_syspower.h" /> <ClInclude Include="SDL\src\power\SDL_syspower.h" />
<ClInclude Include="SDL\src\render\direct3d11\SDL_shaders_d3d11.h" /> <ClInclude Include="SDL\src\render\direct3d11\SDL_shaders_d3d11.h" />
@ -184,6 +175,7 @@
<ClInclude Include="SDL\src\render\software\SDL_drawline.h" /> <ClInclude Include="SDL\src\render\software\SDL_drawline.h" />
<ClInclude Include="SDL\src\render\software\SDL_drawpoint.h" /> <ClInclude Include="SDL\src\render\software\SDL_drawpoint.h" />
<ClInclude Include="SDL\src\render\software\SDL_render_sw_c.h" /> <ClInclude Include="SDL\src\render\software\SDL_render_sw_c.h" />
<ClInclude Include="SDL\src\render\software\SDL_rotate.h" />
<ClInclude Include="SDL\src\render\software\SDL_triangle.h" /> <ClInclude Include="SDL\src\render\software\SDL_triangle.h" />
<ClInclude Include="SDL\src\render\vulkan\SDL_shaders_vulkan.h" /> <ClInclude Include="SDL\src\render\vulkan\SDL_shaders_vulkan.h" />
<ClInclude Include="SDL\src\SDL_assert_c.h" /> <ClInclude Include="SDL\src\SDL_assert_c.h" />
@ -192,35 +184,20 @@
<ClCompile Include="SDL\src\camera\dummy\SDL_camera_dummy.c" /> <ClCompile Include="SDL\src\camera\dummy\SDL_camera_dummy.c" />
<ClCompile Include="SDL\src\camera\mediafoundation\SDL_camera_mediafoundation.c" /> <ClCompile Include="SDL\src\camera\mediafoundation\SDL_camera_mediafoundation.c" />
<ClCompile Include="SDL\src\camera\SDL_camera.c" /> <ClCompile Include="SDL\src\camera\SDL_camera.c" />
<ClCompile Include="SDL\src\core\windows\pch_cpp.cpp" />
<ClCompile Include="SDL\src\core\windows\SDL_gameinput.cpp" />
<ClCompile Include="SDL\src\dialog\SDL_dialog.c" /> <ClCompile Include="SDL\src\dialog\SDL_dialog.c" />
<ClCompile Include="SDL\src\dialog\SDL_dialog_utils.c" /> <ClCompile Include="SDL\src\dialog\SDL_dialog_utils.c" />
<ClCompile Include="SDL\src\filesystem\SDL_filesystem.c" /> <ClCompile Include="SDL\src\filesystem\SDL_filesystem.c" />
<ClCompile Include="SDL\src\filesystem\windows\SDL_sysfsops.c" /> <ClCompile Include="SDL\src\filesystem\windows\SDL_sysfsops.c" />
<ClCompile Include="SDL\src\haptic\hidapi\SDL_hidapihaptic.c" />
<ClCompile Include="SDL\src\haptic\hidapi\SDL_hidapihaptic_lg4ff.c" />
<ClCompile Include="SDL\src\io\windows\SDL_asyncio_windows_ioring.c" /> <ClCompile Include="SDL\src\io\windows\SDL_asyncio_windows_ioring.c" />
<ClCompile Include="SDL\src\gpu\SDL_gpu.c" /> <ClCompile Include="SDL\src\gpu\SDL_gpu.c" />
<ClCompile Include="SDL\src\gpu\d3d12\SDL_gpu_d3d12.c" /> <ClCompile Include="SDL\src\gpu\d3d12\SDL_gpu_d3d12.c" />
<ClCompile Include="SDL\src\gpu\vulkan\SDL_gpu_vulkan.c" /> <ClCompile Include="SDL\src\gpu\vulkan\SDL_gpu_vulkan.c" />
<ClCompile Include="SDL\src\io\generic\SDL_asyncio_generic.c" /> <ClCompile Include="SDL\src\io\generic\SDL_asyncio_generic.c" />
<ClCompile Include="SDL\src\io\SDL_asyncio.c" /> <ClCompile Include="SDL\src\io\SDL_asyncio.c" />
<ClCompile Include="SDL\src\joystick\gdk\SDL_gameinputjoystick.cpp" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_8bitdo.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_flydigi.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_gip.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_lg4ff.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_sinput.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_steam_triton.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_switch2.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_zuiki.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_report_descriptor.c" />
<ClCompile Include="SDL\src\main\generic\SDL_sysmain_callbacks.c" /> <ClCompile Include="SDL\src\main\generic\SDL_sysmain_callbacks.c" />
<ClCompile Include="SDL\src\main\SDL_main_callbacks.c" /> <ClCompile Include="SDL\src\main\SDL_main_callbacks.c" />
<ClCompile Include="SDL\src\main\SDL_runapp.c" /> <ClCompile Include="SDL\src\main\SDL_runapp.c" />
<ClCompile Include="SDL\src\main\windows\SDL_sysmain_runapp.c" /> <ClCompile Include="SDL\src\main\windows\SDL_sysmain_runapp.c" />
<ClCompile Include="SDL\src\misc\SDL_libusb.c" />
<ClCompile Include="SDL\src\render\vulkan\SDL_render_vulkan.c" /> <ClCompile Include="SDL\src\render\vulkan\SDL_render_vulkan.c" />
<ClCompile Include="SDL\src\render\vulkan\SDL_shaders_vulkan.c" /> <ClCompile Include="SDL\src\render\vulkan\SDL_shaders_vulkan.c" />
<ClCompile Include="SDL\src\SDL_guid.c" /> <ClCompile Include="SDL\src\SDL_guid.c" />
@ -264,7 +241,6 @@
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xcb.h" /> <ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xcb.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib.h" /> <ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib_xrandr.h" /> <ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib_xrandr.h" />
<ClInclude Include="SDL\src\video\miniz.h" />
<ClInclude Include="SDL\src\video\offscreen\SDL_offscreenevents_c.h" /> <ClInclude Include="SDL\src\video\offscreen\SDL_offscreenevents_c.h" />
<ClInclude Include="SDL\src\video\offscreen\SDL_offscreenframebuffer_c.h" /> <ClInclude Include="SDL\src\video\offscreen\SDL_offscreenframebuffer_c.h" />
<ClInclude Include="SDL\src\video\offscreen\SDL_offscreenopengles.h" /> <ClInclude Include="SDL\src\video\offscreen\SDL_offscreenopengles.h" />
@ -280,14 +256,13 @@
<ClInclude Include="SDL\src\video\SDL_pixels_c.h" /> <ClInclude Include="SDL\src\video\SDL_pixels_c.h" />
<ClInclude Include="SDL\src\video\SDL_rect_c.h" /> <ClInclude Include="SDL\src\video\SDL_rect_c.h" />
<ClInclude Include="SDL\src\video\SDL_RLEaccel_c.h" /> <ClInclude Include="SDL\src\video\SDL_RLEaccel_c.h" />
<ClInclude Include="SDL\src\video\SDL_rotate.h" />
<ClInclude Include="SDL\src\video\SDL_stb_c.h" /> <ClInclude Include="SDL\src\video\SDL_stb_c.h" />
<ClInclude Include="SDL\src\video\SDL_surface_c.h" /> <ClInclude Include="SDL\src\video\SDL_surface_c.h" />
<ClInclude Include="SDL\src\video\SDL_sysvideo.h" /> <ClInclude Include="SDL\src\video\SDL_sysvideo.h" />
<ClInclude Include="SDL\src\video\SDL_video_unsupported.h" />
<ClInclude Include="SDL\src\video\SDL_vulkan_internal.h" /> <ClInclude Include="SDL\src\video\SDL_vulkan_internal.h" />
<ClInclude Include="SDL\src\video\SDL_yuv_c.h" /> <ClInclude Include="SDL\src\video\SDL_yuv_c.h" />
<ClInclude Include="SDL\src\video\windows\SDL_msctf.h" /> <ClInclude Include="SDL\src\video\windows\SDL_msctf.h" />
<ClInclude Include="SDL\src\video\windows\SDL_surface_utils.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsclipboard.h" /> <ClInclude Include="SDL\src\video\windows\SDL_windowsclipboard.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsevents.h" /> <ClInclude Include="SDL\src\video\windows\SDL_windowsevents.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsframebuffer.h" /> <ClInclude Include="SDL\src\video\windows\SDL_windowsframebuffer.h" />
@ -328,6 +303,7 @@
<ClCompile Include="SDL\src\audio\SDL_wave.c" /> <ClCompile Include="SDL\src\audio\SDL_wave.c" />
<ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi.c" /> <ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi.c" />
<ClCompile Include="SDL\src\core\SDL_core_unsupported.c" /> <ClCompile Include="SDL\src\core\SDL_core_unsupported.c" />
<ClCompile Include="SDL\src\core\windows\SDL_gameinput.c" />
<ClCompile Include="SDL\src\core\windows\SDL_hid.c" /> <ClCompile Include="SDL\src\core\windows\SDL_hid.c" />
<ClCompile Include="SDL\src\core\windows\SDL_immdevice.c" /> <ClCompile Include="SDL\src\core\windows\SDL_immdevice.c" />
<ClCompile Include="SDL\src\core\windows\SDL_windows.c" /> <ClCompile Include="SDL\src\core\windows\SDL_windows.c" />
@ -357,6 +333,7 @@
<ClCompile Include="SDL\src\hidapi\SDL_hidapi.c" /> <ClCompile Include="SDL\src\hidapi\SDL_hidapi.c" />
<ClCompile Include="SDL\src\joystick\controller_type.c" /> <ClCompile Include="SDL\src\joystick\controller_type.c" />
<ClCompile Include="SDL\src\joystick\dummy\SDL_sysjoystick.c" /> <ClCompile Include="SDL\src\joystick\dummy\SDL_sysjoystick.c" />
<ClCompile Include="SDL\src\joystick\gdk\SDL_gameinputjoystick.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapijoystick.c" /> <ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapijoystick.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_combined.c" /> <ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_combined.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_gamecube.c" /> <ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_gamecube.c" />
@ -416,6 +393,7 @@
<ClCompile Include="SDL\src\render\software\SDL_drawline.c" /> <ClCompile Include="SDL\src\render\software\SDL_drawline.c" />
<ClCompile Include="SDL\src\render\software\SDL_drawpoint.c" /> <ClCompile Include="SDL\src\render\software\SDL_drawpoint.c" />
<ClCompile Include="SDL\src\render\software\SDL_render_sw.c" /> <ClCompile Include="SDL\src\render\software\SDL_render_sw.c" />
<ClCompile Include="SDL\src\render\software\SDL_rotate.c" />
<ClCompile Include="SDL\src\render\software\SDL_triangle.c" /> <ClCompile Include="SDL\src\render\software\SDL_triangle.c" />
<ClCompile Include="SDL\src\SDL.c" /> <ClCompile Include="SDL\src\SDL.c" />
<ClCompile Include="SDL\src\SDL_assert.c" /> <ClCompile Include="SDL\src\SDL_assert.c" />
@ -486,7 +464,6 @@
<ClCompile Include="SDL\src\video\SDL_pixels.c" /> <ClCompile Include="SDL\src\video\SDL_pixels.c" />
<ClCompile Include="SDL\src\video\SDL_rect.c" /> <ClCompile Include="SDL\src\video\SDL_rect.c" />
<ClCompile Include="SDL\src\video\SDL_RLEaccel.c" /> <ClCompile Include="SDL\src\video\SDL_RLEaccel.c" />
<ClCompile Include="SDL\src\video\SDL_rotate.c" />
<ClCompile Include="SDL\src\video\SDL_stb.c" /> <ClCompile Include="SDL\src\video\SDL_stb.c" />
<ClCompile Include="SDL\src\video\SDL_stretch.c" /> <ClCompile Include="SDL\src\video\SDL_stretch.c" />
<ClCompile Include="SDL\src\video\SDL_surface.c" /> <ClCompile Include="SDL\src\video\SDL_surface.c" />
@ -494,11 +471,12 @@
<ClCompile Include="SDL\src\video\SDL_video_unsupported.c" /> <ClCompile Include="SDL\src\video\SDL_video_unsupported.c" />
<ClCompile Include="SDL\src\video\SDL_vulkan_utils.c" /> <ClCompile Include="SDL\src\video\SDL_vulkan_utils.c" />
<ClCompile Include="SDL\src\video\SDL_yuv.c" /> <ClCompile Include="SDL\src\video\SDL_yuv.c" />
<ClCompile Include="SDL\src\video\windows\SDL_surface_utils.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsclipboard.c" /> <ClCompile Include="SDL\src\video\windows\SDL_windowsclipboard.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsevents.c" /> <ClCompile Include="SDL\src\video\windows\SDL_windowsevents.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsframebuffer.c" /> <ClCompile Include="SDL\src\video\windows\SDL_windowsframebuffer.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsgameinput.cpp" />
<ClCompile Include="SDL\src\video\windows\SDL_windowskeyboard.c" /> <ClCompile Include="SDL\src\video\windows\SDL_windowskeyboard.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsgameinput.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmessagebox.c" /> <ClCompile Include="SDL\src\video\windows\SDL_windowsmessagebox.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmodes.c" /> <ClCompile Include="SDL\src\video\windows\SDL_windowsmodes.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmouse.c" /> <ClCompile Include="SDL\src\video\windows\SDL_windowsmouse.c" />

View file

@ -214,9 +214,6 @@
<Filter Include="io\windows"> <Filter Include="io\windows">
<UniqueIdentifier>{000028b2ea36d7190d13777a4dc70000}</UniqueIdentifier> <UniqueIdentifier>{000028b2ea36d7190d13777a4dc70000}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="haptic\hidapi">
<UniqueIdentifier>{695ffc61-5497-4227-b415-15e9bdd5b6bf}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="SDL\include\SDL3\SDL_begin_code.h"> <ClInclude Include="SDL\include\SDL3\SDL_begin_code.h">
@ -702,6 +699,9 @@
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_std_func.h"> <ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_std_func.h">
<Filter>video\yuv2rgb</Filter> <Filter>video\yuv2rgb</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="SDL\src\video\windows\SDL_surface_utils.h">
<Filter>video\windows</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\windows\SDL_windowsclipboard.h"> <ClInclude Include="SDL\src\video\windows\SDL_windowsclipboard.h">
<Filter>video\windows</Filter> <Filter>video\windows</Filter>
</ClInclude> </ClInclude>
@ -831,6 +831,9 @@
<ClInclude Include="SDL\src\render\software\SDL_render_sw_c.h"> <ClInclude Include="SDL\src\render\software\SDL_render_sw_c.h">
<Filter>render\software</Filter> <Filter>render\software</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="SDL\src\render\software\SDL_rotate.h">
<Filter>render\software</Filter>
</ClInclude>
<ClInclude Include="SDL\src\render\software\SDL_triangle.h"> <ClInclude Include="SDL\src\render\software\SDL_triangle.h">
<Filter>render\software</Filter> <Filter>render\software</Filter>
</ClInclude> </ClInclude>
@ -908,6 +911,12 @@
<ClInclude Include="SDL\src\hidapi\SDL_hidapi_c.h" /> <ClInclude Include="SDL\src\hidapi\SDL_hidapi_c.h" />
<ClInclude Include="SDL\src\thread\generic\SDL_sysrwlock_c.h" /> <ClInclude Include="SDL\src\thread\generic\SDL_sysrwlock_c.h" />
<ClInclude Include="SDL\src\thread\generic\SDL_sysrwlock_c.h" /> <ClInclude Include="SDL\src\thread\generic\SDL_sysrwlock_c.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_common.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_internal.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx_func.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_sse.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_std.h" />
<ClInclude Include="SDL\src\render\vulkan\SDL_shaders_vulkan.h"> <ClInclude Include="SDL\src\render\vulkan\SDL_shaders_vulkan.h">
<Filter>render\vulkan</Filter> <Filter>render\vulkan</Filter>
</ClInclude> </ClInclude>
@ -941,60 +950,6 @@
<ClInclude Include="SDL\include\SDL3\SDL_storage.h" /> <ClInclude Include="SDL\include\SDL3\SDL_storage.h" />
<ClInclude Include="SDL\include\SDL3\SDL_time.h" /> <ClInclude Include="SDL\include\SDL3\SDL_time.h" />
<ClInclude Include="SDL\src\events\SDL_categories_c.h" /> <ClInclude Include="SDL\src\events\SDL_categories_c.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_std.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_common.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_internal.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx_func.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_sse.h">
<Filter>video\yuv2rgb</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\miniz.h">
<Filter>video</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\SDL_rotate.h">
<Filter>video</Filter>
</ClInclude>
<ClInclude Include="SDL\src\video\SDL_video_unsupported.h">
<Filter>video</Filter>
</ClInclude>
<ClInclude Include="SDL\src\misc\SDL_libusb.h">
<Filter>misc</Filter>
</ClInclude>
<ClInclude Include="SDL\src\haptic\hidapi\SDL_hidapihaptic.h">
<Filter>haptic\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\haptic\hidapi\SDL_hidapihaptic_c.h">
<Filter>haptic\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\core\SDL_core_unsupported.h">
<Filter>core</Filter>
</ClInclude>
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_flydigi.h">
<Filter>joystick\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_nintendo.h">
<Filter>joystick\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_sinput.h">
<Filter>joystick\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\src\joystick\hidapi\SDL_report_descriptor.h">
<Filter>joystick\hidapi</Filter>
</ClInclude>
<ClInclude Include="SDL\include\SDL3\SDL_dlopennote.h">
<Filter>API Headers</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi.c" /> <ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi.c" />
@ -1082,6 +1037,9 @@
<ClCompile Include="SDL\src\core\SDL_core_unsupported.c"> <ClCompile Include="SDL\src\core\SDL_core_unsupported.c">
<Filter>core</Filter> <Filter>core</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="SDL\src\core\windows\SDL_gameinput.c">
<Filter>core\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\core\windows\SDL_hid.c"> <ClCompile Include="SDL\src\core\windows\SDL_hid.c">
<Filter>core\windows</Filter> <Filter>core\windows</Filter>
</ClCompile> </ClCompile>
@ -1208,6 +1166,9 @@
<ClCompile Include="SDL\src\joystick\dummy\SDL_sysjoystick.c"> <ClCompile Include="SDL\src\joystick\dummy\SDL_sysjoystick.c">
<Filter>joystick\dummy</Filter> <Filter>joystick\dummy</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="SDL\src\joystick\gdk\SDL_gameinputjoystick.c">
<Filter>joystick\gdk</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_combined.c"> <ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_combined.c">
<Filter>joystick\hidapi</Filter> <Filter>joystick\hidapi</Filter>
</ClCompile> </ClCompile>
@ -1367,6 +1328,9 @@
<ClCompile Include="SDL\src\video\dummy\SDL_nullvideo.c"> <ClCompile Include="SDL\src\video\dummy\SDL_nullvideo.c">
<Filter>video\dummy</Filter> <Filter>video\dummy</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="SDL\src\video\windows\SDL_surface_utils.c">
<Filter>video\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\windows\SDL_windowsclipboard.c"> <ClCompile Include="SDL\src\video\windows\SDL_windowsclipboard.c">
<Filter>video\windows</Filter> <Filter>video\windows</Filter>
</ClCompile> </ClCompile>
@ -1379,6 +1343,9 @@
<ClCompile Include="SDL\src\video\windows\SDL_windowskeyboard.c"> <ClCompile Include="SDL\src\video\windows\SDL_windowskeyboard.c">
<Filter>video\windows</Filter> <Filter>video\windows</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="SDL\src\video\windows\SDL_windowsgameinput.c">
<Filter>video\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\windows\SDL_windowsmessagebox.c"> <ClCompile Include="SDL\src\video\windows\SDL_windowsmessagebox.c">
<Filter>video\windows</Filter> <Filter>video\windows</Filter>
</ClCompile> </ClCompile>
@ -1541,6 +1508,9 @@
<ClCompile Include="SDL\src\render\software\SDL_render_sw.c"> <ClCompile Include="SDL\src\render\software\SDL_render_sw.c">
<Filter>render\software</Filter> <Filter>render\software</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="SDL\src\render\software\SDL_rotate.c">
<Filter>render\software</Filter>
</ClCompile>
<ClCompile Include="SDL\src\render\software\SDL_triangle.c"> <ClCompile Include="SDL\src\render\software\SDL_triangle.c">
<Filter>render\software</Filter> <Filter>render\software</Filter>
</ClCompile> </ClCompile>
@ -1565,6 +1535,9 @@
</ClCompile> </ClCompile>
<ClCompile Include="SDL\src\thread\generic\SDL_sysrwlock.c" /> <ClCompile Include="SDL\src\thread\generic\SDL_sysrwlock.c" />
<ClCompile Include="SDL\src\thread\generic\SDL_sysrwlock.c" /> <ClCompile Include="SDL\src\thread\generic\SDL_sysrwlock.c" />
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx.c" />
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_sse.c" />
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_std.c" />
<ClCompile Include="SDL\src\render\vulkan\SDL_render_vulkan.c"> <ClCompile Include="SDL\src\render\vulkan\SDL_render_vulkan.c">
<Filter>render\vulkan</Filter> <Filter>render\vulkan</Filter>
</ClCompile> </ClCompile>
@ -1606,66 +1579,6 @@
<ClCompile Include="SDL\src\storage\generic\SDL_genericstorage.c" /> <ClCompile Include="SDL\src\storage\generic\SDL_genericstorage.c" />
<ClCompile Include="SDL\src\storage\steam\SDL_steamstorage.c" /> <ClCompile Include="SDL\src\storage\steam\SDL_steamstorage.c" />
<ClCompile Include="SDL\src\storage\SDL_storage.c" /> <ClCompile Include="SDL\src\storage\SDL_storage.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsgameinput.cpp">
<Filter>video\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_lsx.c">
<Filter>video\yuv2rgb</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_sse.c">
<Filter>video\yuv2rgb</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb_std.c">
<Filter>video\yuv2rgb</Filter>
</ClCompile>
<ClCompile Include="SDL\src\video\SDL_rotate.c">
<Filter>video</Filter>
</ClCompile>
<ClCompile Include="SDL\src\misc\SDL_libusb.c">
<Filter>misc</Filter>
</ClCompile>
<ClCompile Include="SDL\src\haptic\hidapi\SDL_hidapihaptic.c">
<Filter>haptic\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\haptic\hidapi\SDL_hidapihaptic_lg4ff.c">
<Filter>haptic\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\core\windows\pch_cpp.cpp">
<Filter>core\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\core\windows\SDL_gameinput.cpp">
<Filter>core\windows</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\gdk\SDL_gameinputjoystick.cpp">
<Filter>joystick\gdk</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_8bitdo.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_flydigi.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_gip.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_lg4ff.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_sinput.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_steam_triton.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_switch2.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_zuiki.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
<ClCompile Include="SDL\src\joystick\hidapi\SDL_report_descriptor.c">
<Filter>joystick\hidapi</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="SDL\src\core\windows\version.rc" /> <ResourceCompile Include="SDL\src\core\windows\version.rc" />

View file

@ -1,27 +0,0 @@
add_library(3rdparty_protobuf INTERFACE)
if (USE_SYSTEM_PROTOBUF)
pkg_check_modules(PROTOBUF REQUIRED IMPORTED_TARGET protobuf>=33.0.0)
target_link_libraries(3rdparty_protobuf INTERFACE PkgConfig::PROTOBUF)
set(PROTOBUF_DIR "${CMAKE_SOURCE_DIR}/rpcs3/Emu/NP/generated")
execute_process(COMMAND protoc --cpp_out=${PROTOBUF_DIR} --proto_path=${PROTOBUF_DIR} np2_structs.proto RESULT_VARIABLE PROTOBUF_CMD_ERROR)
if(PROTOBUF_CMD_ERROR AND NOT PROTOBUF_CMD_ERROR EQUAL 0)
message(FATAL_ERROR "protoc failed to regenerate protobuf files.")
endif()
else()
option(protobuf_INSTALL "Install protobuf binaries and files" OFF)
option(protobuf_BUILD_TESTS "Build tests" OFF)
option(protobuf_BUILD_CONFORMANCE "Build conformance tests" OFF)
option(protobuf_BUILD_EXAMPLES "Build examples" OFF)
option(protobuf_BUILD_PROTOBUF_BINARIES "Build protobuf libraries and protoc compiler" ON)
option(protobuf_BUILD_PROTOC_BINARIES "Build libprotoc and protoc compiler" OFF)
option(protobuf_BUILD_LIBPROTOC "Build libprotoc" OFF)
option(protobuf_BUILD_LIBUPB "Build libupb" OFF)
option(protobuf_ALLOW_CCACHE "Adjust build flags to allow for ccache support." ON)
option(protobuf_DISABLE_RTTI "Remove runtime type information in the binaries" OFF)
option(protobuf_FORCE_FETCH_DEPENDENCIES "Force all dependencies to be downloaded from GitHub. Local installations will be ignored." OFF)
option(protobuf_LOCAL_DEPENDENCIES_ONLY "Prevent downloading any dependencies from GitHub. If this option is set, the dependency must be available locally as an installed package." OFF)
add_subdirectory(protobuf EXCLUDE_FROM_ALL)
target_include_directories(3rdparty_protobuf SYSTEM INTERFACE protobuf/src)
target_link_libraries(3rdparty_protobuf INTERFACE libprotobuf)
endif()

@ -1 +0,0 @@
Subproject commit edaa823d8b36a8656d7b2b9241b7d0bfe50af878

View file

@ -1,111 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}</ProjectGuid>
<Keyword>MakeFileProj</Keyword>
</PropertyGroup>
<Import Project="$(SolutionDir)\buildfiles\msvc\common_default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(SolutionDir)\buildfiles\msvc\common_default_macros.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<PropertyGroup>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros">
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
if not exist "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)" mkdir "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
cd "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_STANDARD=20 -DCMAKE_BUILD_TYPE="Release" -DCMAKE_INSTALL_PREFIX="$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build" -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=$(WindowsTargetPlatformVersion) -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -Dprotobuf_INSTALL=ON -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_CONFORMANCE=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -Dprotobuf_BUILD_PROTOBUF_BINARIES=ON -Dprotobuf_BUILD_PROTOC_BINARIES=OFF -Dprotobuf_BUILD_LIBPROTOC=OFF -Dprotobuf_BUILD_LIBUPB=OFF -Dprotobuf_ALLOW_CCACHE=ON -Dprotobuf_FORCE_FETCH_DEPENDENCIES=ON -Dprotobuf_WITH_ZLIB=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=ON "$(SolutionDir)3rdparty\protobuf\protobuf"
</CmakeReleaseCLI>
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
if not exist "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)" mkdir "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
cd "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
cmake -G Ninja -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_STANDARD=20 -DCMAKE_BUILD_TYPE="Debug" -DCMAKE_INSTALL_PREFIX="$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build" -DCMAKE_SYSTEM_VERSION=10.0 -DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=$(WindowsTargetPlatformVersion) -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebugDLL -Dprotobuf_INSTALL=ON -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_CONFORMANCE=OFF -Dprotobuf_BUILD_EXAMPLES=OFF -Dprotobuf_BUILD_PROTOBUF_BINARIES=ON -Dprotobuf_BUILD_PROTOC_BINARIES=OFF -Dprotobuf_BUILD_LIBPROTOC=OFF -Dprotobuf_BUILD_LIBUPB=OFF -Dprotobuf_ALLOW_CCACHE=ON -Dprotobuf_FORCE_FETCH_DEPENDENCIES=ON -Dprotobuf_WITH_ZLIB=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF "$(SolutionDir)3rdparty\protobuf\protobuf"
</CmakeDebugCLI>
<CmakeCleanCLI>
echo Cleaning..
rmdir /s /q "$(SolutionDir)build\lib\$(Configuration)-$(Platform)\protobuf_build"
cd "$(SolutionDir)build\tmp\protobuf_build-$(Configuration)-$(Platform)"
for /F "delims= eol=|" %%f in ('
dir /b ^| findstr /V "[^.]*\build[^.]*\.vcxproj"') do (
echo Deleting .\%%f
if exist %%f\nul (
rmdir .\%%f /s /q
) else (
del .\%%f /q
)
)
</CmakeCleanCLI>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<NMakePreprocessorDefinitions>
</NMakePreprocessorDefinitions>
<OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir>
<IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
<NMakeBuildCommandLine>
$(CmakeDebugCLI)
ninja
ninja install
</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>
$(CmakeCleanCLI)
$(CmakeDebugCLI)
ninja
ninja install
</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>
$(CmakeCleanCLI)
</NMakeCleanCommandLine>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<NMakePreprocessorDefinitions>
</NMakePreprocessorDefinitions>
<OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir>
<IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
<NMakeBuildCommandLine>
$(CmakeReleaseCLI)
ninja
ninja install
</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>
$(CmakeCleanCLI)
$(CmakeReleaseCLI)
ninja
ninja install
</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>
$(CmakeCleanCLI)
</NMakeCleanCommandLine>
</PropertyGroup>
<ItemDefinitionGroup>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

9
3rdparty/qt6.cmake vendored
View file

@ -6,22 +6,15 @@ find_package(Qt6 ${QT_MIN_VER} CONFIG COMPONENTS Widgets Concurrent Multimedia M
if(WIN32) if(WIN32)
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets) target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
else() else()
find_package(Qt6 ${QT_MIN_VER} COMPONENTS DBus Gui)
if(Qt6_VERSION VERSION_GREATER_EQUAL "6.10.0")
set(QT_NO_PRIVATE_MODULE_WARNING ON) set(QT_NO_PRIVATE_MODULE_WARNING ON)
find_package(Qt6 ${QT_MIN_VER} COMPONENTS GuiPrivate) find_package(Qt6 ${QT_MIN_VER} COMPONENTS DBus Gui GuiPrivate)
endif()
if(Qt6DBus_FOUND) if(Qt6DBus_FOUND)
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::DBus Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets) target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::DBus Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
target_compile_definitions(3rdparty_qt6 INTERFACE -DHAVE_QTDBUS) target_compile_definitions(3rdparty_qt6 INTERFACE -DHAVE_QTDBUS)
else() else()
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets) target_link_libraries(3rdparty_qt6 INTERFACE Qt6::Widgets Qt6::Concurrent Qt6::Multimedia Qt6::MultimediaWidgets Qt6::Svg Qt6::SvgWidgets)
endif() endif()
if(Qt6_VERSION VERSION_GREATER_EQUAL "6.10.0")
target_link_libraries(3rdparty_qt6 INTERFACE Qt6::GuiPrivate) target_link_libraries(3rdparty_qt6 INTERFACE Qt6::GuiPrivate)
else()
target_include_directories(3rdparty_qt6 INTERFACE ${Qt6Gui_PRIVATE_INCLUDE_DIRS})
endif()
endif() endif()
if(Qt6Widgets_FOUND) if(Qt6Widgets_FOUND)

@ -1 +1 @@
Subproject commit 51a5d623e3fde1f58829a56ba910f1cb33596222 Subproject commit 456c68f452da09d8ca84b375faa2b1397713eaba

View file

@ -76,7 +76,6 @@
<ClCompile Include="yaml-cpp\src\exceptions.cpp" /> <ClCompile Include="yaml-cpp\src\exceptions.cpp" />
<ClCompile Include="yaml-cpp\src\exp.cpp"> <ClCompile Include="yaml-cpp\src\exp.cpp">
</ClCompile> </ClCompile>
<ClCompile Include="yaml-cpp\src\fptostring.cpp" />
<ClCompile Include="yaml-cpp\src\memory.cpp"> <ClCompile Include="yaml-cpp\src\memory.cpp">
</ClCompile> </ClCompile>
<ClCompile Include="yaml-cpp\src\node.cpp"> <ClCompile Include="yaml-cpp\src\node.cpp">

View file

@ -94,8 +94,5 @@
<ClCompile Include="yaml-cpp\src\depthguard.cpp"> <ClCompile Include="yaml-cpp\src\depthguard.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="yaml-cpp\src\fptostring.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
</Project> </Project>

2
3rdparty/zlib/zlib vendored

@ -1 +1 @@
Subproject commit da607da739fa6047df13e66a2af6b8bec7c2a498 Subproject commit 51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf

View file

@ -20,26 +20,26 @@ The following tools are required to build RPCS3 on Windows 10 or later:
with standalone **CMake** tool. with standalone **CMake** tool.
- [Python 3.6+](https://www.python.org/downloads/) (add to PATH) - [Python 3.6+](https://www.python.org/downloads/) (add to PATH)
- [Qt 6.10.2](https://www.qt.io/download-qt-installer) In case you can't download from the official installer, you can use [Another Qt installer](https://github.com/miurahr/aqtinstall) (In that case you will need to manually add the "qtmultimedia" module when installing Qt) - [Qt 6.10.1](https://www.qt.io/download-qt-installer) In case you can't download from the official installer, you can use [Another Qt installer](https://github.com/miurahr/aqtinstall) (In that case you will need to manually add the "qtmultimedia" module when installing Qt)
- [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (see "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0. - [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (see "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0.
The `sln` solution available only on **Visual Studio** is the preferred building solution. It easily allows to build the **RPCS3** application in `Release` and `Debug` mode. The `sln` solution available only on **Visual Studio** is the preferred building solution. It easily allows to build the **RPCS3** application in `Release` and `Debug` mode.
In order to build **RPCS3** with the `sln` solution (with **Visual Studio**), **Qt** libs need to be detected. To detect the libs: In order to build **RPCS3** with the `sln` solution (with **Visual Studio**), **Qt** libs need to be detected. To detect the libs:
- add and set the `QTDIR` environment variable, e.g. `<QtInstallFolder>\6.10.2\msvc2022_64\` - add and set the `QTDIR` environment variable, e.g. `<QtInstallFolder>\6.10.1\msvc2022_64\`
- or use the [Visual Studio Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2022) - or use the [Visual Studio Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2022)
**NOTE:** If you have issues with the **Visual Studio Qt Plugin**, you may want to uninstall it and install the [Legacy Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.LEGACYQtVisualStudioTools2022) instead. **NOTE:** If you have issues with the **Visual Studio Qt Plugin**, you may want to uninstall it and install the [Legacy Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.LEGACYQtVisualStudioTools2022) instead.
In order to build **RPCS3** with the `CMake` solution (with both **Visual Studio** and standalone **CMake** tool): In order to build **RPCS3** with the `CMake` solution (with both **Visual Studio** and standalone **CMake** tool):
- add and set the `Qt6_ROOT` environment variable to the **Qt** libs path, e.g. `<QtInstallFolder>\6.10.2\msvc2022_64\` - add and set the `Qt6_ROOT` environment variable to the **Qt** libs path, e.g. `<QtInstallFolder>\6.10.1\msvc2022_64\`
### Linux ### Linux
These are the essentials tools to build RPCS3 on Linux. Some of them can be installed through your favorite package manager: These are the essentials tools to build RPCS3 on Linux. Some of them can be installed through your favorite package manager:
- Clang 17+ or GCC 13+ - Clang 17+ or GCC 13+
- [CMake 3.28.0+](https://www.cmake.org/download/) - [CMake 3.28.0+](https://www.cmake.org/download/)
- [Qt 6.10.2](https://www.qt.io/download-qt-installer) - [Qt 6.10.1](https://www.qt.io/download-qt-installer)
- [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0. - [Vulkan SDK 1.3.268.0](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html)) for now future SDKs don't work. You need precisely 1.3.268.0.
- [SDL3](https://github.com/libsdl-org/SDL/releases) (for the FAudio backend) - [SDL3](https://github.com/libsdl-org/SDL/releases) (for the FAudio backend)
@ -51,7 +51,7 @@ These are the essentials tools to build RPCS3 on Linux. Some of them can be inst
#### Debian & Ubuntu #### Debian & Ubuntu
sudo apt-get install build-essential ninja-build libasound2-dev libpulse-dev libopenal-dev libglew-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl3-dev libjack-dev libsndio-dev libcurl4-openssl-dev qt6-base-dev qt6-base-private-dev qt6-multimedia-dev qt6-svg-dev libxkbcommon-dev sudo apt-get install build-essential ninja-build libasound2-dev libpulse-dev libopenal-dev libglew-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl3-3.2 libsdl3-dev libjack-dev libsndio-dev
Ubuntu is usually horrendously out of date, and some packages need to be downloaded by hand. This part is for Qt, GCC, Vulkan, and CMake Ubuntu is usually horrendously out of date, and some packages need to be downloaded by hand. This part is for Qt, GCC, Vulkan, and CMake
@ -95,7 +95,7 @@ sudo apt-get install cmake
#### Fedora #### Fedora
sudo dnf install alsa-lib-devel cmake ninja-build glew glew-devel libatomic libevdev-devel libudev-devel openal-soft-devel qt6-qtbase-devel qt6-qtbase-private-devel vulkan-devel pipewire-jack-audio-connection-kit-devel qt6-qtmultimedia-devel qt6-qtsvg-devel llvm-devel libcurl-devel sudo dnf install alsa-lib-devel cmake ninja-build glew glew-devel libatomic libevdev-devel libudev-devel openal-devel qt6-qtbase-devel qt6-qtbase-private-devel vulkan-devel pipewire-jack-audio-connection-kit-devel qt6-qtmultimedia-devel qt6-qtsvg-devel llvm-devel
#### OpenSUSE #### OpenSUSE
@ -123,7 +123,7 @@ Start **Visual Studio**, click on `Open a project or solution` and select the `r
##### Configuring the Qt Plugin (if used) ##### Configuring the Qt Plugin (if used)
1) go to `Extensions->Qt VS Tools->Qt Versions` 1) go to `Extensions->Qt VS Tools->Qt Versions`
2) add the path to your Qt installation with compiler e.g. `<QtInstallFolder>\6.10.2\msvc2022_64`, version will fill in automatically 2) add the path to your Qt installation with compiler e.g. `<QtInstallFolder>\6.10.1\msvc2022_64`, version will fill in automatically
3) go to `Extensions->Qt VS Tools->Options->Legacy Project Format`. (Only available in the **Legacy Qt Plugin**) 3) go to `Extensions->Qt VS Tools->Options->Legacy Project Format`. (Only available in the **Legacy Qt Plugin**)
4) set `Build: Run pre-build setup` to `true`. (Only available in the **Legacy Qt Plugin**) 4) set `Build: Run pre-build setup` to `true`. (Only available in the **Legacy Qt Plugin**)

View file

@ -13,12 +13,12 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13) if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 11)
message(FATAL_ERROR "RPCS3 requires at least gcc-13.") message(FATAL_ERROR "RPCS3 requires at least gcc-11.")
endif() endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0) if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.0)
message(FATAL_ERROR "RPCS3 requires at least clang-19.0.") message(FATAL_ERROR "RPCS3 requires at least clang-12.0.")
endif() endif()
endif() endif()
@ -37,12 +37,12 @@ option(USE_LIBEVDEV "libevdev-based joystick support" ON)
option(USE_DISCORD_RPC "Discord rich presence integration" OFF) option(USE_DISCORD_RPC "Discord rich presence integration" OFF)
option(USE_VULKAN "Vulkan render backend" ON) option(USE_VULKAN "Vulkan render backend" ON)
option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF) option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF)
option(USE_SDL "Enables SDL input handler" ON) option(USE_SDL "Enables SDL input handler" OFF)
option(USE_SYSTEM_CUBEB "Prefer system cubeb instead of the builtin one" OFF) option(USE_SYSTEM_CUBEB "Prefer system cubeb instead of the builtin one" OFF)
option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON) option(USE_SYSTEM_CURL "Prefer system Curl instead of the prebuild one" ON)
option(USE_SYSTEM_FAUDIO "Prefer system FAudio instead of the builtin one" OFF) option(USE_SYSTEM_FAUDIO "Prefer system FAudio instead of the builtin one" OFF)
option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF) option(USE_SYSTEM_FFMPEG "Prefer system ffmpeg instead of the prebuild one" OFF)
option(USE_SYSTEM_PROTOBUF "Prefer system protobuf instead of the builtin one" OFF) option(USE_SYSTEM_FLATBUFFERS "Prefer system flatbuffers instead of the builtin one" OFF)
option(USE_SYSTEM_GLSLANG "Prefer system glslang instead of the builtin one" OFF) option(USE_SYSTEM_GLSLANG "Prefer system glslang instead of the builtin one" OFF)
option(USE_SYSTEM_HIDAPI "Prefer system hidapi instead of the builtin one" OFF) option(USE_SYSTEM_HIDAPI "Prefer system hidapi instead of the builtin one" OFF)
option(USE_SYSTEM_LIBPNG "Prefer system libpng instead of the builtin one" OFF) option(USE_SYSTEM_LIBPNG "Prefer system libpng instead of the builtin one" OFF)

View file

@ -362,27 +362,6 @@ std::vector<std::string> cfg::try_to_enum_list(decltype(&fmt_class_string<int>::
return result; return result;
} }
size_t cfg::try_to_enum_size(decltype(&fmt_class_string<int>::format) func)
{
size_t result = 0;
for (u64 i = 0;; i++)
{
std::string var;
func(var, i);
std::string hex;
fmt_class_string<u64>::format(hex, i);
if (var == hex)
{
break;
}
result++;
}
return result;
}
void cfg::encode(YAML::Emitter& out, const cfg::_base& rhs) void cfg::encode(YAML::Emitter& out, const cfg::_base& rhs)
{ {
switch (rhs.get_type()) switch (rhs.get_type())
@ -437,7 +416,7 @@ void cfg::encode(YAML::Emitter& out, const cfg::_base& rhs)
out << YAML::BeginMap; out << YAML::BeginMap;
for (const auto& np : static_cast<const log_entry&>(rhs).get_map()) for (const auto& np : static_cast<const log_entry&>(rhs).get_map())
{ {
if (np.second == logs::level::_default) continue; if (np.second == logs::level::notice) continue;
out << YAML::Key << np.first; out << YAML::Key << np.first;
out << YAML::Value << fmt::format("%s", np.second); out << YAML::Value << fmt::format("%s", np.second);
} }

View file

@ -30,9 +30,6 @@ namespace cfg
// Internal hack // Internal hack
std::vector<std::string> try_to_enum_list(decltype(&fmt_class_string<int>::format) func); std::vector<std::string> try_to_enum_list(decltype(&fmt_class_string<int>::format) func);
// Internal hack
size_t try_to_enum_size(decltype(&fmt_class_string<int>::format) func);
// Config tree entry type. // Config tree entry type.
enum class type : unsigned enum class type : unsigned
{ {
@ -315,11 +312,6 @@ namespace cfg
{ {
return try_to_enum_list(&fmt_class_string<T>::format); return try_to_enum_list(&fmt_class_string<T>::format);
} }
size_t size() const
{
return try_to_enum_size(&fmt_class_string<T>::format);
}
}; };
// Signed 32/64-bit integer entry with custom Min/Max range. // Signed 32/64-bit integer entry with custom Min/Max range.

View file

@ -117,7 +117,6 @@ static fs::error to_error(DWORD e)
case ERROR_NEGATIVE_SEEK: return fs::error::inval; case ERROR_NEGATIVE_SEEK: return fs::error::inval;
case ERROR_DIRECTORY: return fs::error::inval; case ERROR_DIRECTORY: return fs::error::inval;
case ERROR_INVALID_NAME: return fs::error::inval; case ERROR_INVALID_NAME: return fs::error::inval;
case ERROR_INVALID_FUNCTION: return fs::error::inval;
case ERROR_SHARING_VIOLATION: return fs::error::acces; case ERROR_SHARING_VIOLATION: return fs::error::acces;
case ERROR_DIR_NOT_EMPTY: return fs::error::notempty; case ERROR_DIR_NOT_EMPTY: return fs::error::notempty;
case ERROR_NOT_READY: return fs::error::noent; case ERROR_NOT_READY: return fs::error::noent;
@ -399,11 +398,12 @@ namespace fs
class windows_file final : public file_base class windows_file final : public file_base
{ {
HANDLE m_handle; HANDLE m_handle;
atomic_t<u64> m_pos {0}; atomic_t<u64> m_pos;
public: public:
windows_file(HANDLE handle) windows_file(HANDLE handle)
: m_handle(handle) : m_handle(handle)
, m_pos(0)
{ {
} }
@ -417,10 +417,10 @@ namespace fs
stat_t get_stat() override stat_t get_stat() override
{ {
FILE_BASIC_INFO basic_info {}; FILE_BASIC_INFO basic_info;
ensure(GetFileInformationByHandleEx(m_handle, FileBasicInfo, &basic_info, sizeof(FILE_BASIC_INFO))); // "file::stat" ensure(GetFileInformationByHandleEx(m_handle, FileBasicInfo, &basic_info, sizeof(FILE_BASIC_INFO))); // "file::stat"
stat_t info {}; stat_t info;
info.is_directory = (basic_info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0; info.is_directory = (basic_info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
info.is_writable = (basic_info.FileAttributes & FILE_ATTRIBUTE_READONLY) == 0; info.is_writable = (basic_info.FileAttributes & FILE_ATTRIBUTE_READONLY) == 0;
info.size = this->size(); info.size = this->size();
@ -441,7 +441,7 @@ namespace fs
bool trunc(u64 length) override bool trunc(u64 length) override
{ {
FILE_END_OF_FILE_INFO _eof {}; FILE_END_OF_FILE_INFO _eof;
_eof.EndOfFile.QuadPart = length; _eof.EndOfFile.QuadPart = length;
if (!SetFileInformationByHandle(m_handle, FileEndOfFileInfo, &_eof, sizeof(_eof))) if (!SetFileInformationByHandle(m_handle, FileEndOfFileInfo, &_eof, sizeof(_eof)))
@ -563,7 +563,6 @@ namespace fs
u64 size() override u64 size() override
{ {
// NOTE: this can fail if we access a mounted empty drive (e.g. after unmounting an iso).
LARGE_INTEGER size; LARGE_INTEGER size;
ensure(GetFileSizeEx(m_handle, &size)); // "file::size" ensure(GetFileSizeEx(m_handle, &size)); // "file::size"
@ -580,12 +579,12 @@ namespace fs
file_id id{"windows_file"}; file_id id{"windows_file"};
id.data.resize(sizeof(FILE_ID_INFO)); id.data.resize(sizeof(FILE_ID_INFO));
FILE_ID_INFO info {}; FILE_ID_INFO info;
if (!GetFileInformationByHandleEx(m_handle, FileIdInfo, &info, sizeof(info))) if (!GetFileInformationByHandleEx(m_handle, FileIdInfo, &info, sizeof(info)))
{ {
// Try GetFileInformationByHandle as a fallback // Try GetFileInformationByHandle as a fallback
BY_HANDLE_FILE_INFORMATION info2{}; BY_HANDLE_FILE_INFORMATION info2;
ensure(GetFileInformationByHandle(m_handle, &info2)); ensure(GetFileInformationByHandle(m_handle, &info2));
info = {}; info = {};
@ -626,7 +625,7 @@ namespace fs
struct ::stat file_info; struct ::stat file_info;
ensure(::fstat(m_fd, &file_info) == 0); // "file::stat" ensure(::fstat(m_fd, &file_info) == 0); // "file::stat"
stat_t info {}; stat_t info;
info.is_directory = S_ISDIR(file_info.st_mode); info.is_directory = S_ISDIR(file_info.st_mode);
info.is_writable = file_info.st_mode & 0200; // HACK: approximation info.is_writable = file_info.st_mode & 0200; // HACK: approximation
info.size = file_info.st_size; info.size = file_info.st_size;
@ -902,22 +901,6 @@ std::string_view fs::get_parent_dir_view(std::string_view path, u32 parent_level
return result; return result;
} }
std::string fs::get_path_if_dir(const std::string& path)
{
if (path.empty() || !fs::is_dir(path))
{
return {};
}
// If delimiters are already present at the end of the string then nothing else to do
if (usz sz = path.find_last_of(delim); sz != umax && (sz + 1) == path.size())
{
return path;
}
return path + '/';
}
bool fs::get_stat(const std::string& path, stat_t& info) bool fs::get_stat(const std::string& path, stat_t& info)
{ {
// Ensure consistent information on failure // Ensure consistent information on failure
@ -1657,45 +1640,6 @@ fs::file::file(const std::string& path, bs_t<open_mode> mode)
return; return;
} }
// Check if the handle is actually valid.
// This can fail on empty mounted drives (e.g. with ERROR_NOT_READY or ERROR_INVALID_FUNCTION).
BY_HANDLE_FILE_INFORMATION info{};
if (!GetFileInformationByHandle(handle, &info))
{
const DWORD last_error = GetLastError();
CloseHandle(handle);
if (last_error == ERROR_INVALID_FUNCTION)
{
g_tls_error = fs::error::isdir;
return;
}
g_tls_error = to_error(last_error);
return;
}
if (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
CloseHandle(handle);
g_tls_error = fs::error::isdir;
return;
}
if (info.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)
{
CloseHandle(handle);
g_tls_error = fs::error::acces;
return;
}
if ((mode & fs::write) && (info.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
{
CloseHandle(handle);
g_tls_error = fs::error::readonly;
return;
}
m_file = std::make_unique<windows_file>(handle); m_file = std::make_unique<windows_file>(handle);
#else #else
int flags = O_CLOEXEC; // Ensures all files are closed on execl for auto updater int flags = O_CLOEXEC; // Ensures all files are closed on execl for auto updater
@ -2635,7 +2579,7 @@ bool fs::pending_file::commit(bool overwrite)
while (file_handle != INVALID_HANDLE_VALUE) while (file_handle != INVALID_HANDLE_VALUE)
{ {
// Get file ID (used to check for hardlinks) // Get file ID (used to check for hardlinks)
BY_HANDLE_FILE_INFORMATION file_info{}; BY_HANDLE_FILE_INFORMATION file_info;
if (!GetFileInformationByHandle(file_handle, &file_info) || file_info.nNumberOfLinks == 1) if (!GetFileInformationByHandle(file_handle, &file_info) || file_info.nNumberOfLinks == 1)
{ {

View file

@ -66,13 +66,13 @@ namespace fs
// File attributes (TODO) // File attributes (TODO)
struct stat_t struct stat_t
{ {
bool is_directory = false; bool is_directory;
bool is_symlink = false; bool is_symlink;
bool is_writable = false; bool is_writable;
u64 size = 0; u64 size;
s64 atime = 0; s64 atime;
s64 mtime = 0; s64 mtime;
s64 ctime = 0; s64 ctime;
using enable_bitcopy = std::true_type; using enable_bitcopy = std::true_type;
@ -155,7 +155,7 @@ namespace fs
// Virtual device // Virtual device
struct device_base struct device_base
{ {
std::string fs_prefix; const std::string fs_prefix;
device_base(); device_base();
virtual ~device_base(); virtual ~device_base();
@ -195,9 +195,6 @@ namespace fs
return std::string{get_parent_dir_view(path, parent_level)}; return std::string{get_parent_dir_view(path, parent_level)};
} }
// Return "path" plus an ending delimiter (if missing) if "path" is an existing directory. Otherwise, an empty string
std::string get_path_if_dir(const std::string& path);
// Get file information // Get file information
bool get_stat(const std::string& path, stat_t& info); bool get_stat(const std::string& path, stat_t& info);
@ -257,8 +254,6 @@ namespace fs
// Open file with specified mode // Open file with specified mode
explicit file(const std::string& path, bs_t<open_mode> mode = ::fs::read); explicit file(const std::string& path, bs_t<open_mode> mode = ::fs::read);
file(std::unique_ptr<file_base>&& ptr) : m_file(std::move(ptr)) {}
static file from_native_handle(native_handle handle); static file from_native_handle(native_handle handle);
// Open memory for read // Open memory for read

View file

@ -14,10 +14,6 @@
#define CAN_OVERCOMMIT #define CAN_OVERCOMMIT
#endif #endif
#if defined(__APPLE__)
#include <mutex>
#endif
LOG_CHANNEL(jit_log, "JIT"); LOG_CHANNEL(jit_log, "JIT");
void jit_announce(uptr func, usz size, std::string_view name) void jit_announce(uptr func, usz size, std::string_view name)

View file

@ -688,30 +688,6 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
mem = std::make_unique<MemoryManager1>(std::move(symbols_cement)); mem = std::make_unique<MemoryManager1>(std::move(symbols_cement));
} }
std::vector<std::string> attributes;
#if defined(ARCH_ARM64)
if (utils::has_sha3())
attributes.push_back("+sha3");
else
attributes.push_back("-sha3");
if (utils::has_dotprod())
attributes.push_back("+dotprod");
else
attributes.push_back("-dotprod");
if (utils::has_sve())
attributes.push_back("+sve");
else
attributes.push_back("-sve");
if (utils::has_sve2())
attributes.push_back("+sve2");
else
attributes.push_back("-sve2");
#endif
{ {
m_engine.reset(llvm::EngineBuilder(std::move(null_mod)) m_engine.reset(llvm::EngineBuilder(std::move(null_mod))
.setErrorStr(&result) .setErrorStr(&result)
@ -723,7 +699,6 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
//.setCodeModel(llvm::CodeModel::Large) //.setCodeModel(llvm::CodeModel::Large)
#endif #endif
.setRelocationModel(llvm::Reloc::Model::PIC_) .setRelocationModel(llvm::Reloc::Model::PIC_)
.setMAttrs(attributes)
.setMCPU(m_cpu) .setMCPU(m_cpu)
.create()); .create());
} }

View file

@ -16,12 +16,12 @@
#include <errno.h> #include <errno.h>
#endif #endif
#ifdef __clang__ #ifdef _MSC_VER
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#elif defined(_MSC_VER)
#pragma warning(push) #pragma warning(push)
#pragma warning(disable : 4996) #pragma warning(disable : 4996)
#elif defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
#else #else
#pragma GCC diagnostic push #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations" #pragma GCC diagnostic ignored "-Wdeprecated-declarations"

View file

@ -13,13 +13,13 @@ std::string wchar_to_utf8(std::wstring_view src);
std::string utf16_to_utf8(std::u16string_view src); std::string utf16_to_utf8(std::u16string_view src);
std::u16string utf8_to_utf16(std::string_view src); std::u16string utf8_to_utf16(std::string_view src);
// Copy null-terminated string from a std::basic_string or a char array to a char array with truncation // Copy null-terminated string from a std::string or a char array to a char array with truncation
template <typename D, typename T> requires requires (D& d, T& t) { std::declval<decltype(&t[0])&>() = &d[0]; } template <typename D, typename T>
inline void strcpy_trunc(D&& dst, const T& src) inline void strcpy_trunc(D&& dst, const T& src)
{ {
const usz count = std::size(src) >= std::size(dst) ? std::max<usz>(std::size(dst), 1) - 1 : std::size(src); const usz count = std::size(src) >= std::size(dst) ? std::max<usz>(std::size(dst), 1) - 1 : std::size(src);
std::copy_n(std::data(src), count, std::data(dst)); std::memcpy(std::data(dst), std::data(src), count);
std::fill_n(std::data(dst) + count, std::size(dst) - count, std::remove_cvref_t<decltype(dst[0])>{}); std::memset(std::data(dst) + count, 0, std::size(dst) - count);
} }
// Convert string to signed integer // Convert string to signed integer
@ -188,7 +188,7 @@ namespace fmt
result.append(separator); result.append(separator);
} }
return result.append(*end); return result.append(source.back());
} }
template <typename T> template <typename T>

View file

@ -8,17 +8,13 @@
#include "Emu/RSX/RSXThread.h" #include "Emu/RSX/RSXThread.h"
#include "Thread.h" #include "Thread.h"
#include "Utilities/JIT.h" #include "Utilities/JIT.h"
#include <thread>
#include <cfenv> #include <cfenv>
#ifdef ARCH_ARM64 #ifdef ARCH_ARM64
#include "Emu/CPU/Backends/AArch64/AArch64Signal.h" #include "Emu/CPU/Backends/AArch64/AArch64Signal.h"
#endif #endif
#ifdef __cpp_lib_stacktrace
#include "rpcs3_version.h"
#include <stacktrace>
#endif
#ifdef _WIN32 #ifdef _WIN32
#include <Windows.h> #include <Windows.h>
#include <Psapi.h> #include <Psapi.h>
@ -2805,16 +2801,6 @@ void thread_base::exec()
[[noreturn]] void thread_ctrl::emergency_exit(std::string_view reason) [[noreturn]] void thread_ctrl::emergency_exit(std::string_view reason)
{ {
// Print stacktrace
#ifdef __cpp_lib_stacktrace
if (rpcs3::is_local_build())
{
std::ostringstream oss;
oss << std::stacktrace::current();
sys_log.notice("StackTrace\n\n%s\n", oss.str());
}
#endif
if (const std::string info = dump_useful_thread_info(); !info.empty()) if (const std::string info = dump_useful_thread_info(); !info.empty())
{ {
sys_log.notice("\n%s", info); sys_log.notice("\n%s", info);

View file

@ -4,7 +4,6 @@
#include "util/atomic.hpp" #include "util/atomic.hpp"
#include "util/shared_ptr.hpp" #include "util/shared_ptr.hpp"
#include <thread>
#include <string> #include <string>
// Hardware core layout // Hardware core layout

View file

@ -329,7 +329,7 @@ bool patch_engine::load(patch_map& patches_map, const std::string& path, std::st
is_valid = false; is_valid = false;
continue; continue;
} }
else if (serial.size() != 9 || !std::all_of(serial.begin(), serial.end(), [](char c) { return std::isalnum(static_cast<unsigned char>(c)); })) else if (serial.size() != 9 || !std::all_of(serial.begin(), serial.end(), [](char c) { return std::isalnum(c); }))
{ {
append_log_message(log_messages, fmt::format("Error: Serial '%s' invalid (patch: %s, key: %s, location: %s, file: %s)", serial, description, main_key, get_yaml_node_location(serial_node), path), &patch_log.error); append_log_message(log_messages, fmt::format("Error: Serial '%s' invalid (patch: %s, key: %s, location: %s, file: %s)", serial, description, main_key, get_yaml_node_location(serial_node), path), &patch_log.error);
is_valid = false; is_valid = false;

View file

@ -821,14 +821,6 @@ struct color4_base
a *= rhs; a *= rhs;
} }
void operator += (const color4_base<T>& rhs)
{
r += rhs.r;
g += rhs.g;
b += rhs.b;
a += rhs.a;
}
constexpr color4_base<T> operator * (const color4_base<T>& rhs) const constexpr color4_base<T> operator * (const color4_base<T>& rhs) const
{ {
return { r * rhs.r, g * rhs.g, b * rhs.b, a * rhs.a }; return { r * rhs.r, g * rhs.g, b * rhs.b, a * rhs.a };

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 497 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 473 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 587 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 KiB

View file

@ -13,7 +13,7 @@
<ItemDefinitionGroup> <ItemDefinitionGroup>
<ClCompile> <ClCompile>
<LanguageStandard Condition = "'$(VisualStudioVersion.Substring(0,2))'&lt;'17'">stdcpplatest</LanguageStandard> <LanguageStandard Condition = "'$(VisualStudioVersion.Substring(0,2))'&lt;'17'">stdcpplatest</LanguageStandard>
<LanguageStandard Condition = "'$(VisualStudioVersion.Substring(0,2))'&gt;='17'">stdcpp23</LanguageStandard> <LanguageStandard Condition = "'$(VisualStudioVersion.Substring(0,2))'&gt;='17'">stdcpp20</LanguageStandard>
<PreprocessorDefinitions>_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING=1;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING=1;_HAS_EXCEPTIONS=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ExceptionHandling>false</ExceptionHandling> <ExceptionHandling>false</ExceptionHandling>
<AdditionalOptions>-d2FH4- %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>-d2FH4- %(AdditionalOptions)</AdditionalOptions>

View file

@ -7,7 +7,7 @@
<OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir> <OutDir>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\</OutDir>
<LibraryPath>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\;$(UniversalCRT_LibraryPath_x64);$(LibraryPath)</LibraryPath> <LibraryPath>$(SolutionDir)build\lib\$(Configuration)-$(Platform)\;$(UniversalCRT_LibraryPath_x64);$(LibraryPath)</LibraryPath>
<IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir> <IntDir>$(SolutionDir)build\tmp\$(ProjectName)-$(Configuration)-$(Platform)\</IntDir>
<GTestPath>$(SolutionDir)packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.8\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets</GTestPath> <GTestPath>$(SolutionDir)packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.1.8.1.7\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-static.targets</GTestPath>
<GTestInstalled Condition="Exists('$(GTestPath)')">true</GTestInstalled> <GTestInstalled Condition="Exists('$(GTestPath)')">true</GTestInstalled>
</PropertyGroup> </PropertyGroup>
<ItemDefinitionGroup> <ItemDefinitionGroup>
@ -131,97 +131,6 @@
LLVMX86Info.lib; LLVMX86Info.lib;
LLVMX86TargetMCA.lib; LLVMX86TargetMCA.lib;
LLVMXRay.lib; LLVMXRay.lib;
absl_log_severity.lib;
absl_raw_logging_internal.lib;
absl_spinlock_wait.lib;
absl_malloc_internal.lib;
absl_base.lib;
absl_throw_delegate.lib;
absl_scoped_set_env.lib;
absl_strerror.lib;
absl_poison.lib;
absl_tracing_internal.lib;
absl_hashtablez_sampler.lib;
absl_raw_hash_set.lib;
absl_crc_cpu_detect.lib;
absl_crc_internal.lib;
absl_crc32c.lib;
absl_crc_cord_state.lib;
absl_stacktrace.lib;
absl_symbolize.lib;
absl_examine_stack.lib;
absl_failure_signal_handler.lib;
absl_debugging_internal.lib;
absl_demangle_internal.lib;
absl_decode_rust_punycode.lib;
absl_demangle_rust.lib;
absl_utf8_for_code_point.lib;
absl_leak_check.lib;
absl_flags_program_name.lib;
absl_flags_config.lib;
absl_flags_marshalling.lib;
absl_flags_commandlineflag_internal.lib;
absl_flags_commandlineflag.lib;
absl_flags_private_handle_accessor.lib;
absl_flags_reflection.lib;
absl_flags_internal.lib;
absl_flags_usage_internal.lib;
absl_flags_usage.lib;
absl_flags_parse.lib;
absl_hash.lib;
absl_city.lib;
absl_low_level_hash.lib;
absl_log_internal_check_op.lib;
absl_log_internal_conditions.lib;
absl_log_internal_format.lib;
absl_log_internal_globals.lib;
absl_log_internal_proto.lib;
absl_log_internal_message.lib;
absl_log_internal_log_sink_set.lib;
absl_log_internal_nullguard.lib;
absl_die_if_null.lib;
absl_log_flags.lib;
absl_log_globals.lib;
absl_log_initialize.lib;
absl_log_sink.lib;
absl_log_internal_structured_proto.lib;
absl_vlog_config_internal.lib;
absl_log_internal_fnmatch.lib;
absl_int128.lib;
absl_exponential_biased.lib;
absl_periodic_sampler.lib;
absl_random_distributions.lib;
absl_random_seed_gen_exception.lib;
absl_random_seed_sequences.lib;
absl_random_internal_seed_material.lib;
absl_random_internal_entropy_pool.lib;
absl_random_internal_platform.lib;
absl_random_internal_randen.lib;
absl_random_internal_randen_slow.lib;
absl_random_internal_randen_hwaes.lib;
absl_random_internal_randen_hwaes_impl.lib;
absl_random_internal_distribution_test_util.lib;
absl_status.lib;
absl_statusor.lib;
absl_string_view.lib;
absl_strings.lib;
absl_strings_internal.lib;
absl_str_format_internal.lib;
absl_cord_internal.lib;
absl_cordz_functions.lib;
absl_cordz_handle.lib;
absl_cordz_info.lib;
absl_cordz_sample_token.lib;
absl_cord.lib;
absl_graphcycles_internal.lib;
absl_kernel_timeout_internal.lib;
absl_synchronization.lib;
absl_time.lib;
absl_civil_time.lib;
absl_time_zone.lib;
libutf8_validity.lib;
libutf8_range.lib;
libprotobuf-lite.lib;
</AdditionalDependencies> </AdditionalDependencies>
<AdditionalLibraryDirectories>$(SolutionDir)3rdparty\ffmpeg\lib\windows\x86_64</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>$(SolutionDir)3rdparty\ffmpeg\lib\windows\x86_64</AdditionalLibraryDirectories>
<StackReserveSize>8388608</StackReserveSize> <StackReserveSize>8388608</StackReserveSize>

View file

@ -9,14 +9,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "emucore", "rpcs3\emucore.vc
{2C902C67-985C-4BE0-94A3-E0FE2EB929A3} = {2C902C67-985C-4BE0-94A3-E0FE2EB929A3} {2C902C67-985C-4BE0-94A3-E0FE2EB929A3} = {2C902C67-985C-4BE0-94A3-E0FE2EB929A3}
{3C67A2FF-4710-402A-BE3E-31B0CB0576DF} = {3C67A2FF-4710-402A-BE3E-31B0CB0576DF} {3C67A2FF-4710-402A-BE3E-31B0CB0576DF} = {3C67A2FF-4710-402A-BE3E-31B0CB0576DF}
{5228F863-E0DD-4DE7-AA7B-5C52B14CD4D0} = {5228F863-E0DD-4DE7-AA7B-5C52B14CD4D0} {5228F863-E0DD-4DE7-AA7B-5C52B14CD4D0} = {5228F863-E0DD-4DE7-AA7B-5C52B14CD4D0}
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D} = {7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}
{8846A9AA-5539-4C91-8301-F54260E1A07A} = {8846A9AA-5539-4C91-8301-F54260E1A07A} {8846A9AA-5539-4C91-8301-F54260E1A07A} = {8846A9AA-5539-4C91-8301-F54260E1A07A}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llvm_build", "3rdparty\llvm\llvm_build.vcxproj", "{8BC303AB-25BE-4276-8E57-73F171B2D672}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llvm_build", "3rdparty\llvm\llvm_build.vcxproj", "{8BC303AB-25BE-4276-8E57-73F171B2D672}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "protobuf_build", "3rdparty\protobuf\protobuf_build.vcxproj", "{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLGSRender", "rpcs3\GLGSRender.vcxproj", "{3384223A-6D97-4799-9862-359F85312892}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GLGSRender", "rpcs3\GLGSRender.vcxproj", "{3384223A-6D97-4799-9862-359F85312892}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "rpcs3.emu", "rpcs3.emu", "{10FBF193-D532-4CCF-B875-4C7091A7F6C2}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "rpcs3.emu", "rpcs3.emu", "{10FBF193-D532-4CCF-B875-4C7091A7F6C2}"
@ -133,10 +130,6 @@ Global
{C4A10229-4712-4BD2-B63E-50D93C67A038}.Release|x64.Build.0 = Release|x64 {C4A10229-4712-4BD2-B63E-50D93C67A038}.Release|x64.Build.0 = Release|x64
{8BC303AB-25BE-4276-8E57-73F171B2D672}.Debug|x64.ActiveCfg = Debug|x64 {8BC303AB-25BE-4276-8E57-73F171B2D672}.Debug|x64.ActiveCfg = Debug|x64
{8BC303AB-25BE-4276-8E57-73F171B2D672}.Release|x64.ActiveCfg = Release|x64 {8BC303AB-25BE-4276-8E57-73F171B2D672}.Release|x64.ActiveCfg = Release|x64
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}.Debug|x64.ActiveCfg = Debug|x64
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}.Debug|x64.Build.0 = Debug|x64
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}.Release|x64.ActiveCfg = Release|x64
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D}.Release|x64.Build.0 = Release|x64
{3384223A-6D97-4799-9862-359F85312892}.Debug|x64.ActiveCfg = Debug|x64 {3384223A-6D97-4799-9862-359F85312892}.Debug|x64.ActiveCfg = Debug|x64
{3384223A-6D97-4799-9862-359F85312892}.Debug|x64.Build.0 = Debug|x64 {3384223A-6D97-4799-9862-359F85312892}.Debug|x64.Build.0 = Debug|x64
{3384223A-6D97-4799-9862-359F85312892}.Release|x64.ActiveCfg = Release|x64 {3384223A-6D97-4799-9862-359F85312892}.Release|x64.ActiveCfg = Release|x64
@ -247,7 +240,6 @@ Global
{AC40FF01-426E-4838-A317-66354CEFAE88} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8} {AC40FF01-426E-4838-A317-66354CEFAE88} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
{C4A10229-4712-4BD2-B63E-50D93C67A038} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2} {C4A10229-4712-4BD2-B63E-50D93C67A038} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
{8BC303AB-25BE-4276-8E57-73F171B2D672} = {B0AC29FD-7B01-4B5E-9C8D-0A081E4C5668} {8BC303AB-25BE-4276-8E57-73F171B2D672} = {B0AC29FD-7B01-4B5E-9C8D-0A081E4C5668}
{7B3B4C5D-6E7F-8A9B-0C1D-2E3F4A5B6C7D} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
{3384223A-6D97-4799-9862-359F85312892} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2} {3384223A-6D97-4799-9862-359F85312892} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
{78CB2F39-B809-4A06-8329-8C0A19119D3D} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2} {78CB2F39-B809-4A06-8329-8C0A19119D3D} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
{EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8} {EB33566E-DA7F-4D28-9077-88C0B7C77E35} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}

View file

@ -8,7 +8,7 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/git-version.cmake)
include(ConfigureCompiler) include(ConfigureCompiler)
include(CheckFunctionExists) include(CheckFunctionExists)
set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD 20)
if(UNIX AND NOT APPLE AND NOT ANDROID) if(UNIX AND NOT APPLE AND NOT ANDROID)
add_compile_definitions(DATADIR="${CMAKE_INSTALL_FULL_DATADIR}/rpcs3") add_compile_definitions(DATADIR="${CMAKE_INSTALL_FULL_DATADIR}/rpcs3")
@ -148,9 +148,8 @@ if (NOT ANDROID)
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/GuiConfigs $<TARGET_FILE_DIR:rpcs3>/GuiConfigs
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/bin/test $<TARGET_FILE_DIR:rpcs3>/test 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 COMMAND "${WINDEPLOYQT_EXECUTABLE}" --no-compiler-runtime --no-opengl-sw --no-patchqt
--no-system-d3d-compiler --no-system-dxc-compiler --no-quick-import --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>" --plugindir "$<IF:$<CXX_COMPILER_ID:MSVC>,$<TARGET_FILE_DIR:rpcs3>/plugins,$<TARGET_FILE_DIR:rpcs3>/share/qt6/plugins>"
--translationdir "$<IF:$<CXX_COMPILER_ID:MSVC>,$<TARGET_FILE_DIR:rpcs3>/translations,$<TARGET_FILE_DIR:rpcs3>/share/qt6/translations>"
--verbose 0 "$<TARGET_FILE:rpcs3>") --verbose 0 "$<TARGET_FILE:rpcs3>")
endif() endif()
@ -195,7 +194,6 @@ if(BUILD_RPCS3_TESTS)
tests/test_address_range.cpp tests/test_address_range.cpp
tests/test_rsx_cfg.cpp tests/test_rsx_cfg.cpp
tests/test_rsx_fp_asm.cpp tests/test_rsx_fp_asm.cpp
tests/test_dmux_pamf.cpp
) )
target_link_libraries(rpcs3_test target_link_libraries(rpcs3_test
@ -203,7 +201,6 @@ if(BUILD_RPCS3_TESTS)
rpcs3_lib rpcs3_lib
rpcs3_emu rpcs3_emu
GTest::gtest GTest::gtest
GTest::gmock
) )
target_include_directories(rpcs3_test target_include_directories(rpcs3_test

View file

@ -125,7 +125,6 @@ target_sources(rpcs3_emu PRIVATE
../Loader/PSF.cpp ../Loader/PSF.cpp
../Loader/PUP.cpp ../Loader/PUP.cpp
../Loader/TAR.cpp ../Loader/TAR.cpp
../Loader/ISO.cpp
../Loader/TROPUSR.cpp ../Loader/TROPUSR.cpp
../Loader/TRP.cpp ../Loader/TRP.cpp
) )
@ -423,7 +422,6 @@ target_sources(rpcs3_emu PRIVATE
Io/TopShotFearmaster.cpp Io/TopShotFearmaster.cpp
Io/Turntable.cpp Io/Turntable.cpp
Io/usb_device.cpp Io/usb_device.cpp
Io/usb_microphone.cpp
Io/usb_vfs.cpp Io/usb_vfs.cpp
Io/usio.cpp Io/usio.cpp
Io/LogitechG27.cpp Io/LogitechG27.cpp
@ -432,7 +430,7 @@ target_sources(rpcs3_emu PRIVATE
# Np # Np
target_sources(rpcs3_emu PRIVATE target_sources(rpcs3_emu PRIVATE
NP/pb_helpers.cpp NP/fb_helpers.cpp
NP/np_cache.cpp NP/np_cache.cpp
NP/np_gui_cache.cpp NP/np_gui_cache.cpp
NP/np_contexts.cpp NP/np_contexts.cpp
@ -452,7 +450,6 @@ target_sources(rpcs3_emu PRIVATE
NP/upnp_config.cpp NP/upnp_config.cpp
NP/upnp_handler.cpp NP/upnp_handler.cpp
NP/ip_address.cpp NP/ip_address.cpp
NP/generated/np2_structs.pb.cc
) )
# Memory # Memory
@ -487,7 +484,6 @@ target_sources(rpcs3_emu PRIVATE
RSX/NV47/HW/nv406e.cpp RSX/NV47/HW/nv406e.cpp
RSX/NV47/HW/nv4097.cpp RSX/NV47/HW/nv4097.cpp
RSX/Overlays/FriendsList/overlay_friends_list_dialog.cpp RSX/Overlays/FriendsList/overlay_friends_list_dialog.cpp
RSX/Overlays/HomeMenu/overlay_home_icons.cpp
RSX/Overlays/HomeMenu/overlay_home_menu.cpp RSX/Overlays/HomeMenu/overlay_home_menu.cpp
RSX/Overlays/HomeMenu/overlay_home_menu_components.cpp RSX/Overlays/HomeMenu/overlay_home_menu_components.cpp
RSX/Overlays/HomeMenu/overlay_home_menu_main_menu.cpp RSX/Overlays/HomeMenu/overlay_home_menu_main_menu.cpp
@ -501,8 +497,6 @@ target_sources(rpcs3_emu PRIVATE
RSX/Overlays/overlays.cpp RSX/Overlays/overlays.cpp
RSX/Overlays/overlay_animated_icon.cpp RSX/Overlays/overlay_animated_icon.cpp
RSX/Overlays/overlay_animation.cpp RSX/Overlays/overlay_animation.cpp
RSX/Overlays/overlay_audio.cpp
RSX/Overlays/overlay_checkbox.cpp
RSX/Overlays/overlay_compile_notification.cpp RSX/Overlays/overlay_compile_notification.cpp
RSX/Overlays/overlay_controls.cpp RSX/Overlays/overlay_controls.cpp
RSX/Overlays/overlay_cursor.cpp RSX/Overlays/overlay_cursor.cpp
@ -519,9 +513,6 @@ target_sources(rpcs3_emu PRIVATE
RSX/Overlays/overlay_perf_metrics.cpp RSX/Overlays/overlay_perf_metrics.cpp
RSX/Overlays/overlay_progress_bar.cpp RSX/Overlays/overlay_progress_bar.cpp
RSX/Overlays/overlay_save_dialog.cpp RSX/Overlays/overlay_save_dialog.cpp
RSX/Overlays/overlay_select.cpp
RSX/Overlays/overlay_slider.cpp
RSX/Overlays/overlay_tabs.cpp
RSX/Overlays/overlay_trophy_notification.cpp RSX/Overlays/overlay_trophy_notification.cpp
RSX/Overlays/overlay_user_list_dialog.cpp RSX/Overlays/overlay_user_list_dialog.cpp
RSX/Overlays/overlay_utils.cpp RSX/Overlays/overlay_utils.cpp
@ -664,7 +655,7 @@ target_link_libraries(rpcs3_emu
3rdparty::soundtouch 3rdparty::soundtouch
3rdparty::miniupnpc 3rdparty::miniupnpc
3rdparty::libevdev 3rdparty::libevdev
3rdparty::protobuf 3rdparty::flatbuffers
3rdparty::pugixml 3rdparty::pugixml
3rdparty::vulkanmemoryallocator 3rdparty::vulkanmemoryallocator
Threads::Threads Threads::Threads

View file

@ -20,19 +20,19 @@ namespace aarch64
sp sp
}; };
[[maybe_unused]] static const char* gpr_names[] = static const char* gpr_names[] =
{ {
"x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9",
"x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", "x19", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", "x19",
"x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28", "x29", "x30" "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28", "x29", "x30"
}; };
[[maybe_unused]] static const char* spr_names[] = static const char* spr_names[] =
{ {
"xzr", "pc", "sp" "xzr", "pc", "sp"
}; };
[[maybe_unused]] static const char* spr_asm_names[] = static const char* spr_asm_names[] =
{ {
"xzr", ".", "sp" "xzr", ".", "sp"
}; };

View file

@ -206,7 +206,11 @@ struct cpu_prof
// Print only 7 hash characters out of 11 (which covers roughly 48 bits) // Print only 7 hash characters out of 11 (which covers roughly 48 bits)
if (type_id == 2) if (type_id == 2)
{ {
fmt::append(results, "\n\t[%s]: %.4f%% (%u)", spu_block_hash{name}, _frac * 100., count); fmt::append(results, "\n\t[%s", fmt::base57(be_t<u64>{name}));
results.resize(results.size() - 4);
// Print chunk address from lowest 16 bits
fmt::append(results, "...chunk-0x%05x]: %.4f%% (%u)", (name & 0xffff) * 4, _frac * 100., count);
} }
else else
{ {
@ -1373,7 +1377,7 @@ std::vector<std::pair<u32, u32>> cpu_thread::dump_callstack_list() const
std::string cpu_thread::dump_misc() const std::string cpu_thread::dump_misc() const
{ {
return fmt::format("%s[0x%x]; State: %s\n", get_class() == thread_class::ppu ? "PPU" : get_class() == thread_class::spu ? "SPU" : "RSX", id, state.load()); return fmt::format("Type: %s; State: %s\n", get_class() == thread_class::ppu ? "PPU" : get_class() == thread_class::spu ? "SPU" : "RSX", state.load());
} }
bool cpu_thread::suspend_work::push(cpu_thread* _this) noexcept bool cpu_thread::suspend_work::push(cpu_thread* _this) noexcept

View file

@ -202,12 +202,13 @@ void cpu_translator::initialize(llvm::LLVMContext& context, llvm::ExecutionEngin
m_use_gfni = true; m_use_gfni = true;
} }
#ifdef ARCH_ARM64 // Aarch64 CPUs
if (utils::has_dotprod()) if (cpu == "cyclone" || cpu.contains("cortex"))
{ {
m_use_dotprod = true; m_use_fma = true;
// AVX does not use intrinsics so far
m_use_avx = true;
} }
#endif
} }
llvm::Value* cpu_translator::bitcast(llvm::Value* val, llvm::Type* type) const llvm::Value* cpu_translator::bitcast(llvm::Value* val, llvm::Type* type) const

View file

@ -3081,25 +3081,13 @@ protected:
// Allow PSHUFB intrinsic // Allow PSHUFB intrinsic
bool m_use_ssse3 = true; bool m_use_ssse3 = true;
#ifdef ARCH_ARM64
// all arm CPUS have FMA
bool m_use_fma = true;
// Should be nonsense to set this for ARM,
// but this flag is only used in SPU verification
// For now, setting this flag will speed up SPU verification
// but I will remove this later with explicit parralelism - Whatcookie
bool m_use_avx = true;
// ARMv8 SDOT/UDOT
bool m_use_dotprod = false;
#else
// Allow FMA // Allow FMA
bool m_use_fma = false; bool m_use_fma = false;
// Allow AVX // Allow AVX
bool m_use_avx = false; bool m_use_avx = false;
#endif
// Allow skylake-x tier AVX-512 // Allow skylake-x tier AVX-512
bool m_use_avx512 = false; bool m_use_avx512 = false;
@ -3650,59 +3638,10 @@ public:
const auto data0 = a.eval(m_ir); const auto data0 = a.eval(m_ir);
const auto data1 = b.eval(m_ir); const auto data1 = b.eval(m_ir);
const auto data2 = c.eval(m_ir); const auto data2 = c.eval(m_ir);
#if LLVM_VERSION_MAJOR >= 22
// LLVM 22+ changed the intrinsic signature from v4i32 to v16i8 for operands 2 and 3
result.value = m_ir->CreateCall(get_intrinsic(llvm::Intrinsic::x86_avx512_vpdpbusd_128),
{data0, m_ir->CreateBitCast(data1, get_type<u8[16]>()), m_ir->CreateBitCast(data2, get_type<u8[16]>())});
#else
result.value = m_ir->CreateCall(get_intrinsic(llvm::Intrinsic::x86_avx512_vpdpbusd_128), {data0, data1, data2}); result.value = m_ir->CreateCall(get_intrinsic(llvm::Intrinsic::x86_avx512_vpdpbusd_128), {data0, data1, data2});
#endif
return result; return result;
} }
#ifdef ARCH_ARM64
template <typename T1, typename T2, typename T3>
value_t<u32[4]> udot(T1 a, T2 b, T3 c)
{
value_t<u32[4]> result;
const auto data0 = a.eval(m_ir);
const auto data1 = b.eval(m_ir);
const auto data2 = c.eval(m_ir);
result.value = m_ir->CreateCall(get_intrinsic<u32[4], u8[16]>(llvm::Intrinsic::aarch64_neon_udot), {data0, data1, data2});
return result;
}
template <typename T1, typename T2, typename T3>
value_t<u32[4]> sdot(T1 a, T2 b, T3 c)
{
value_t<u32[4]> result;
const auto data0 = a.eval(m_ir);
const auto data1 = b.eval(m_ir);
const auto data2 = c.eval(m_ir);
result.value = m_ir->CreateCall(get_intrinsic<u32[4], u8[16]>(llvm::Intrinsic::aarch64_neon_sdot), {data0, data1, data2});
return result;
}
template <typename T1, typename T2>
auto addp(T1 a, T2 b)
{
using T_vector = typename is_llvm_expr<T1>::type;
const auto data1 = a.eval(m_ir);
const auto data2 = b.eval(m_ir);
const auto func = get_intrinsic<T_vector>(llvm::Intrinsic::aarch64_neon_addp);
value_t<T_vector> result;
result.value = m_ir->CreateCall(func, {data1, data2});
return result;
}
#endif
template <typename T1, typename T2> template <typename T1, typename T2>
value_t<u8[16]> vpermb(T1 a, T2 b) value_t<u8[16]> vpermb(T1 a, T2 b)
{ {

View file

@ -919,7 +919,7 @@ error_code cellCameraGetAttribute(s32 dev_num, s32 attrib, vm::ptr<u32> arg1, vm
if (!check_dev_num(dev_num)) if (!check_dev_num(dev_num))
{ {
return { CELL_CAMERA_ERROR_PARAM, "dev_num=%d", dev_num }; return CELL_CAMERA_ERROR_PARAM;
} }
if (g_cfg.io.camera == camera_handler::null) if (g_cfg.io.camera == camera_handler::null)
@ -935,7 +935,7 @@ error_code cellCameraGetAttribute(s32 dev_num, s32 attrib, vm::ptr<u32> arg1, vm
if (!arg1) if (!arg1)
{ {
return { CELL_CAMERA_ERROR_PARAM, "arg1=null" }; return CELL_CAMERA_ERROR_PARAM;
} }
if (error_code error = check_resolution(dev_num)) if (error_code error = check_resolution(dev_num))
@ -952,7 +952,7 @@ error_code cellCameraGetAttribute(s32 dev_num, s32 attrib, vm::ptr<u32> arg1, vm
if (!attr_name) // invalid attributes don't have a name if (!attr_name) // invalid attributes don't have a name
{ {
return { CELL_CAMERA_ERROR_PARAM, "attrib=0x%x", attrib }; return CELL_CAMERA_ERROR_PARAM;
} }
if (arg1) if (arg1)
@ -983,7 +983,7 @@ error_code cellCameraSetAttribute(s32 dev_num, s32 attrib, u32 arg1, u32 arg2)
if (!check_dev_num(dev_num)) if (!check_dev_num(dev_num))
{ {
return { CELL_CAMERA_ERROR_PARAM, "dev_num=%d", dev_num }; return CELL_CAMERA_ERROR_PARAM;
} }
if (g_cfg.io.camera == camera_handler::null) if (g_cfg.io.camera == camera_handler::null)
@ -1004,7 +1004,7 @@ error_code cellCameraSetAttribute(s32 dev_num, s32 attrib, u32 arg1, u32 arg2)
if (!attr_name) // invalid attributes don't have a name if (!attr_name) // invalid attributes don't have a name
{ {
return { CELL_CAMERA_ERROR_PARAM, "attrib=0x%x", attrib }; return CELL_CAMERA_ERROR_PARAM;
} }
g_camera.set_attr(attrib, arg1, arg2); g_camera.set_attr(attrib, arg1, arg2);

View file

@ -169,18 +169,18 @@ public:
static const u32 id_count = 1023; static const u32 id_count = 1023;
SAVESTATE_INIT_POS(34); SAVESTATE_INIT_POS(34);
ElementaryStream(Demuxer* dmux, vm::ptr<void> addr, u32 size, u32 fidMajor, u32 fidMinor, u32 sup1, u32 sup2, vm::ptr<CellDmuxCbEsMsg> cbFunc, vm::ptr<void> cbArg, u32 spec); ElementaryStream(Demuxer* dmux, u32 addr, u32 size, u32 fidMajor, u32 fidMinor, u32 sup1, u32 sup2, vm::ptr<CellDmuxCbEsMsg> cbFunc, u32 cbArg, u32 spec);
Demuxer* dmux; Demuxer* dmux;
const u32 id = idm::last_id(); const u32 id = idm::last_id();
const vm::ptr<void> memAddr; const u32 memAddr;
const u32 memSize; const u32 memSize;
const u32 fidMajor; const u32 fidMajor;
const u32 fidMinor; const u32 fidMinor;
const u32 sup1; const u32 sup1;
const u32 sup2; const u32 sup2;
const vm::ptr<CellDmuxCbEsMsg> cbFunc; const vm::ptr<CellDmuxCbEsMsg> cbFunc;
const vm::ptr<void> cbArg; const u32 cbArg;
const u32 spec; //addr const u32 spec; //addr
std::vector<u8> raw_data; // demultiplexed data stream (managed by demuxer thread) std::vector<u8> raw_data; // demultiplexed data stream (managed by demuxer thread)
@ -208,13 +208,13 @@ public:
const u32 memAddr; const u32 memAddr;
const u32 memSize; const u32 memSize;
const vm::ptr<CellDmuxCbMsg> cbFunc; const vm::ptr<CellDmuxCbMsg> cbFunc;
const vm::ptr<void> cbArg; const u32 cbArg;
volatile bool is_finished = false; volatile bool is_finished = false;
volatile bool is_closed = false; volatile bool is_closed = false;
atomic_t<bool> is_running = false; atomic_t<bool> is_running = false;
atomic_t<bool> is_working = false; atomic_t<bool> is_working = false;
Demuxer(u32 addr, u32 size, vm::ptr<CellDmuxCbMsg> func, vm::ptr<void> arg) Demuxer(u32 addr, u32 size, vm::ptr<CellDmuxCbMsg> func, u32 arg)
: ppu_thread({}, "", 0) : ppu_thread({}, "", 0)
, memAddr(addr) , memAddr(addr)
, memSize(size) , memSize(size)
@ -755,11 +755,11 @@ PesHeader::PesHeader(DemuxerStream& stream)
is_ok = true; is_ok = true;
} }
ElementaryStream::ElementaryStream(Demuxer* dmux, vm::ptr<void> addr, u32 size, u32 fidMajor, u32 fidMinor, u32 sup1, u32 sup2, vm::ptr<CellDmuxCbEsMsg> cbFunc, vm::ptr<void> cbArg, u32 spec) ElementaryStream::ElementaryStream(Demuxer* dmux, u32 addr, u32 size, u32 fidMajor, u32 fidMinor, u32 sup1, u32 sup2, vm::ptr<CellDmuxCbEsMsg> cbFunc, u32 cbArg, u32 spec)
: put(utils::align(addr.addr(), 128)) : put(utils::align(addr, 128))
, dmux(dmux) , dmux(dmux)
, memAddr(vm::ptr<void>::make(utils::align(addr.addr(), 128))) , memAddr(utils::align(addr, 128))
, memSize(size - (addr.addr() - memAddr.addr())) , memSize(size - (addr - memAddr))
, fidMajor(fidMajor) , fidMajor(fidMajor)
, fidMinor(fidMinor) , fidMinor(fidMinor)
, sup1(sup1) , sup1(sup1)
@ -788,9 +788,9 @@ bool ElementaryStream::is_full(u32 space)
{ {
return first - put < space + 128; return first - put < space + 128;
} }
else if (put + space + 128 > memAddr.addr() + memSize) else if (put + space + 128 > memAddr + memSize)
{ {
return first - memAddr.addr() < space + 128; return first - memAddr < space + 128;
} }
else else
{ {
@ -816,35 +816,35 @@ void ElementaryStream::push_au(u32 size, u64 dts, u64 pts, u64 userdata, bool ra
std::lock_guard lock(m_mutex); std::lock_guard lock(m_mutex);
ensure(!is_full(size)); ensure(!is_full(size));
if (put + size + 128 > memAddr.addr() + memSize) if (put + size + 128 > memAddr + memSize)
{ {
put = memAddr.addr(); put = memAddr;
} }
std::memcpy(vm::base(put + 128), raw_data.data(), size); std::memcpy(vm::base(put + 128), raw_data.data(), size);
raw_data.erase(raw_data.begin(), raw_data.begin() + size); raw_data.erase(raw_data.begin(), raw_data.begin() + size);
auto info = vm::ptr<CellDmuxAuInfoEx>::make(put); auto info = vm::ptr<CellDmuxAuInfoEx>::make(put);
info->auAddr.set(put + 128); info->auAddr = put + 128;
info->auSize = size; info->auSize = size;
info->dts.lower = static_cast<u32>(dts); info->dts.lower = static_cast<u32>(dts);
info->dts.upper = static_cast<u32>(dts >> 32); info->dts.upper = static_cast<u32>(dts >> 32);
info->pts.lower = static_cast<u32>(pts); info->pts.lower = static_cast<u32>(pts);
info->pts.upper = static_cast<u32>(pts >> 32); info->pts.upper = static_cast<u32>(pts >> 32);
info->isRap = rap; info->isRap = rap;
info->auMaxSize = 0; info->reserved = 0;
info->userData = userdata; info->userData = userdata;
auto spec = vm::ptr<u32>::make(put + u32{sizeof(CellDmuxAuInfoEx)}); auto spec = vm::ptr<u32>::make(put + u32{sizeof(CellDmuxAuInfoEx)});
*spec = specific; *spec = specific;
auto inf = vm::ptr<CellDmuxAuInfo>::make(put + 64); auto inf = vm::ptr<CellDmuxAuInfo>::make(put + 64);
inf->auAddr.set(put + 128); inf->auAddr = put + 128;
inf->auSize = size; inf->auSize = size;
inf->dts.lower = static_cast<u32>(dts); inf->dtsLower = static_cast<u32>(dts);
inf->dts.upper = static_cast<u32>(dts >> 32); inf->dtsUpper = static_cast<u32>(dts >> 32);
inf->pts.lower = static_cast<u32>(pts); inf->ptsLower = static_cast<u32>(pts);
inf->pts.upper = static_cast<u32>(pts >> 32); inf->ptsUpper = static_cast<u32>(pts >> 32);
inf->auMaxSize = 0; // ????? inf->auMaxSize = 0; // ?????
inf->userData = userdata; inf->userData = userdata;
@ -927,7 +927,7 @@ bool ElementaryStream::peek(u32& out_data, bool no_ex, u32& out_spec, bool updat
void ElementaryStream::reset() void ElementaryStream::reset()
{ {
std::lock_guard lock(m_mutex); std::lock_guard lock(m_mutex);
put = memAddr.addr(); put = memAddr;
entries.clear(); entries.clear();
put_count = 0; put_count = 0;
got_count = 0; got_count = 0;

View file

@ -33,6 +33,118 @@ enum CellDmuxEsMsgType : s32
CELL_DMUX_ES_MSG_TYPE_FLUSH_DONE = 1, CELL_DMUX_ES_MSG_TYPE_FLUSH_DONE = 1,
}; };
enum CellDmuxPamfM2vLevel : s32
{
CELL_DMUX_PAMF_M2V_MP_LL = 0,
CELL_DMUX_PAMF_M2V_MP_ML,
CELL_DMUX_PAMF_M2V_MP_H14,
CELL_DMUX_PAMF_M2V_MP_HL,
};
enum CellDmuxPamfAvcLevel : s32
{
CELL_DMUX_PAMF_AVC_LEVEL_2P1 = 21,
CELL_DMUX_PAMF_AVC_LEVEL_3P0 = 30,
CELL_DMUX_PAMF_AVC_LEVEL_3P1 = 31,
CELL_DMUX_PAMF_AVC_LEVEL_3P2 = 32,
CELL_DMUX_PAMF_AVC_LEVEL_4P1 = 41,
CELL_DMUX_PAMF_AVC_LEVEL_4P2 = 42,
};
struct CellDmuxPamfAuSpecificInfoM2v
{
be_t<u32> reserved1;
};
struct CellDmuxPamfAuSpecificInfoAvc
{
be_t<u32> reserved1;
};
struct CellDmuxPamfAuSpecificInfoLpcm
{
u8 channelAssignmentInfo;
u8 samplingFreqInfo;
u8 bitsPerSample;
};
struct CellDmuxPamfAuSpecificInfoAc3
{
be_t<u32> reserved1;
};
struct CellDmuxPamfAuSpecificInfoAtrac3plus
{
be_t<u32> reserved1;
};
struct CellDmuxPamfAuSpecificInfoUserData
{
be_t<u32> reserved1;
};
struct CellDmuxPamfEsSpecificInfoM2v
{
be_t<u32> profileLevel;
};
struct CellDmuxPamfEsSpecificInfoAvc
{
be_t<u32> level;
};
struct CellDmuxPamfEsSpecificInfoLpcm
{
be_t<u32> samplingFreq;
be_t<u32> numOfChannels;
be_t<u32> bitsPerSample;
};
struct CellDmuxPamfEsSpecificInfoAc3
{
be_t<u32> reserved1;
};
struct CellDmuxPamfEsSpecificInfoAtrac3plus
{
be_t<u32> reserved1;
};
struct CellDmuxPamfEsSpecificInfoUserData
{
be_t<u32> reserved1;
};
enum CellDmuxPamfSamplingFrequency : s32
{
CELL_DMUX_PAMF_FS_48K = 48000,
};
enum CellDmuxPamfBitsPerSample : s32
{
CELL_DMUX_PAMF_BITS_PER_SAMPLE_16 = 16,
CELL_DMUX_PAMF_BITS_PER_SAMPLE_24 = 24,
};
enum CellDmuxPamfLpcmChannelAssignmentInfo : s32
{
CELL_DMUX_PAMF_LPCM_CH_M1 = 1,
CELL_DMUX_PAMF_LPCM_CH_LR = 3,
CELL_DMUX_PAMF_LPCM_CH_LRCLSRSLFE = 9,
CELL_DMUX_PAMF_LPCM_CH_LRCLSCS1CS2RSLFE = 11,
};
enum CellDmuxPamfLpcmFs : s32
{
CELL_DMUX_PAMF_LPCM_FS_48K = 1,
};
enum CellDmuxPamfLpcmBitsPerSamples : s32
{
CELL_DMUX_PAMF_LPCM_BITS_PER_SAMPLE_16 = 1,
CELL_DMUX_PAMF_LPCM_BITS_PER_SAMPLE_24 = 3,
};
struct CellDmuxMsg struct CellDmuxMsg
{ {
be_t<s32> msgType; // CellDmuxMsgType be_t<s32> msgType; // CellDmuxMsgType
@ -51,6 +163,12 @@ struct CellDmuxType
be_t<u32> reserved[2]; be_t<u32> reserved[2];
}; };
struct CellDmuxPamfSpecificInfo
{
be_t<u32> thisSize;
b8 programEndCodeCb;
};
struct CellDmuxType2 struct CellDmuxType2
{ {
be_t<s32> streamType; // CellDmuxStreamType be_t<s32> streamType; // CellDmuxStreamType
@ -59,7 +177,7 @@ struct CellDmuxType2
struct CellDmuxResource struct CellDmuxResource
{ {
vm::bptr<void> memAddr; be_t<u32> memAddr;
be_t<u32> memSize; be_t<u32> memSize;
be_t<u32> ppuThreadPriority; be_t<u32> ppuThreadPriority;
be_t<u32> ppuThreadStackSize; be_t<u32> ppuThreadStackSize;
@ -69,7 +187,7 @@ struct CellDmuxResource
struct CellDmuxResourceEx struct CellDmuxResourceEx
{ {
vm::bptr<void> memAddr; be_t<u32> memAddr;
be_t<u32> memSize; be_t<u32> memSize;
be_t<u32> ppuThreadPriority; be_t<u32> ppuThreadPriority;
be_t<u32> ppuThreadStackSize; be_t<u32> ppuThreadStackSize;
@ -109,16 +227,16 @@ struct CellDmuxResource2
be_t<u32> shit[4]; be_t<u32> shit[4];
}; };
using CellDmuxCbMsg = u32(u32 demuxerHandle, vm::cptr<CellDmuxMsg> demuxerMsg, vm::ptr<void> cbArg); using CellDmuxCbMsg = u32(u32 demuxerHandle, vm::ptr<CellDmuxMsg> demuxerMsg, u32 cbArg);
using CellDmuxCbEsMsg = u32(u32 demuxerHandle, u32 esHandle, vm::cptr<CellDmuxEsMsg> esMsg, vm::ptr<void> cbArg); using CellDmuxCbEsMsg = u32(u32 demuxerHandle, u32 esHandle, vm::ptr<CellDmuxEsMsg> esMsg, u32 cbArg);
// Used for internal callbacks as well // Used for internal callbacks as well
template <typename F> template <typename F>
struct DmuxCb struct DmuxCb
{ {
vm::bptr<F> cbFunc; vm::bptr<F> cbFunc;
vm::bptr<void> cbArg; be_t<u32> cbArg;
}; };
using CellDmuxCb = DmuxCb<CellDmuxCbMsg>; using CellDmuxCb = DmuxCb<CellDmuxCbMsg>;
@ -132,50 +250,42 @@ struct CellDmuxAttr
be_t<u32> demuxerVerLower; be_t<u32> demuxerVerLower;
}; };
struct CellDmuxPamfAttr
{
be_t<u32> maxEnabledEsNum;
be_t<u32> version;
be_t<u32> memSize;
};
struct CellDmuxEsAttr struct CellDmuxEsAttr
{ {
be_t<u32> memSize; be_t<u32> memSize;
}; };
struct CellDmuxPamfEsAttr
{
be_t<u32> auQueueMaxSize;
be_t<u32> memSize;
be_t<u32> specificInfoSize;
};
struct CellDmuxEsResource struct CellDmuxEsResource
{ {
vm::bptr<void> memAddr; be_t<u32> memAddr;
be_t<u32> memSize; be_t<u32> memSize;
}; };
struct CellDmuxAuInfo struct CellDmuxAuInfo
{ {
vm::bptr<void> auAddr; be_t<u32> auAddr;
be_t<u32> auSize; be_t<u32> auSize;
be_t<u32> auMaxSize; be_t<u32> auMaxSize;
be_t<u64> userData;
be_t<u32> ptsUpper;
be_t<u32> ptsLower;
be_t<u32> dtsUpper;
be_t<u32> dtsLower;
};
struct CellDmuxAuInfoEx
{
be_t<u32> auAddr;
be_t<u32> auSize;
be_t<u32> reserved;
b8 isRap; b8 isRap;
be_t<u64> userData; be_t<u64> userData;
CellCodecTimeStamp pts; CellCodecTimeStamp pts;
CellCodecTimeStamp dts; CellCodecTimeStamp dts;
}; };
using CellDmuxAuInfoEx = CellDmuxAuInfo; struct CellDmuxPamfAttr;
struct CellDmuxPamfEsAttr;
struct DmuxAuInfo
{
CellDmuxAuInfo info;
vm::bptr<void> specific_info;
be_t<u32> specific_info_size;
};
using DmuxNotifyDemuxDone = error_code(vm::ptr<void>, u32, vm::ptr<void>); using DmuxNotifyDemuxDone = error_code(vm::ptr<void>, u32, vm::ptr<void>);
using DmuxNotifyFatalErr = error_code(vm::ptr<void>, u32, vm::ptr<void>); using DmuxNotifyFatalErr = error_code(vm::ptr<void>, u32, vm::ptr<void>);
@ -191,7 +301,7 @@ using CellDmuxCoreOpResetStream = error_code(vm::ptr<void>);
using CellDmuxCoreOpCreateThread = error_code(vm::ptr<void>); using CellDmuxCoreOpCreateThread = error_code(vm::ptr<void>);
using CellDmuxCoreOpJoinThread = error_code(vm::ptr<void>); using CellDmuxCoreOpJoinThread = error_code(vm::ptr<void>);
using CellDmuxCoreOpSetStream = error_code(vm::ptr<void>, vm::cptr<void>, u32, b8, u64); using CellDmuxCoreOpSetStream = error_code(vm::ptr<void>, vm::cptr<void>, u32, b8, u64);
using CellDmuxCoreOpReleaseAu = error_code(vm::ptr<void>, vm::ptr<void>, u32); using CellDmuxCoreOpFreeMemory = error_code(vm::ptr<void>, vm::ptr<void>, u32);
using CellDmuxCoreOpQueryEsAttr = error_code(vm::cptr<void>, vm::cptr<void>, vm::ptr<CellDmuxPamfEsAttr>); using CellDmuxCoreOpQueryEsAttr = error_code(vm::cptr<void>, vm::cptr<void>, vm::ptr<CellDmuxPamfEsAttr>);
using CellDmuxCoreOpEnableEs = error_code(vm::ptr<void>, vm::cptr<void>, vm::cptr<CellDmuxEsResource>, vm::cptr<DmuxCb<DmuxEsNotifyAuFound>>, vm::cptr<DmuxCb<DmuxEsNotifyFlushDone>>, vm::cptr<void>, vm::pptr<void>); using CellDmuxCoreOpEnableEs = error_code(vm::ptr<void>, vm::cptr<void>, vm::cptr<CellDmuxEsResource>, vm::cptr<DmuxCb<DmuxEsNotifyAuFound>>, vm::cptr<DmuxCb<DmuxEsNotifyFlushDone>>, vm::cptr<void>, vm::pptr<void>);
using CellDmuxCoreOpDisableEs = u32(vm::ptr<void>); using CellDmuxCoreOpDisableEs = u32(vm::ptr<void>);
@ -208,7 +318,7 @@ struct CellDmuxCoreOps
vm::bptr<CellDmuxCoreOpCreateThread> createThread; vm::bptr<CellDmuxCoreOpCreateThread> createThread;
vm::bptr<CellDmuxCoreOpJoinThread> joinThread; vm::bptr<CellDmuxCoreOpJoinThread> joinThread;
vm::bptr<CellDmuxCoreOpSetStream> setStream; vm::bptr<CellDmuxCoreOpSetStream> setStream;
vm::bptr<CellDmuxCoreOpReleaseAu> releaseAu; vm::bptr<CellDmuxCoreOpFreeMemory> freeMemory;
vm::bptr<CellDmuxCoreOpQueryEsAttr> queryEsAttr; vm::bptr<CellDmuxCoreOpQueryEsAttr> queryEsAttr;
vm::bptr<CellDmuxCoreOpEnableEs> enableEs; vm::bptr<CellDmuxCoreOpEnableEs> enableEs;
vm::bptr<CellDmuxCoreOpDisableEs> disableEs; vm::bptr<CellDmuxCoreOpDisableEs> disableEs;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Some files were not shown because too many files have changed in this diff Show more