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;