diff --git a/.github/workflows/rpcsx.yml b/.github/workflows/rpcsx.yml index 4560c28aa..147d9675f 100644 --- a/.github/workflows/rpcsx.yml +++ b/.github/workflows/rpcsx.yml @@ -25,21 +25,23 @@ jobs: run: | sudo apt update sudo apt install -y cmake build-essential libunwind-dev \ - libglfw3-dev libvulkan-dev vulkan-validationlayers-dev \ + libglfw3-dev libvulkan-dev vulkan-validationlayers \ libsox-dev + echo "deb http://azure.archive.ubuntu.com/ubuntu noble main universe" | sudo tee /etc/apt/sources.list + sudo apt update + sudo apt install g++-14 VULKANVER=1.3.259 curl -sSfLo Vulkan-Headers.tar.gz https://github.com/KhronosGroup/Vulkan-Headers/archive/v${VULKANVER}.tar.gz tar -xf Vulkan-Headers*.tar.gz cd Vulkan-Headers*/ - mkdir build && cd build - cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr - make -j$(nproc) - sudo make install + cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++-14 -DCMAKE_INSTALL_PREFIX=/usr + cmake --build build -j$(nproc) + sudo cmake --build build --target install - name: Build RPCSX run: | - cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS_INIT="-march=native" && \ - cmake --build build -j4 + cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=g++-14 -DCMAKE_CXX_FLAGS_INIT="-march=native" && \ + cmake --build build -j$(nproc) - name: Upload RPCSX uses: actions/upload-artifact@v4 diff --git a/.gitmodules b/.gitmodules index 5df4a4625..2fd441384 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,7 +3,7 @@ url = ../../RPCSX/xbyak.git [submodule "3rdparty/SPIRV-Tools"] path = 3rdparty/SPIRV-Tools - url = ../../KhronosGroup/SPIRV-Tools.git + url = ../../RPCSX/SPIRV-Tools.git [submodule "3rdparty/SPIRV-Headers"] path = 3rdparty/SPIRV-Headers url = ../../KhronosGroup/SPIRV-Headers.git diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index a9cdf26e9..fd4447e6a 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -13,28 +13,32 @@ if(NOT SPIRV-Tools-opt_FOUND) endif() if(NOT SPIRV-Cross_FOUND) - set(SPIRV_CROSS_SHARED on) - set(SPIRV_CROSS_STATIC on) - set(SPIRV_CROSS_ENABLE_GLSL on) - set(SPIRV_CROSS_ENABLE_HLSL off) - set(SPIRV_CROSS_ENABLE_MSL off) - set(SPIRV_CROSS_ENABLE_CPP off) - set(SPIRV_CROSS_ENABLE_REFLECT off) - set(SPIRV_CROSS_ENABLE_C_API off) - set(SPIRV_CROSS_ENABLE_UTIL off) - set(SPIRV_CROSS_CLI off) - set(SPIRV_CROSS_ENABLE_TESTS off) - set(SPIRV_CROSS_SKIP_INSTALL on) + option(SPIRV_CROSS_SHARED "" on) + option(SPIRV_CROSS_STATIC "" on) + option(SPIRV_CROSS_ENABLE_GLSL "" on) + option(SPIRV_CROSS_ENABLE_HLSL "" off) + option(SPIRV_CROSS_ENABLE_MSL "" off) + option(SPIRV_CROSS_ENABLE_CPP "" off) + option(SPIRV_CROSS_ENABLE_REFLECT "" off) + option(SPIRV_CROSS_ENABLE_C_API "" off) + option(SPIRV_CROSS_ENABLE_UTIL "" off) + option(SPIRV_CROSS_CLI "" off) + option(SPIRV_CROSS_ENABLE_TESTS "" off) + option(SPIRV_CROSS_SKIP_INSTALL "" on) add_subdirectory(SPIRV-Cross) + + install(TARGETS spirv-cross-c-shared LIBRARY DESTINATION bin) + set_target_properties(spirv-cross-c-shared PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) endif() -if(NOT glslang_FOUND) +# if(NOT glslang_FOUND) add_subdirectory(glslang) if(NOT TARGET glslang::glslang-standalone) add_executable(glslang::glslang-standalone ALIAS glslang-standalone) endif() -endif() +# endif() if(NOT nlohmann_json_FOUND) add_subdirectory(json) endif() + diff --git a/3rdparty/SPIRV-Cross b/3rdparty/SPIRV-Cross index 6a1fb66ee..f84c1fbe3 160000 --- a/3rdparty/SPIRV-Cross +++ b/3rdparty/SPIRV-Cross @@ -1 +1 @@ -Subproject commit 6a1fb66eef1bdca14acf7d0a51a3f883499d79f0 +Subproject commit f84c1fbe3cbb69fa99e9115f658e52df0e95f1bf diff --git a/3rdparty/SPIRV-Tools b/3rdparty/SPIRV-Tools index b21dda0ee..dafc68458 160000 --- a/3rdparty/SPIRV-Tools +++ b/3rdparty/SPIRV-Tools @@ -1 +1 @@ -Subproject commit b21dda0ee7a3ea4e0192a7b2b09db1df1de9d5e7 +Subproject commit dafc684588304bdf3b745457fd517ec8f2edc3c6 diff --git a/rpcsx-gpu2/Registers.cpp b/rpcsx-gpu2/Registers.cpp index 6a834ff36..1a1a0a2bd 100644 --- a/rpcsx-gpu2/Registers.cpp +++ b/rpcsx-gpu2/Registers.cpp @@ -49,4 +49,3 @@ amdgpu::Registers::Context amdgpu::Registers::Context::Default = [] { result.vgtOutDeallocCntl = 0x10; return result; }(); - diff --git a/rpcsx-gpu2/Registers.hpp b/rpcsx-gpu2/Registers.hpp index 65adffe74..b1c13765b 100644 --- a/rpcsx-gpu2/Registers.hpp +++ b/rpcsx-gpu2/Registers.hpp @@ -928,4 +928,4 @@ struct Registers { }; #pragma pack(pop) -} // namespace amdgpu \ No newline at end of file +} // namespace amdgpu diff --git a/rpcsx-gpu2/lib/amdgpu-tiler/include/amdgpu/tiler.hpp b/rpcsx-gpu2/lib/amdgpu-tiler/include/amdgpu/tiler.hpp index d53d6f560..64d0d4668 100644 --- a/rpcsx-gpu2/lib/amdgpu-tiler/include/amdgpu/tiler.hpp +++ b/rpcsx-gpu2/lib/amdgpu-tiler/include/amdgpu/tiler.hpp @@ -5,6 +5,7 @@ #include #include #include +#include namespace amdgpu { inline constexpr uint32_t kMicroTileWidth = 8; diff --git a/rpcsx-gpu2/lib/amdgpu-tiler/src/tiler.cpp b/rpcsx-gpu2/lib/amdgpu-tiler/src/tiler.cpp index 7404340a1..eadae2b84 100644 --- a/rpcsx-gpu2/lib/amdgpu-tiler/src/tiler.cpp +++ b/rpcsx-gpu2/lib/amdgpu-tiler/src/tiler.cpp @@ -1,11 +1,11 @@ #include "gnm/constants.hpp" #include -#include #include +#include using namespace amdgpu; -static constexpr SurfaceInfo +static SurfaceInfo computeTexture1dInfo(ArrayMode arrayMode, gnm::TextureType type, gnm::DataFormat dfmt, std::uint32_t width, std::uint32_t height, std::uint32_t depth, @@ -167,7 +167,7 @@ computeTexture1dInfo(ArrayMode arrayMode, gnm::TextureType type, return result; } -static constexpr SurfaceInfo computeTextureLinearInfo( +static SurfaceInfo computeTextureLinearInfo( ArrayMode arrayMode, gnm::TextureType type, gnm::DataFormat dfmt, std::uint32_t width, std::uint32_t height, std::uint32_t depth, std::uint32_t pitch, int baseArrayLayer, int arrayCount, int baseMipLevel, diff --git a/rpcsx-gpu2/lib/gnm/include/gnm/gnm.hpp b/rpcsx-gpu2/lib/gnm/include/gnm/gnm.hpp index ce4522ad7..2593e6a1c 100644 --- a/rpcsx-gpu2/lib/gnm/include/gnm/gnm.hpp +++ b/rpcsx-gpu2/lib/gnm/include/gnm/gnm.hpp @@ -25,7 +25,7 @@ constexpr int getTexelsPerElement(gnm::DataFormat dfmt) { } } -inline int getBitsPerElement(DataFormat dfmt) { +constexpr int getBitsPerElement(DataFormat dfmt) { switch (dfmt) { case kDataFormatInvalid: return 0;