diff --git a/.github/workflows/rpcs3.yml b/.github/workflows/rpcs3.yml index 789e923075..d143e46b1a 100644 --- a/.github/workflows/rpcs3.yml +++ b/.github/workflows/rpcs3.yml @@ -1,5 +1,8 @@ name: Build RPCS3 +defaults: + run: + shell: bash on: push: paths-ignore: @@ -33,6 +36,8 @@ jobs: docker_img: "rpcs3/rpcs3-ci-jammy:1.1" build_sh: "/rpcs3/.ci/build-linux.sh" compiler: clang + UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f + UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux" - os: ubuntu-24.04 docker_img: "rpcs3/rpcs3-ci-jammy:1.1" build_sh: "/rpcs3/.ci/build-linux.sh" @@ -92,8 +97,7 @@ jobs: github.event_name != 'pull_request' && github.repository == 'RPCS3/rpcs3' && github.ref == 'refs/heads/master' && - matrix.compiler == 'clang' && - runner.arch == 'ARM64' + matrix.compiler == 'clang' env: RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }} run: | @@ -120,6 +124,8 @@ jobs: CCACHE_INODECACHE: 'true' CCACHE_SLOPPINESS: 'time_macros' DEPS_CACHE_DIR: ./dependency_cache + UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e + UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-win" steps: - name: Checkout repository @@ -128,12 +134,12 @@ jobs: fetch-depth: 0 - name: Setup env + shell: pwsh run: | echo "QTDIR=C:\Qt\${{ env.QT_VER }}\${{ env.QT_VER_MSVC }}_64" >> ${{ github.env }} echo "VULKAN_SDK=C:\VulkanSDK\${{ env.VULKAN_VER }}" >> ${{ github.env }} - name: Get Cache Keys - shell: bash run: .ci/get_keys-windows.sh - name: Setup Build Ccache @@ -151,11 +157,9 @@ jobs: restore-keys: ${{ runner.os }}-${{ env.COMPILER }}- - name: Download and unpack dependencies - shell: bash run: .ci/setup-windows.sh - name: Export Variables - shell: bash run: | while IFS='=' read -r key val; do # Skip lines that are empty or start with '#' @@ -167,24 +171,27 @@ jobs: uses: microsoft/setup-msbuild@main - name: Compile RPCS3 + shell: pwsh run: msbuild rpcs3.sln /p:Configuration=Release /p:Platform=x64 /p:CLToolPath=${{ env.CCACHE_BIN_DIR }} /p:UseMultiToolTask=true /p:CustomAfterMicrosoftCommonTargets="${{ github.workspace }}\buildfiles\msvc\ci_no_debug_info.targets" - name: Pack up build artifacts - shell: bash run: | mkdir -p "${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }}" .ci/deploy-windows.sh - name: Upload artifacts (7z) - #TODO: Upload artifact to release repository - #condition for release - #if: | - # github.event_name != 'pull_request' && - # github.repository == 'RPCS3/rpcs3' && - # github.ref == 'refs/heads/master' uses: actions/upload-artifact@main with: name: RPCS3 for Windows (MSVC) path: ${{ env.BUILD_ARTIFACTSTAGINGDIRECTORY }} compression-level: 0 if-no-files-found: error + + - name: Deploy master build to GitHub Releases + if: | + github.event_name != 'pull_request' && + github.repository == 'RPCS3/rpcs3' && + github.ref == 'refs/heads/master' + env: + RPCS3_TOKEN: ${{ secrets.RPCS3_TOKEN }} + run: .ci/github-upload.sh diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2907949c9f..98e071462b 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -10,131 +10,131 @@ pr: include: - master jobs: -- job: Linux_Build - strategy: - matrix: - Clang: - COMPILER: clang - GCC: - COMPILER: gcc - variables: - CCACHE_DIR: $(Pipeline.Workspace)/ccache - CI_HAS_ARTIFACTS: true - UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f - UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-linux" - DEPLOY_APPIMAGE: true - APPDIR: "/rpcs3/build/appdir" - ARTDIR: "/root/artifacts" - RELEASE_MESSAGE: "/rpcs3/GitHubReleaseMessage.txt" +# - job: Linux_Build +# strategy: +# matrix: +# Clang: +# COMPILER: clang +# GCC: +# COMPILER: gcc +# variables: +# CCACHE_DIR: $(Pipeline.Workspace)/ccache +# CI_HAS_ARTIFACTS: true +# UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f +# UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-linux" +# DEPLOY_APPIMAGE: true +# APPDIR: "/rpcs3/build/appdir" +# ARTDIR: "/root/artifacts" +# RELEASE_MESSAGE: "/rpcs3/GitHubReleaseMessage.txt" - pool: - vmImage: 'ubuntu-latest' +# pool: +# vmImage: 'ubuntu-latest' - steps: - - task: Cache@2 - inputs: - key: ccache | $(Agent.OS) | $(COMPILER) | $(Build.SourceVersion) - restoreKeys: | - ccache | $(Agent.OS) | $(COMPILER) - path: $(CCACHE_DIR) - displayName: ccache +# steps: +# - task: Cache@2 +# inputs: +# key: ccache | $(Agent.OS) | $(COMPILER) | $(Build.SourceVersion) +# restoreKeys: | +# ccache | $(Agent.OS) | $(COMPILER) +# path: $(CCACHE_DIR) +# displayName: ccache - - bash: | - docker pull --quiet rpcs3/rpcs3-ci-jammy:1.1 - docker run \ - -v $(pwd):/rpcs3 \ - --env-file .ci/docker.env \ - -v $CCACHE_DIR:/root/.ccache \ - -v $BUILD_ARTIFACTSTAGINGDIRECTORY:/root/artifacts \ - rpcs3/rpcs3-ci-jammy:1.1 \ - /rpcs3/.ci/build-linux.sh - displayName: Docker setup and build +# - bash: | +# docker pull --quiet rpcs3/rpcs3-ci-jammy:1.1 +# docker run \ +# -v $(pwd):/rpcs3 \ +# --env-file .ci/docker.env \ +# -v $CCACHE_DIR:/root/.ccache \ +# -v $BUILD_ARTIFACTSTAGINGDIRECTORY:/root/artifacts \ +# rpcs3/rpcs3-ci-jammy:1.1 \ +# /rpcs3/.ci/build-linux.sh +# displayName: Docker setup and build - - publish: $(Build.ArtifactStagingDirectory) - condition: succeeded() - artifact: RPCS3 for Linux ($(COMPILER)) +# - publish: $(Build.ArtifactStagingDirectory) +# condition: succeeded() +# artifact: RPCS3 for Linux ($(COMPILER)) - - bash: | - 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) +# - bash: | +# 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}" +# export AVVER="${COMM_TAG}-${COMM_COUNT}" - .ci/github-upload.sh - condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['COMPILER'], 'clang')) - displayName: Push build to GitHub - env: - RPCS3_TOKEN: $(RPCS3-Token) +# .ci/github-upload.sh +# condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['COMPILER'], 'clang')) +# displayName: Push build to GitHub +# env: +# RPCS3_TOKEN: $(RPCS3-Token) -- job: Windows_Build - variables: - COMPILER: msvc - QT_VER_MAIN: '6' - QT_VER: '6.8.2' - QT_VER_MSVC: 'msvc2022' - QT_DATE: '202501260838' - QTDIR: C:\Qt\$(QT_VER)\$(QT_VER_MSVC)_64 - VULKAN_VER: '1.3.268.0' - VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5' - VULKAN_SDK: C:\VulkanSDK\$(VULKAN_VER) - CCACHE_SHA: '6252f081876a9a9f700fae13a5aec5d0d486b28261d7f1f72ac11c7ad9df4da9' - CCACHE_BIN_DIR: 'C:\ccache_bin' - CCACHE_DIR: 'C:\ccache' - CCACHE_INODECACHE: 'true' - CCACHE_SLOPPINESS: 'time_macros' - DEPS_CACHE_DIR: ./dependency_cache - UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e - UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-win" +# - job: Windows_Build +# variables: +# COMPILER: msvc +# QT_VER_MAIN: '6' +# QT_VER: '6.8.2' +# QT_VER_MSVC: 'msvc2022' +# QT_DATE: '202501260838' +# QTDIR: C:\Qt\$(QT_VER)\$(QT_VER_MSVC)_64 +# VULKAN_VER: '1.3.268.0' +# VULKAN_SDK_SHA: '8459ef49bd06b697115ddd3d97c9aec729e849cd775f5be70897718a9b3b9db5' +# VULKAN_SDK: C:\VulkanSDK\$(VULKAN_VER) +# CCACHE_SHA: '6252f081876a9a9f700fae13a5aec5d0d486b28261d7f1f72ac11c7ad9df4da9' +# CCACHE_BIN_DIR: 'C:\ccache_bin' +# CCACHE_DIR: 'C:\ccache' +# CCACHE_INODECACHE: 'true' +# CCACHE_SLOPPINESS: 'time_macros' +# DEPS_CACHE_DIR: ./dependency_cache +# UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e +# UPLOAD_REPO_FULL_NAME: "RPCS3/rpcs3-binaries-win" - pool: - vmImage: "windows-latest" +# pool: +# vmImage: "windows-latest" - steps: - - bash: .ci/get_keys-windows.sh - displayName: Get Cache Keys +# steps: +# - bash: .ci/get_keys-windows.sh +# displayName: Get Cache Keys - - task: Cache@2 - inputs: - key: ccache | $(Agent.OS) | $(COMPILER) | "$(Build.SourceVersion)" - path: $(CCACHE_DIR) - restoreKeys: - ccache | $(Agent.OS) | $(COMPILER) - displayName: Build Ccache +# - task: Cache@2 +# inputs: +# key: ccache | $(Agent.OS) | $(COMPILER) | "$(Build.SourceVersion)" +# path: $(CCACHE_DIR) +# restoreKeys: +# ccache | $(Agent.OS) | $(COMPILER) +# displayName: Build Ccache - - task: Cache@2 - inputs: - key: $(Agent.OS) | $(COMPILER) | "$(QT_VER)" | $(VULKAN_SDK_SHA) | $(CCACHE_SHA) | llvm.lock | glslang.lock - path: $(DEPS_CACHE_DIR) - displayName: Dependencies Cache +# - task: Cache@2 +# inputs: +# key: $(Agent.OS) | $(COMPILER) | "$(QT_VER)" | $(VULKAN_SDK_SHA) | $(CCACHE_SHA) | llvm.lock | glslang.lock +# path: $(DEPS_CACHE_DIR) +# displayName: Dependencies Cache - - bash: .ci/setup-windows.sh - displayName: Download and unpack dependencies +# - bash: .ci/setup-windows.sh +# displayName: Download and unpack dependencies - - bash: .ci/export-azure-vars.sh - displayName: Export Variables +# - bash: .ci/export-azure-vars.sh +# displayName: Export Variables - - task: VSBuild@1 - inputs: - solution: 'rpcs3.sln' - maximumCpuCount: true - platform: x64 - configuration: 'Release' - msbuildArgs: /p:CLToolPath=$(CCACHE_BIN_DIR) /p:UseMultiToolTask=true /p:CustomAfterMicrosoftCommonTargets="$(Build.SourcesDirectory)\buildfiles\msvc\ci_no_debug_info.targets" - displayName: Compile RPCS3 +# - task: VSBuild@1 +# inputs: +# solution: 'rpcs3.sln' +# maximumCpuCount: true +# platform: x64 +# configuration: 'Release' +# msbuildArgs: /p:CLToolPath=$(CCACHE_BIN_DIR) /p:UseMultiToolTask=true /p:CustomAfterMicrosoftCommonTargets="$(Build.SourcesDirectory)\buildfiles\msvc\ci_no_debug_info.targets" +# displayName: Compile RPCS3 - - bash: .ci/deploy-windows.sh - displayName: Pack up build artifacts +# - bash: .ci/deploy-windows.sh +# displayName: Pack up build artifacts - - publish: $(Build.ArtifactStagingDirectory) - condition: succeeded() - artifact: RPCS3 for Windows +# - publish: $(Build.ArtifactStagingDirectory) +# condition: succeeded() +# artifact: RPCS3 for Windows - - bash: .ci/github-upload.sh - condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master')) - displayName: Push build to GitHub - env: - RPCS3_TOKEN: $(RPCS3-Token) +# - bash: .ci/github-upload.sh +# condition: and(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.Repository.Name'], 'RPCS3/rpcs3'), eq(variables['Build.SourceBranch'], 'refs/heads/master')) +# displayName: Push build to GitHub +# env: +# RPCS3_TOKEN: $(RPCS3-Token) - job: Mac_Build_x86_64 timeoutInMinutes: 180 diff --git a/rpcs3/Emu/CMakeLists.txt b/rpcs3/Emu/CMakeLists.txt index a6ae618ea6..562dd29476 100644 --- a/rpcs3/Emu/CMakeLists.txt +++ b/rpcs3/Emu/CMakeLists.txt @@ -597,8 +597,10 @@ if(TARGET 3rdparty_vulkan) RSX/VK/vkutils/descriptors.cpp RSX/VK/vkutils/image.cpp RSX/VK/vkutils/image_helpers.cpp + RSX/VK/vkutils/instance.cpp RSX/VK/vkutils/scratch.cpp RSX/VK/vkutils/sync.cpp + RSX/VK/vkutils/swapchain.cpp RSX/VK/vkutils/memory.cpp RSX/VK/vkutils/device.cpp RSX/VK/vkutils/sampler.cpp diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index 63835db35f..90241016e6 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -4275,9 +4275,30 @@ extern void ppu_precompile(std::vector& dir_queue, std::vector(&Emu.klic[0])); + + if (src) + { + ppu_log.error("Possible missed KLIC for precompilation of '%s', please report to developers.", path); + + // Ignore executables larger than 500KB to prevent a long pause on exitspawn + if (src.size() >= 500000) + { + g_progr_ftotal_bits -= file_size; + + continue; + } + } + } + if (!src) { ppu_log.notice("Failed to decrypt '%s'", path); + + g_progr_ftotal_bits -= file_size; + continue; } @@ -4459,9 +4480,22 @@ extern void ppu_precompile(std::vector& dir_queue, std::vector(&Emu.klic[0])); + + if (src) + { + ppu_log.error("Possible missed KLIC for precompilation of '%s', please report to developers.", path); + } + } + if (!src) { ppu_log.notice("Failed to decrypt '%s'", path); + + g_progr_ftotal_bits -= file_size; + continue; } diff --git a/rpcs3/Emu/Cell/SPUCommonRecompiler.cpp b/rpcs3/Emu/Cell/SPUCommonRecompiler.cpp index 698e5bd178..b466267a14 100644 --- a/rpcs3/Emu/Cell/SPUCommonRecompiler.cpp +++ b/rpcs3/Emu/Cell/SPUCommonRecompiler.cpp @@ -4603,7 +4603,7 @@ spu_program spu_recompiler_base::analyse(const be_t* ls, u32 entry_point, s { bb.terminator = term_type::interrupt_call; } - else if (last_inst != spu_itype::BISL && bb.targets[0] == tia + 4 && op.ra == s_reg_lr) + else if (last_inst != spu_itype::BISL && !bb.targets.empty() && bb.targets[0] == tia + 4 && op.ra == s_reg_lr) { // Conditional return (TODO) bb.terminator = term_type::ret; @@ -4728,9 +4728,11 @@ spu_program spu_recompiler_base::analyse(const be_t* ls, u32 entry_point, s if (is_ok && bb.terminator == term_type::fallthrough) { // Can't just fall out of the function - if (bb.targets.size() != 1 || bb.targets[0] >= flim) + const auto bb_target_value = bb.targets.empty() ? 0 : bb.targets[0]; + + if (bb.targets.size() != 1 || bb_target_value >= flim) { - spu_log.error("Function 0x%05x: [0x%05x] bad fallthrough to 0x%x", f.first, addr, bb.targets[0]); + spu_log.error("Function 0x%05x: [0x%05x] bad fallthrough to 0x%x", f.first, addr, bb_target_value); is_ok = false; } } diff --git a/rpcs3/Emu/RSX/Overlays/FriendsList/overlay_friends_list_dialog.cpp b/rpcs3/Emu/RSX/Overlays/FriendsList/overlay_friends_list_dialog.cpp index 0e6feaa2a7..cbdcb989da 100644 --- a/rpcs3/Emu/RSX/Overlays/FriendsList/overlay_friends_list_dialog.cpp +++ b/rpcs3/Emu/RSX/Overlays/FriendsList/overlay_friends_list_dialog.cpp @@ -121,6 +121,7 @@ namespace rsx m_list->set_pos(20, 85); m_message_box = std::make_shared(20, 85, virtual_width - 2 * 20, 540); + m_message_box->visible = false; m_description = std::make_unique