diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9358f7d0fb..ce113e9ea9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ on: jobs: source: if: ${{ !github.head_ref }} - runs-on: linux + runs-on: source steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/license-header.yml b/.github/workflows/license-header.yml index 2d359a5e76..416f0af881 100644 --- a/.github/workflows/license-header.yml +++ b/.github/workflows/license-header.yml @@ -6,7 +6,7 @@ on: jobs: license-header: - runs-on: linux + runs-on: source steps: - uses: actions/checkout@v4 with: @@ -15,6 +15,7 @@ jobs: - name: Fetch run: git fetch origin + # TODO: fix the script - name: Make script executable run: chmod +x ./.ci/license-header.rb diff --git a/.github/workflows/trigger_release.yml b/.github/workflows/trigger_release.yml index 716be389fc..46ec4d0134 100644 --- a/.github/workflows/trigger_release.yml +++ b/.github/workflows/trigger_release.yml @@ -9,7 +9,7 @@ permissions: jobs: source: - runs-on: linux + runs-on: source steps: - uses: actions/checkout@v4 with: diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index 25f5ae7f99..7dd5d5cec7 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -38,8 +38,8 @@ Внизу праворуч По центру вгорі По центру внизу - Фон оверлею - Додати фон для кращої читабельності + Фон оверлею + Додати фон для кращої читабельності Показати побудову шейдерів Показати поточну кількість шейдерів, які наразі компілюються @@ -158,7 +158,6 @@ Приєднано до кімнати Помилка створення Помилка приєднання - Невірні дані Невірна адреса Невірний порт Вийти @@ -191,8 +190,6 @@ Вигнати Повідомлення... Пароль - Приєднатися - Приєднання... Назва кімнати Назва кімнати має містити від 3 до 20 символів Макс. гравців (16) @@ -360,17 +357,6 @@ Зроблено з \u2764 від команди Eden Збірка - - Ранній доступ - Переваги раннього доступу - Новітні можливості - Ранній доступ до оновлень - Без ручного встановлення - Пріоритетна підтримка - Допомога в презервації ігор - Наша нескінченна вдячність - Ви зацікавлені? - Обмеження швидкості Обмежує швидкість емуляції у відсотках від нормальної. Відсоток обмеження diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index d0cff37f61..3577342e4a 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -952,28 +952,28 @@ void RasterizerVulkan::UpdateDynamicStates() { UpdateDepthBiasEnable(regs); } if (device.IsExtExtendedDynamicState3EnablesSupported()) { - using namespace Tegra::Engines; - - if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE - || device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_PROPRIETARY) { - struct In { - const Maxwell3D::Regs::VertexAttribute::Type d; - In(Maxwell3D::Regs::VertexAttribute::Type n) : d(n) {} - bool operator()(Maxwell3D::Regs::VertexAttribute n) const { - return n.type == d; - } - }; - - auto has_float = std::any_of( - regs.vertex_attrib_format.begin(), regs.vertex_attrib_format.end(), - In(Maxwell3D::Regs::VertexAttribute::Type::Float)); - - if (regs.logic_op.enable) - regs.logic_op.enable = static_cast(!has_float); - - UpdateLogicOpEnable(regs); - } else - UpdateLogicOpEnable(regs); + using namespace Tegra::Engines; + + if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE + || device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_PROPRIETARY) { + struct In { + const Maxwell3D::Regs::VertexAttribute::Type d; + In(Maxwell3D::Regs::VertexAttribute::Type n) : d(n) {} + bool operator()(Maxwell3D::Regs::VertexAttribute n) const { + return n.type == d; + } + }; + + auto has_float = std::any_of( + regs.vertex_attrib_format.begin(), regs.vertex_attrib_format.end(), + In(Maxwell3D::Regs::VertexAttribute::Type::Float)); + + if (regs.logic_op.enable) + regs.logic_op.enable = static_cast(!has_float); + + UpdateLogicOpEnable(regs); + } else + UpdateLogicOpEnable(regs); UpdateDepthClampEnable(regs); } } @@ -1103,15 +1103,23 @@ void RasterizerVulkan::UpdateDepthBias(Tegra::Engines::Maxwell3D::Regs& regs) { regs.zeta.format == Tegra::DepthFormat::X8Z24_UNORM || regs.zeta.format == Tegra::DepthFormat::S8Z24_UNORM || regs.zeta.format == Tegra::DepthFormat::V8Z24_UNORM; - if (is_d24 && !device.SupportsD24DepthBuffer() && program_id == 0x1006A800016E000ULL) { - // Only activate this in Super Smash Brothers Ultimate + + size_t length = sizeof(NEEDS_D24) / sizeof(u64); + bool needs_convert = false; + for (size_t i = 0; i < length; ++i) { + if (NEEDS_D24[i] == program_id) { + needs_convert = true; + break; + } + } + + if (is_d24 && !device.SupportsD24DepthBuffer() && needs_convert) { // the base formulas can be obtained from here: // https://docs.microsoft.com/en-us/windows/win32/direct3d11/d3d10-graphics-programming-guide-output-merger-stage-depth-bias - const double rescale_factor = - static_cast(1ULL << (32 - 24)) / (static_cast(0x1.ep+127)); + const double rescale_factor = static_cast(1ULL << (32 - 24)) + / (static_cast(0x1.ep+127)); units = static_cast(static_cast(units) * rescale_factor); - } - scheduler.Record([constant = units, clamp = regs.depth_bias_clamp, + } scheduler.Record([constant = units, clamp = regs.depth_bias_clamp, factor = regs.slope_scale_depth_bias](vk::CommandBuffer cmdbuf) { cmdbuf.SetDepthBias(constant, clamp, factor); }); diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index 0617b37f05..70e889eb16 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h @@ -139,6 +139,12 @@ public: u32 pixel_stride); private: + static constexpr u64 NEEDS_D24[] = { + 0x01006A800016E000ULL, // SSBU + 0x0100E95004038000ULL, // XC2 + 0x0100A6301214E000ULL, // FE:Engage + }; + static constexpr size_t MAX_TEXTURES = 192; static constexpr size_t MAX_IMAGES = 48; static constexpr size_t MAX_IMAGE_VIEWS = MAX_TEXTURES + MAX_IMAGES;