From 4b545e8f61283d700090410937da28c49730fb9c Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 7 Apr 2026 02:30:42 -0400 Subject: [PATCH 1/7] [vulkan] Rework ProvokingVertex handling --- dist/languages/ar.ts | 12 --------- dist/languages/ca.ts | 11 -------- dist/languages/cs.ts | 11 -------- dist/languages/da.ts | 11 -------- dist/languages/de.ts | 11 -------- dist/languages/el.ts | 11 -------- dist/languages/es.ts | 12 --------- dist/languages/fi.ts | 11 -------- dist/languages/fr.ts | 12 --------- dist/languages/hu.ts | 11 -------- dist/languages/id.ts | 11 -------- dist/languages/it.ts | 12 --------- dist/languages/ja_JP.ts | 11 -------- dist/languages/ko_KR.ts | 11 -------- dist/languages/nb.ts | 11 -------- dist/languages/nl.ts | 11 -------- dist/languages/pl.ts | 12 --------- dist/languages/pt_BR.ts | 11 -------- dist/languages/pt_PT.ts | 11 -------- dist/languages/ru_RU.ts | 12 --------- dist/languages/sv.ts | 12 --------- dist/languages/tr_TR.ts | 11 -------- dist/languages/uk.ts | 12 --------- dist/languages/vi.ts | 11 -------- dist/languages/vi_VN.ts | 11 -------- dist/languages/zh_CN.ts | 11 -------- dist/languages/zh_TW.ts | 11 -------- .../features/settings/model/BooleanSetting.kt | 1 - .../settings/model/view/SettingsItem.kt | 7 ----- .../settings/ui/SettingsFragmentPresenter.kt | 1 - .../app/src/main/res/values-ar/strings.xml | 2 -- .../app/src/main/res/values-ckb/strings.xml | 2 -- .../app/src/main/res/values-cs/strings.xml | 2 -- .../app/src/main/res/values-de/strings.xml | 2 -- .../app/src/main/res/values-es/strings.xml | 2 -- .../app/src/main/res/values-fa/strings.xml | 2 -- .../app/src/main/res/values-fr/strings.xml | 2 -- .../app/src/main/res/values-he/strings.xml | 2 -- .../app/src/main/res/values-hu/strings.xml | 2 -- .../app/src/main/res/values-id/strings.xml | 2 -- .../app/src/main/res/values-it/strings.xml | 2 -- .../app/src/main/res/values-ja/strings.xml | 2 -- .../app/src/main/res/values-ko/strings.xml | 2 -- .../app/src/main/res/values-nb/strings.xml | 2 -- .../app/src/main/res/values-pl/strings.xml | 2 -- .../src/main/res/values-pt-rBR/strings.xml | 2 -- .../src/main/res/values-pt-rPT/strings.xml | 2 -- .../app/src/main/res/values-ru/strings.xml | 2 -- .../app/src/main/res/values-sr/strings.xml | 2 -- .../app/src/main/res/values-uk/strings.xml | 2 -- .../app/src/main/res/values-vi/strings.xml | 2 -- .../src/main/res/values-zh-rCN/strings.xml | 2 -- .../src/main/res/values-zh-rTW/strings.xml | 2 -- .../app/src/main/res/values/strings.xml | 2 -- src/common/settings.h | 1 - src/qt_common/config/shared_translation.cpp | 4 --- .../renderer_vulkan/fixed_pipeline_state.cpp | 24 ++++++++++++++++- .../renderer_vulkan/fixed_pipeline_state.h | 4 +++ .../renderer_vulkan/vk_graphics_pipeline.cpp | 15 ++++++++--- .../renderer_vulkan/vk_pipeline_cache.cpp | 8 ++++++ .../vulkan_common/vulkan_device.cpp | 27 +------------------ src/video_core/vulkan_common/vulkan_device.h | 16 +++++++++++ 62 files changed, 63 insertions(+), 398 deletions(-) diff --git a/dist/languages/ar.ts b/dist/languages/ar.ts index cdc169e6dc..84837d724f 100644 --- a/dist/languages/ar.ts +++ b/dist/languages/ar.ts @@ -1146,18 +1146,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. يتيح ميزة الحالة الديناميكية لإدخال الرأس لتحسين الجودة والأداء. - - - Provoking Vertex - استفزاز قمة الرأس - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - يُحسّن الإضاءة ومعالجة الرؤوس في بعض الألعاب. -تدعم هذه الإضافة أجهزة Vulkan 1.0+‎ فقط. - Descriptor Indexing diff --git a/dist/languages/ca.ts b/dist/languages/ca.ts index ed5fca660a..678889f164 100644 --- a/dist/languages/ca.ts +++ b/dist/languages/ca.ts @@ -1094,17 +1094,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/cs.ts b/dist/languages/cs.ts index 0d748e0215..f6baf19268 100644 --- a/dist/languages/cs.ts +++ b/dist/languages/cs.ts @@ -1094,17 +1094,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/da.ts b/dist/languages/da.ts index 2d59847c91..91bd8137bd 100644 --- a/dist/languages/da.ts +++ b/dist/languages/da.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/de.ts b/dist/languages/de.ts index 179eef9c42..7821afe05a 100644 --- a/dist/languages/de.ts +++ b/dist/languages/de.ts @@ -1104,17 +1104,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/el.ts b/dist/languages/el.ts index 2d27894e98..cad37e6915 100644 --- a/dist/languages/el.ts +++ b/dist/languages/el.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/es.ts b/dist/languages/es.ts index 3f1abaebc5..f0604b087f 100644 --- a/dist/languages/es.ts +++ b/dist/languages/es.ts @@ -1151,18 +1151,6 @@ Números más altos permiten úsar más funciones y pueden aumentar el rendimien Enables vertex input dynamic state feature for better quality and performance. Activa la función de estado dinámico de entrada de vértices para una mejor calidad y rendimiento. - - - Provoking Vertex - Vértice provocante - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Mejora la iluminación y la gestión de vértices en algunos juegos. -Solo los dispositivos Vulkan 1.0+ son compatibles con esta extensión. - Descriptor Indexing diff --git a/dist/languages/fi.ts b/dist/languages/fi.ts index bd54a466cf..6a688b5ced 100644 --- a/dist/languages/fi.ts +++ b/dist/languages/fi.ts @@ -1094,17 +1094,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts index 5d2fa2c542..b7a3196d79 100644 --- a/dist/languages/fr.ts +++ b/dist/languages/fr.ts @@ -1142,18 +1142,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - Vertex provoquant - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Améliore l’éclairage et la gestion des points 3D dans certains jeux. -Seuls les appareils compatibles avec Vulkan 1.0+ prennent en charge cette extension. - Descriptor Indexing diff --git a/dist/languages/hu.ts b/dist/languages/hu.ts index 3d969f7098..953f4c6ee3 100644 --- a/dist/languages/hu.ts +++ b/dist/languages/hu.ts @@ -1102,17 +1102,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/id.ts b/dist/languages/id.ts index 6b2d6ad1b0..2873e64ef8 100644 --- a/dist/languages/id.ts +++ b/dist/languages/id.ts @@ -1117,17 +1117,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/it.ts b/dist/languages/it.ts index fa4190b0b1..74af128d08 100644 --- a/dist/languages/it.ts +++ b/dist/languages/it.ts @@ -1146,18 +1146,6 @@ Gli stati più alti consentono più funzionalità e possono migliorare le presta Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - Provoking Vertex - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Migliora l'illuminazione e la gestione dei vertici in alcuni giochi. -Solo i dispositivi con Vulkan 1.0+ supportano quest'estensione. - Descriptor Indexing diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts index 24085cf94b..f13c44baee 100644 --- a/dist/languages/ja_JP.ts +++ b/dist/languages/ja_JP.ts @@ -1099,17 +1099,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts index e2b34d8f4f..ed5f42ca0f 100644 --- a/dist/languages/ko_KR.ts +++ b/dist/languages/ko_KR.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts index ba3acb8e80..9f4c650464 100644 --- a/dist/languages/nb.ts +++ b/dist/languages/nb.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts index ce53ddbf75..1ad246f948 100644 --- a/dist/languages/nl.ts +++ b/dist/languages/nl.ts @@ -1105,17 +1105,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/pl.ts b/dist/languages/pl.ts index d151bdebc4..3546a478b9 100644 --- a/dist/languages/pl.ts +++ b/dist/languages/pl.ts @@ -1145,18 +1145,6 @@ Wyższe poziomy pozwalają na użycie większej liczby funkcji i mogą zwiększy Enables vertex input dynamic state feature for better quality and performance. Włącza funkcję dynamicznego stanu wejścia wierzchołków, poprawiając jakość i wydajność. - - - Provoking Vertex - Wierzchołek prowokujący - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Poprawia oświetlenie i obsługę wierzchołków w niektórych grach. -To rozszerzenie jest obsługiwane tylko na urządzeniach z Vulkanem 1.0+. - Descriptor Indexing diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts index fc6e270ac4..a4e3366123 100644 --- a/dist/languages/pt_BR.ts +++ b/dist/languages/pt_BR.ts @@ -1129,17 +1129,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/pt_PT.ts b/dist/languages/pt_PT.ts index df0c779a3e..f7bce87a41 100644 --- a/dist/languages/pt_PT.ts +++ b/dist/languages/pt_PT.ts @@ -1104,17 +1104,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts index 8bcb15bdbb..bda0794261 100644 --- a/dist/languages/ru_RU.ts +++ b/dist/languages/ru_RU.ts @@ -1151,18 +1151,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. Включает функцию динамического состояния вершинного ввода для повышения качества и производительности. - - - Provoking Vertex - Определяющая вершина - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Улучшает освещение и обработку вершин в определенных играх. - Поддерживаются устройства только с Vulkan 1.0+. - Descriptor Indexing diff --git a/dist/languages/sv.ts b/dist/languages/sv.ts index 7e64dd7fff..cfb5f38904 100644 --- a/dist/languages/sv.ts +++ b/dist/languages/sv.ts @@ -1159,18 +1159,6 @@ Högre tillstånd möjliggör fler funktioner och kan öka prestandan, men kan o Enables vertex input dynamic state feature for better quality and performance. Aktiverar funktionen för dynamiskt tillstånd för vertexinmatning för bättre kvalitet och prestanda. - - - Provoking Vertex - Provocerande toppunkt - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Förbättrar belysning och vertexhantering i vissa spel. -Endast enheter med Vulkan 1.0+ stöder denna tilläggsfunktion. - Descriptor Indexing diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts index 19438585b1..ab77e524a9 100644 --- a/dist/languages/tr_TR.ts +++ b/dist/languages/tr_TR.ts @@ -1113,17 +1113,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. Daha iyi kalite ve performans için Vertex dinamik durum özelliğini etkinleştirir. - - - Provoking Vertex - Provoking Vertex - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Bazı oyunlarda aydınlatmayı ve köşe işlemeyi iyileştirir. Bu uzantıyı yalnızca Vulkan 1.0 ve üzeri cihazlar destekler. - Descriptor Indexing diff --git a/dist/languages/uk.ts b/dist/languages/uk.ts index 1850ad1bc3..7862915790 100644 --- a/dist/languages/uk.ts +++ b/dist/languages/uk.ts @@ -1154,18 +1154,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. Вмикає можливість динамічного стану введення вершин для кращих якості й продуктивності. - - - Provoking Vertex - Провокативна вершина - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Покращує освітлення та взаємодію з вершинами у деяких іграх. -Це розширення підтримують лише пристрої з Vulkan 1.0+. - Descriptor Indexing diff --git a/dist/languages/vi.ts b/dist/languages/vi.ts index d76452a68a..13f3690e85 100644 --- a/dist/languages/vi.ts +++ b/dist/languages/vi.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts index 2e46de6dc6..c9e5c1f6c0 100644 --- a/dist/languages/vi_VN.ts +++ b/dist/languages/vi_VN.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts index a16f8b44d9..6076354268 100644 --- a/dist/languages/zh_CN.ts +++ b/dist/languages/zh_CN.ts @@ -1152,17 +1152,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. 开启顶点输入动态状态功能来获得更好的质量和性能。 - - - Provoking Vertex - 激活顶点 - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - 改善某些游戏中的照明和顶点处理。仅 Vulkan 1.0 设备支持此扩展。 - Descriptor Indexing diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts index f997ca62b9..a2bb3d29a2 100644 --- a/dist/languages/zh_TW.ts +++ b/dist/languages/zh_TW.ts @@ -1126,17 +1126,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Provoking Vertex - - - - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - - Descriptor Indexing diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt index 2418003904..d03a90e2a8 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt @@ -31,7 +31,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { RENDERER_DEBUG("debug"), RENDERER_PATCH_OLD_QCOM_DRIVERS("patch_old_qcom_drivers"), RENDERER_VERTEX_INPUT_DYNAMIC_STATE("vertex_input_dynamic_state"), - RENDERER_PROVOKING_VERTEX("provoking_vertex"), RENDERER_DESCRIPTOR_INDEXING("descriptor_indexing"), RENDERER_SAMPLE_SHADING("sample_shading"), GPU_UNSWIZZLE_ENABLED("gpu_unswizzle_enabled"), diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index 6f25856cbf..95d6d52b5e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -141,13 +141,6 @@ abstract class SettingsItem( valuesId = R.array.dynaStateValues ) ) - put( - SwitchSetting( - BooleanSetting.RENDERER_PROVOKING_VERTEX, - titleId = R.string.provoking_vertex, - descriptionId = R.string.provoking_vertex_description - ) - ) put( SwitchSetting( BooleanSetting.RENDERER_VERTEX_INPUT_DYNAMIC_STATE, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 060a6fe9ae..53ea56c08a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -280,7 +280,6 @@ class SettingsFragmentPresenter( add(IntSetting.RENDERER_DYNA_STATE.key) add(BooleanSetting.RENDERER_VERTEX_INPUT_DYNAMIC_STATE.key) - add(BooleanSetting.RENDERER_PROVOKING_VERTEX.key) add(BooleanSetting.RENDERER_DESCRIPTOR_INDEXING.key) add(IntSetting.RENDERER_SAMPLE_SHADING.key) diff --git a/src/android/app/src/main/res/values-ar/strings.xml b/src/android/app/src/main/res/values-ar/strings.xml index 577b88396b..b9037fedab 100644 --- a/src/android/app/src/main/res/values-ar/strings.xml +++ b/src/android/app/src/main/res/values-ar/strings.xml @@ -525,8 +525,6 @@ معطل حالة ديناميكية لإدخال الرأس يتيح ميزة الحالة الديناميكية لإدخال الرأس لتحسين الجودة والأداء. - الرأس المثير - يحسن الإضاءة ومعالجة الرؤوس في بعض الألعاب. مدعوم فقط على وحدات معالجة الرسومات Vulkan 1.0+. فهرسة الوصف يحسن معالجة النسيج والمخزن المؤقت، بالإضافة إلى طبقة الترجمة Maxwell. مدعوم من بعض وحدات معالجة الرسومات Vulkan 1.1 وجميع وحدات معالجة الرسومات Vulkan 1.2+. تظليل العينة diff --git a/src/android/app/src/main/res/values-ckb/strings.xml b/src/android/app/src/main/res/values-ckb/strings.xml index 3adce117c3..80f511af2b 100644 --- a/src/android/app/src/main/res/values-ckb/strings.xml +++ b/src/android/app/src/main/res/values-ckb/strings.xml @@ -360,8 +360,6 @@ کۆمپایلکردنی شادەرەکان بەشێوەی ناڕێک. ئەمە ڕەنگە کەمکردنەوەی ستەتەر بکات بەڵام لەوانەیە هەڵەش دروست بکات. الحالة الديناميكية الممتدة ناچالاک - الرأس المثير - يحسن الإضاءة ومعالجة الرؤوس في بعض الألعاب. مدعوم فقط على وحدات معالجة الرسومات التي تدعم فولكان 1.0+. فهرسة الواصفات يحسن معالجة القوام والمخازن المؤقتة، بالإضافة إلى طبقة ترجمة ماكسويل. مدعوم من قبل بعض وحدات معالجة الرسومات التي تدعم فولكان 1.1 وجميع وحدات معالجة الرسومات التي تدعم فولكان 1.2+. پیشاندان diff --git a/src/android/app/src/main/res/values-cs/strings.xml b/src/android/app/src/main/res/values-cs/strings.xml index f42e743173..ad5530d3d2 100644 --- a/src/android/app/src/main/res/values-cs/strings.xml +++ b/src/android/app/src/main/res/values-cs/strings.xml @@ -486,8 +486,6 @@ Vypnuto Dynamický stav vstupu vrcholů (Vertex Input) Aktivuje funkci dynamického stavu vstupu vrcholů (Vertex Input Dynamic State) pro lepší kvalitu a výkon. - Určující vrchol - Zlepšuje osvětlení a zpracování vrcholů v některých hrách. Podporováno pouze na GPU s API Vulkan 1.0+. Indexování deskriptorů Zlepšuje zpracování textur a bufferů, stejně jako překladovou vrstvu architektury Maxwell. Podporováno některými GPU s API Vulkan 1.1 a všemi GPU s API Vulkan 1.2+. Zobrazení diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index 764e1b9b16..4c5c912094 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -484,8 +484,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Deaktiviert Vertex Input Dynamic State Aktiviert die Funktion \"Vertex Input Dynamic State\" für bessere Qualität und Leistung. - Provokanter Vertex - Verbessert die Beleuchtung und die Vertex-Verarbeitung in einigen Spielen. Wird nur von GPUs mit Vulkan 1.0+ unterstützt. Deskriptor-Indizierung Verbessert die Textur- und Puffer-Verarbeitung sowie die Maxwell-Übersetzungsschicht. Wird von einigen Vulkan 1.1-GPUs und allen Vulkan 1.2+-GPUs unterstützt. Sample Shading diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index f9d921745e..1dc1724889 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -519,8 +519,6 @@ Desactivado Estado dinámico de entrada de vértices Activa la función de estado dinámico de entrada de vértices para una mejor calidad y rendimiento. - Vértice provocante - Mejora la iluminación y el manejo de vértices en ciertos juegos. Solo es compatible con las GPU Vulkan 1.0+. Indexación del descriptor Mejora la textura y el manejo del búfer, así como la capa de traducción Maxwell. Compatible con algunas GPU Vulkan 1.1 y todas las GPU Vulkan 1.2+. Muestreo de sombreado diff --git a/src/android/app/src/main/res/values-fa/strings.xml b/src/android/app/src/main/res/values-fa/strings.xml index 80e40444c2..9412b13f67 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -71,8 +71,6 @@ حذف فرمور آن را از دستگاه پاک می‌کند و ممکن است بر سازگاری بازی‌ها تأثیر بگذارد در حال حذف فرمور فرمور با موفقیت حذف شد - رأس تحریک‌کننده - نورپردازی و مدیریت رأس را در برخی بازی‌ها بهبود می‌بخشد. فقط در کارت‌های گرافیک با پشتیبانی از ولکان 1.0+ قابل استفاده است نمایه‌سازی توصیفگر مدیریت بافت‌ها و بافرها و همچنین لایه ترجمه ماکسول را بهبود می‌بخشد. توسط برخی کارت‌های گرافیک ولکان 1.1 و تمام کارت‌های گرافیک ولکان 1.2+ پشتیبانی می‌شود فاکتور اورکلاک GPU diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index cab267ec09..b99e6f1613 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -471,8 +471,6 @@ Désactivé État dynamique d\'entrée de sommet Active la fonctionnalité d\'état dynamique des entrées de sommets pour une meilleure qualité et de meilleures performances. - Provoque des Vertex - Améliore l`éclairage et la gestion des vertex dans certains jeux. Pris en charge uniquement par les GPU Vulkan 1.0+. Indexation des descripteurs Améliore la gestion des textures et des tampons, ainsi que la couche de traduction Maxwell. Pris en charge par certains GPU Vulkan 1.1 et tous les GPU Vulkan 1.2+. Affichage diff --git a/src/android/app/src/main/res/values-he/strings.xml b/src/android/app/src/main/res/values-he/strings.xml index 74d61af932..0bb25bff20 100644 --- a/src/android/app/src/main/res/values-he/strings.xml +++ b/src/android/app/src/main/res/values-he/strings.xml @@ -390,8 +390,6 @@ מקמפל שיידרים באופן אסינכרוני. זה עשוי להפחית קפיצות אך גם עלול לגרום לתקלות גרפיות. מצב דינמי מורחב מושבת - קודקוד מעורר - משפר תאורה וטיפול בקודקודים במשחקים מסוימים. נתמך רק בכרטיסי מסך עם Vulkan 1.0+. אינדוקס תיאורים משפר טיפול במרקמים ומאגרים, כמו גם בשכבת התרגום של Maxwell. נתמך בחלק מכרטיסי ה-Vulkan 1.1 ובכל כרטיסי ה-Vulkan 1.2+. תצוגה diff --git a/src/android/app/src/main/res/values-hu/strings.xml b/src/android/app/src/main/res/values-hu/strings.xml index aae6766321..5a3eeeb40e 100644 --- a/src/android/app/src/main/res/values-hu/strings.xml +++ b/src/android/app/src/main/res/values-hu/strings.xml @@ -379,8 +379,6 @@ A shaderek aszinkron fordítása. Csökkentheti a belassulásokat, de hibákat is okozhat. Kiterjesztett Dinamikus Állapot Letiltva - Provokáló csúcs - Javítja a világítást és a csúcskezelést bizonyos játékokban. Csak Vulkan 1.0+ GPU-kon támogatott. Deskriptor Indexelés Javítja a textúrák és pufferek kezelését, valamint a Maxwell fordítási réteget. Néhány Vulkan 1.1 GPU és minden Vulkan 1.2+ GPU támogatja. Kijelző diff --git a/src/android/app/src/main/res/values-id/strings.xml b/src/android/app/src/main/res/values-id/strings.xml index 02ed67feb6..64bf270bbb 100644 --- a/src/android/app/src/main/res/values-id/strings.xml +++ b/src/android/app/src/main/res/values-id/strings.xml @@ -411,8 +411,6 @@ Kompilasi shader secara asinkron. Ini dapat mengurangi lag tetapi juga dapat menyebabkan glitch. Status Dinamis Ekstensi Dinonaktifkan - Vertex Provokasi - Meningkatkan pencahayaan dan penanganan vertex di beberapa game. Hanya didukung di GPU Vulkan 1.0+. Pengindeks Deskriptor Meningkatkan penanganan tekstur dan buffer, serta lapisan terjemahan Maxwell. Didukung oleh beberapa GPU Vulkan 1.1 dan semua GPU Vulkan 1.2+. Tampilan diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index cc32cac3ed..8d5203954d 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -418,8 +418,6 @@ Compila gli shader in modo asincrono. Può ridurre gli scatti, ma può anche causare glitch grafici. Stato dinamico esteso Disabilitato - Vertice provocante - Migliora illuminazione e gestione dei vertici in alcuni giochi. Supportato solo su GPU Vulkan 1.0+. Indicizzazione descrittori Migliora la gestione di texture e buffer, nonché il livello di traduzione Maxwell. Supportato da alcune GPU Vulkan 1.1 e tutte le GPU Vulkan 1.2+. Schermo diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index 34fd473de3..3a89b40bf6 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -377,8 +377,6 @@ シェーダーを非同期でコンパイルします。これによりカクつきが減る可能性がありますが、グラフィックの不具合が発生する場合もあります。 拡張ダイナミックステート 無効 - プロボーキング頂点 - 特定のゲームで照明と頂点処理を改善します。Vulkan 1.0+ GPUでのみサポートされています。 ディスクリプタインデキシング テクスチャとバッファの処理、およびMaxwell翻訳レイヤーを改善します。一部のVulkan 1.1 GPUとすべてのVulkan 1.2+ GPUでサポートされています。 ディスプレイ diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index 30b9feb33e..d01401d073 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -377,8 +377,6 @@ 셰이더를 비동기적으로 컴파일합니다. 이로 인해 끊김 현상이 줄어들 수 있지만 그래픽 오류가 발생할 수도 있습니다. 확장 동적 상태 비활성화됨 - 프로보킹 버텍스 - 일부 게임에서 조명과 버텍스 처리를 개선합니다. Vulkan 1.0+ GPU에서만 지원됩니다. 디스크립터 인덱싱 텍스처 및 버퍼 처리와 Maxwell 변환 레이어를 개선합니다. 일부 Vulkan 1.1 GPU 및 모든 Vulkan 1.2+ GPU에서 지원됩니다. 디스플레이 diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index 559c1f61f4..f33b0422f3 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -360,8 +360,6 @@ Kompilerer shadere asynkront. Dette kan redusere rykk, men kan også forårsake grafiske feil. Utvidet dynamisk tilstand Deaktivert - Provoserende vertex - Forbedrer belysning og vertexhåndtering i enkelte spill. Støttes kun på Vulkan 1.0+ GPU-er. Beskrivelsesindeksering Forbedrer tekstur- og bufferhåndtering, samt Maxwell-oversettelseslaget. Støttes av noen Vulkan 1.1 GPU-er og alle Vulkan 1.2+ GPU-er. Skjerm diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index 9cea367838..69db651a60 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -484,8 +484,6 @@ Wyłączone Dynamiczny stan wejścia wierzchołków Włącza funkcję dynamicznego stanu wejścia wierzchołków, poprawiając jakość i wydajność. - Wierzchołek prowokujący - Poprawia oświetlenie i obsługę wierzchołków w niektórych grach. Obsługiwane tylko przez GPU Vulkan 1.0+. Indeksowanie deskryptorów Poprawia obsługę tekstur i buforów oraz warstwę tłumaczenia Maxwell. Obsługiwane przez niektóre GPU Vulkan 1.1 i wszystkie GPU Vulkan 1.2+. Cieniowanie próbkowane diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index e016ad5da0..480b2c953a 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -467,8 +467,6 @@ Desativado Vertex Input Dynamic State Ativa o recurso de vertex input dynamic state para melhor qualidade e desempenho. - Provoking Vertex - Vértice Provocante: Melhora a iluminação e o processamento de vértices em certos jogos. Suportado apenas em GPUs com Vulkan 1.0 ou superior. Descriptor Indexing Indexação de Descritores: Melhora o processamento de texturas e buffers, assim como a camada de tradução Maxwell. Suportado por algumas GPUs Vulkan 1.1 e todas as GPUs Vulkan 1.2 ou superiores. Tela diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 05612390a8..5b66555953 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -383,8 +383,6 @@ Compila shaders de forma assíncrona. Isto pode reduzir engasgadelas, mas também pode introduzir falhas gráficas. Estado Dinâmico Estendido Desativado - Vértice provocante - Melhora a iluminação e o tratamento de vértices em certos jogos. Suportado apenas em GPUs Vulkan 1.0+. Indexação de descritores Melhora o tratamento de texturas e buffers, assim como a camada de tradução Maxwell. Suportado por algumas GPUs Vulkan 1.1 e todas Vulkan 1.2+. Ecrã diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index 718b2da696..9627bcd6a0 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -520,8 +520,6 @@ Отключено Динамическое состояние ввода вершин Включает функцию динамического состояния ввода вершин для повышения качества и производительности - Определяющая вершина - Улучшает освещение и обработку вершин в некоторых играх. Поддерживается только ГПУ с Vulkan 1.0+. Индексирование дескрипторов Улучшает обработку текстур и буферов, а также слой перевода Maxwell. Поддерживается некоторыми ГПУ Vulkan 1.1 и всеми ГПУ Vulkan 1.2+. Сэмпловое затенение diff --git a/src/android/app/src/main/res/values-sr/strings.xml b/src/android/app/src/main/res/values-sr/strings.xml index 7ac829cd91..daa9c99cea 100644 --- a/src/android/app/src/main/res/values-sr/strings.xml +++ b/src/android/app/src/main/res/values-sr/strings.xml @@ -382,8 +382,6 @@ Саставља схадера асинхроно. Ово може умањити затезаче, али могу такође да уведе пропусте. Проширена динамичка држава Искључено - Провоцирајући врх - Побољшава осветљење и вертификат руковања у одређеним играма. Подржан само на Вулкану 1.0+ ГПУ-у. Индексирање дескриптора Побољшава текстуру и руковање међуспремника, као и преводилачки слој Маквелл. Подржани од стране неких Вулкана 1.1 ГПУ-а и сви Вулкан 1.2+ ГПУ. Приказ 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 5f1dbd8e28..6ba5adced2 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -521,8 +521,6 @@ Вимкнено Динамічний стан введення вершин Вмикає можливість динамічного стану введення вершин для кращих якості й продуктивності. - Провокативна вершина - Покращує освітлення та взаємодію з вершинами у деяких іграх. Лише для ГП з підтримкою Vulkan 1.0+. Індексація дескрипторів Покращує обробку текстур та буферів, а також шар перекладу Maxwell. Підтримується деякими GPU Vulkan 1.1 та всіма GPU Vulkan 1.2+. Простий шейдинг diff --git a/src/android/app/src/main/res/values-vi/strings.xml b/src/android/app/src/main/res/values-vi/strings.xml index fe3e3037b1..35c67a5d79 100644 --- a/src/android/app/src/main/res/values-vi/strings.xml +++ b/src/android/app/src/main/res/values-vi/strings.xml @@ -358,8 +358,6 @@ Biên dịch shader không đồng bộ. Điều này có thể giảm giật lag nhưng cũng có thể gây ra lỗi đồ họa. Trạng thái động mở rộng Đã tắt - Đỉnh kích hoạt - Cải thiện ánh sáng và xử lý đỉnh trong một số trò chơi. Chỉ được hỗ trợ trên GPU Vulkan 1.0+. Lập chỉ mục bộ mô tả Cải thiện xử lý kết cấu và bộ đệm, cũng như lớp dịch Maxwell. Được hỗ trợ bởi một số GPU Vulkan 1.1 và tất cả GPU Vulkan 1.2+. Hiển thị diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index beda261a2e..61f335d51c 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -514,8 +514,6 @@ 已禁用 顶点输入动态状态 开启顶点输入动态状态功能来获得更好的质量和性能。 - 引发顶点 - 改善某些游戏中的光照和顶点处理。仅支持Vulkan 1.0+ GPU。 描述符索引 改进纹理和缓冲区处理以及Maxwell转换层。部分Vulkan 1.1 GPU和所有Vulkan 1.2+ GPU支持。 采样着色 diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index 65f96057ce..a336d5b66a 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -470,8 +470,6 @@ 已停用 頂點輸入動態狀態 啟用頂點輸入動態狀態以取得更佳的品質及性能 - 引發頂點 - 改善某些遊戲中的光照和頂點處理。僅支援Vulkan 1.0+ GPU。 描述符索引 改進紋理和緩衝區處理以及Maxwell轉換層。部分Vulkan 1.1 GPU和所有Vulkan 1.2+ GPU支援。 顯示 diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 74c5bcd276..119b942efe 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -531,8 +531,6 @@ Disabled Vertex Input Dynamic State Enables vertex input dynamic state feature for better quality and performance. - Provoking Vertex - Improves lighting and vertex handling in certain games. Only supported on Vulkan 1.0+ GPUs. Descriptor Indexing Improves texture and buffer handling, as well as the Maxwell translation layer. Supported by some Vulkan 1.1 GPUs and all Vulkan 1.2+ GPUs. Sample Shading diff --git a/src/common/settings.h b/src/common/settings.h index 2540282790..8b70a82470 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -606,7 +606,6 @@ struct Values { true, #endif "vertex_input_dynamic_state", Category::RendererExtensions}; - SwitchableSetting provoking_vertex{linkage, false, "provoking_vertex", Category::RendererExtensions}; SwitchableSetting descriptor_indexing{linkage, false, "descriptor_indexing", Category::RendererExtensions}; Setting renderer_debug{linkage, false, "debug", Category::RendererDebug}; diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp index eda0fb2002..0f1ff1965c 100644 --- a/src/qt_common/config/shared_translation.cpp +++ b/src/qt_common/config/shared_translation.cpp @@ -286,10 +286,6 @@ std::unique_ptr InitializeTranslations(QObject* parent) { INSERT(Settings, vertex_input_dynamic_state, tr("Vertex Input Dynamic State"), tr("Enables vertex input dynamic state feature for better quality and performance.")); - INSERT(Settings, provoking_vertex, tr("Provoking Vertex"), - tr("Improves lighting and vertex handling in some games.\n" - "Only Vulkan 1.0+ devices support this extension.")); - INSERT(Settings, descriptor_indexing, tr("Descriptor Indexing"), tr("Improves texture & buffer handling and the Maxwell translation layer.\n" "Some Vulkan 1.1+ and all 1.2+ devices support this extension.")); diff --git a/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp b/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp index 06cbd9e6da..d129cf8cd5 100644 --- a/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp +++ b/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp @@ -83,7 +83,29 @@ void FixedPipelineState::Refresh(Tegra::Engines::Maxwell3D& maxwell3d, DynamicFe depth_enabled.Assign(regs.zeta_enable != 0 ? 1 : 0); depth_format.Assign(static_cast(regs.zeta.format)); y_negate.Assign(regs.window_origin.mode != Maxwell::WindowOrigin::Mode::UpperLeft ? 1 : 0); - provoking_vertex_last.Assign(regs.provoking_vertex == Maxwell::ProvokingVertex::Last ? 1 : 0); + + bool use_last_provoking_vertex = false; + const bool provoking_vertex_available = features.has_provoking_vertex; + const bool supports_first_mode = features.has_provoking_vertex_first_mode; + const bool supports_last_mode = features.has_provoking_vertex_last_mode; + const bool transform_feedback_active = regs.transform_feedback_enabled != 0; + const bool tf_preserves_provoking_vertex = features.has_provoking_vertex_tf_preserve; + + if (provoking_vertex_available && (supports_first_mode || supports_last_mode)) { + use_last_provoking_vertex = regs.provoking_vertex == Maxwell::ProvokingVertex::Last; + + if (transform_feedback_active && !tf_preserves_provoking_vertex) { + use_last_provoking_vertex = false; + } + + if (use_last_provoking_vertex && !supports_last_mode) { + use_last_provoking_vertex = false; + } else if (!use_last_provoking_vertex && !supports_first_mode) { + use_last_provoking_vertex = true; + } + } + + provoking_vertex_last.Assign(use_last_provoking_vertex ? 1 : 0); conservative_raster_enable.Assign(regs.conservative_raster_enable != 0 ? 1 : 0); smooth_lines.Assign(regs.line_anti_alias_enable != 0 ? 1 : 0); alpha_to_coverage_enabled.Assign(regs.anti_alias_alpha_control.alpha_to_coverage != 0 ? 1 : 0); diff --git a/src/video_core/renderer_vulkan/fixed_pipeline_state.h b/src/video_core/renderer_vulkan/fixed_pipeline_state.h index c5bc14f448..a05f3e1c5b 100644 --- a/src/video_core/renderer_vulkan/fixed_pipeline_state.h +++ b/src/video_core/renderer_vulkan/fixed_pipeline_state.h @@ -28,6 +28,10 @@ struct DynamicFeatures { bool has_extended_dynamic_state_3_blend; bool has_extended_dynamic_state_3_enables; bool has_dynamic_vertex_input; + bool has_provoking_vertex; + bool has_provoking_vertex_first_mode; + bool has_provoking_vertex_last_mode; + bool has_provoking_vertex_tf_preserve; }; struct FixedPipelineState { diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index 75fbcaa968..8f706a02c8 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -749,12 +749,19 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { : VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT, .extraPrimitiveOverestimationSize = 0.0f, }; + const bool supports_provoking_first_mode = device.SupportsProvokingVertexFirstMode(); + const bool supports_provoking_last_mode = device.SupportsProvokingVertexLastMode(); + const bool requested_provoking_last_mode = key.state.provoking_vertex_last != 0; + const VkProvokingVertexModeEXT provoking_vertex_mode = + requested_provoking_last_mode + ? (supports_provoking_last_mode ? VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT + : VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT) + : (supports_provoking_first_mode ? VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT + : VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT); VkPipelineRasterizationProvokingVertexStateCreateInfoEXT provoking_vertex{ .sType = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT, .pNext = nullptr, - .provokingVertexMode = key.state.provoking_vertex_last != 0 - ? VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT - : VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT, + .provokingVertexMode = provoking_vertex_mode, }; if (IsLine(input_assembly_topology) && device.IsExtLineRasterizationSupported()) { @@ -763,7 +770,7 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { if (device.IsExtConservativeRasterizationSupported()) { conservative_raster.pNext = std::exchange(rasterization_ci.pNext, &conservative_raster); } - if (device.IsExtProvokingVertexSupported() && Settings::values.provoking_vertex.GetValue()) { + if (device.IsExtProvokingVertexSupported()) { provoking_vertex.pNext = std::exchange(rasterization_ci.pNext, &provoking_vertex); } diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 77a4e8616a..0235c53ea1 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -490,6 +490,14 @@ PipelineCache::PipelineCache(Tegra::MaxwellDeviceMemoryManager& device_memory_, dynamic_features.has_dynamic_vertex_input = device.IsExtVertexInputDynamicStateSupported() && Settings::values.vertex_input_dynamic_state.GetValue(); + + dynamic_features.has_provoking_vertex = device.IsExtProvokingVertexSupported(); + dynamic_features.has_provoking_vertex_first_mode = + device.SupportsProvokingVertexFirstMode(); + dynamic_features.has_provoking_vertex_last_mode = + device.SupportsProvokingVertexLastMode(); + dynamic_features.has_provoking_vertex_tf_preserve = + device.SupportsTransformFeedbackProvokingVertexPreservation(); } PipelineCache::~PipelineCache() { diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index b51c57d380..f26d2aaa8e 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1196,7 +1196,7 @@ void Device::RemoveUnsuitableExtensions() { RemoveExtensionFeatureIfUnsuitable(extensions.depth_clip_control, features.depth_clip_control, VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME); - /* */ // VK_EXT_extended_dynamic_state + // VK_EXT_extended_dynamic_state extensions.extended_dynamic_state = features.extended_dynamic_state.extendedDynamicState; RemoveExtensionFeatureIfUnsuitable(extensions.extended_dynamic_state, features.extended_dynamic_state, @@ -1268,7 +1268,6 @@ void Device::RemoveUnsuitableExtensions() { VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME); // VK_EXT_robustness2 - // Enable if at least one robustness2 feature is available extensions.robustness_2 = features.robustness2.robustBufferAccess2 || features.robustness2.robustImageAccess2 || features.robustness2.nullDescriptor; @@ -1277,25 +1276,10 @@ void Device::RemoveUnsuitableExtensions() { VK_EXT_ROBUSTNESS_2_EXTENSION_NAME); // VK_EXT_image_robustness - // Enable if robustImageAccess is available extensions.image_robustness = features.image_robustness.robustImageAccess; RemoveExtensionFeatureIfUnsuitable(extensions.image_robustness, features.image_robustness, VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME); - // VK_EXT_provoking_vertex - if (Settings::values.provoking_vertex.GetValue()) { - extensions.provoking_vertex = features.provoking_vertex.provokingVertexLast - && features.provoking_vertex - .transformFeedbackPreservesProvokingVertex; - RemoveExtensionFeatureIfUnsuitable(extensions.provoking_vertex, - features.provoking_vertex, - VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME); - } else { - RemoveExtensionFeature(extensions.provoking_vertex, - features.provoking_vertex, - VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME); - } - // VK_KHR_shader_atomic_int64 extensions.shader_atomic_int64 = features.shader_atomic_int64.shaderBufferInt64Atomics && features.shader_atomic_int64.shaderSharedInt64Atomics; @@ -1319,21 +1303,12 @@ void Device::RemoveUnsuitableExtensions() { VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME); // VK_EXT_transform_feedback - // We only require the basic transformFeedback feature and at least - // one transform feedback buffer. We keep transformFeedbackQueries as it's used by - // the streaming byte count implementation. GeometryStreams and multiple streams - // are not strictly required since we currently support only stream 0. extensions.transform_feedback = features.transform_feedback.transformFeedback && properties.transform_feedback.maxTransformFeedbackBuffers > 0 && properties.transform_feedback.transformFeedbackQueries; RemoveExtensionFeatureIfUnsuitable(extensions.transform_feedback, features.transform_feedback, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME); - if (extensions.transform_feedback) { - LOG_INFO(Render_Vulkan, "VK_EXT_transform_feedback enabled (buffers={}, queries={})", - properties.transform_feedback.maxTransformFeedbackBuffers, - properties.transform_feedback.transformFeedbackQueries); - } // VK_EXT_vertex_input_dynamic_state extensions.vertex_input_dynamic_state = diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index caf91104df..79fb0c186c 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -719,6 +719,22 @@ public: return extensions.provoking_vertex; } + /// Returns true if first vertex provoking mode can be used. + bool SupportsProvokingVertexFirstMode() const { + return extensions.provoking_vertex; + } + + /// Returns true if last vertex provoking mode can be used. + bool SupportsProvokingVertexLastMode() const { + return extensions.provoking_vertex && features.provoking_vertex.provokingVertexLast; + } + + /// Returns true if transform feedback preserves provoking vertex mode semantics. + bool SupportsTransformFeedbackProvokingVertexPreservation() const { + return extensions.provoking_vertex && + features.provoking_vertex.transformFeedbackPreservesProvokingVertex; + } + /// Returns true if the device supports VK_KHR_shader_atomic_int64. bool IsExtShaderAtomicInt64Supported() const { return extensions.shader_atomic_int64; From c51086db393ceefde95c9e4e224b0a926e79384d Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 7 Apr 2026 02:43:22 -0400 Subject: [PATCH 2/7] [vulkan] Removal of VK_EXT_swapchain_maintenance1 --- .../vulkan_common/vulkan_device.cpp | 20 ------------------- src/video_core/vulkan_common/vulkan_device.h | 6 ------ .../vulkan_common/vulkan_instance.cpp | 8 -------- 3 files changed, 34 deletions(-) diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index f26d2aaa8e..9a291a0440 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1352,26 +1352,6 @@ void Device::RemoveUnsuitableExtensions() { features.workgroup_memory_explicit_layout, VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME); - // VK_EXT_swapchain_maintenance1 (extension only, has features) - // Requires VK_EXT_surface_maintenance1 instance extension - extensions.swapchain_maintenance1 = features.swapchain_maintenance1.swapchainMaintenance1; - if (extensions.swapchain_maintenance1) { - // Check if VK_EXT_surface_maintenance1 instance extension is available - const auto instance_extensions = vk::EnumerateInstanceExtensionProperties(dld); - const bool has_surface_maintenance1 = instance_extensions && std::ranges::any_of(*instance_extensions, - [](const VkExtensionProperties& prop) { - return std::strcmp(prop.extensionName, VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME) == 0; - }); - if (!has_surface_maintenance1) { - LOG_WARNING(Render_Vulkan, - "VK_EXT_swapchain_maintenance1 requires VK_EXT_surface_maintenance1, disabling"); - extensions.swapchain_maintenance1 = false; - features.swapchain_maintenance1.swapchainMaintenance1 = false; - } - } - RemoveExtensionFeatureIfUnsuitable(extensions.swapchain_maintenance1, features.swapchain_maintenance1, - VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME); - // VK_KHR_maintenance1 (core in Vulkan 1.1, no features) extensions.maintenance1 = loaded_extensions.contains(VK_KHR_MAINTENANCE_1_EXTENSION_NAME); RemoveExtensionIfUnsuitable(extensions.maintenance1, VK_KHR_MAINTENANCE_1_EXTENSION_NAME); diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 79fb0c186c..be106d6962 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -64,7 +64,6 @@ VK_DEFINE_HANDLE(VmaAllocator) FEATURE(EXT, Robustness2, ROBUSTNESS_2, robustness2) \ FEATURE(EXT, TransformFeedback, TRANSFORM_FEEDBACK, transform_feedback) \ FEATURE(EXT, VertexInputDynamicState, VERTEX_INPUT_DYNAMIC_STATE, vertex_input_dynamic_state) \ - FEATURE(EXT, SwapchainMaintenance1, SWAPCHAIN_MAINTENANCE_1, swapchain_maintenance1) \ FEATURE(KHR, Maintenance5, MAINTENANCE_5, maintenance5) \ FEATURE(KHR, Maintenance6, MAINTENANCE_6, maintenance6) \ FEATURE(KHR, PipelineExecutableProperties, PIPELINE_EXECUTABLE_PROPERTIES, \ @@ -473,11 +472,6 @@ public: return extensions.swapchain_mutable_format; } - /// Returns true if VK_EXT_swapchain_maintenance1 is enabled. - bool IsExtSwapchainMaintenance1Enabled() const { - return extensions.swapchain_maintenance1; - } - /// Returns true if VK_KHR_shader_float_controls is enabled. bool IsKhrShaderFloatControlsSupported() const { return extensions.shader_float_controls; diff --git a/src/video_core/vulkan_common/vulkan_instance.cpp b/src/video_core/vulkan_common/vulkan_instance.cpp index b1a53ab4f3..398342296e 100644 --- a/src/video_core/vulkan_common/vulkan_instance.cpp +++ b/src/video_core/vulkan_common/vulkan_instance.cpp @@ -81,14 +81,6 @@ namespace { #endif if (enable_validation && AreExtensionsSupported(dld, *properties, std::array{VK_EXT_DEBUG_UTILS_EXTENSION_NAME})) extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); - // VK_EXT_surface_maintenance1 is required for VK_EXT_swapchain_maintenance1 - if (window_type != Core::Frontend::WindowSystemType::Headless && AreExtensionsSupported(dld, *properties, std::array{VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME})) { - extensions.push_back(VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME); - // Some(which?) drivers dont like being told to load this extension(why?) - // NVIDIA on FreeBSD is totally fine with this through - if (AreExtensionsSupported(dld, *properties, std::array{VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME})) - extensions.push_back(VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME); - } } return extensions; } From 7cbe1fb694e37f98b4271471a34dcd9b88a9253c Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 7 Apr 2026 02:59:11 -0400 Subject: [PATCH 3/7] [vulkan] Refined handling for Maintenance features --- .../renderer_vulkan/vk_texture_cache.cpp | 14 +++++++++++ src/video_core/vulkan_common/vulkan.h | 5 +--- .../vulkan_common/vulkan_device.cpp | 25 ++++--------------- src/video_core/vulkan_common/vulkan_device.h | 6 ----- 4 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_texture_cache.cpp b/src/video_core/renderer_vulkan/vk_texture_cache.cpp index d51564dcb3..48aa5ec476 100644 --- a/src/video_core/renderer_vulkan/vk_texture_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_texture_cache.cpp @@ -275,6 +275,19 @@ constexpr VkBorderColor ConvertBorderColor(const std::array& color) { return VK_COMPONENT_SWIZZLE_ZERO; } +void SanitizeDepthStencilSwizzle(std::array& swizzle, + bool supports_depth_stencil_swizzle_one) { + if (supports_depth_stencil_swizzle_one) { + return; + } + std::replace_if(swizzle.begin(), swizzle.end(), + [](SwizzleSource value) { + return value == SwizzleSource::OneFloat || + value == SwizzleSource::OneInt; + }, + SwizzleSource::Zero); +} + [[nodiscard]] VkImageViewType ImageViewType(Shader::TextureType type) { switch (type) { case Shader::TextureType::Color1D: @@ -2109,6 +2122,7 @@ ImageView::ImageView(TextureCacheRuntime& runtime, const VideoCommon::ImageViewI !device->IsExt4444FormatsSupported()); if ((aspect_mask & (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)) != 0) { std::ranges::transform(swizzle, swizzle.begin(), ConvertGreenRed); + SanitizeDepthStencilSwizzle(swizzle, device->SupportsDepthStencilSwizzleOne()); } } const auto format_info = MaxwellToVK::SurfaceFormat(*device, FormatType::Optimal, true, format); diff --git a/src/video_core/vulkan_common/vulkan.h b/src/video_core/vulkan_common/vulkan.h index 2cc0f0d7f0..2609e8dc0f 100644 --- a/src/video_core/vulkan_common/vulkan.h +++ b/src/video_core/vulkan_common/vulkan.h @@ -22,16 +22,13 @@ #include -// Define maintenance 7-9 extension names (not yet in official Vulkan headers) +// Define maintenance 7-8 extension names (not yet in official Vulkan headers) #ifndef VK_KHR_MAINTENANCE_7_EXTENSION_NAME #define VK_KHR_MAINTENANCE_7_EXTENSION_NAME "VK_KHR_maintenance7" #endif #ifndef VK_KHR_MAINTENANCE_8_EXTENSION_NAME #define VK_KHR_MAINTENANCE_8_EXTENSION_NAME "VK_KHR_maintenance8" #endif -#ifndef VK_KHR_MAINTENANCE_9_EXTENSION_NAME -#define VK_KHR_MAINTENANCE_9_EXTENSION_NAME "VK_KHR_maintenance9" -#endif // Sanitize macros #undef CreateEvent diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 9a291a0440..2fa652406b 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1352,15 +1352,15 @@ void Device::RemoveUnsuitableExtensions() { features.workgroup_memory_explicit_layout, VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME); - // VK_KHR_maintenance1 (core in Vulkan 1.1, no features) + // VK_KHR_maintenance1 extensions.maintenance1 = loaded_extensions.contains(VK_KHR_MAINTENANCE_1_EXTENSION_NAME); RemoveExtensionIfUnsuitable(extensions.maintenance1, VK_KHR_MAINTENANCE_1_EXTENSION_NAME); - // VK_KHR_maintenance2 (core in Vulkan 1.1, no features) + // VK_KHR_maintenance2 extensions.maintenance2 = loaded_extensions.contains(VK_KHR_MAINTENANCE_2_EXTENSION_NAME); RemoveExtensionIfUnsuitable(extensions.maintenance2, VK_KHR_MAINTENANCE_2_EXTENSION_NAME); - // VK_KHR_maintenance3 (core in Vulkan 1.1, no features) + // VK_KHR_maintenance3 extensions.maintenance3 = loaded_extensions.contains(VK_KHR_MAINTENANCE_3_EXTENSION_NAME); RemoveExtensionIfUnsuitable(extensions.maintenance3, VK_KHR_MAINTENANCE_3_EXTENSION_NAME); @@ -1371,17 +1371,6 @@ void Device::RemoveUnsuitableExtensions() { // VK_KHR_maintenance5 extensions.maintenance5 = features.maintenance5.maintenance5; - - if (extensions.maintenance5) { - LOG_INFO(Render_Vulkan, "VK_KHR_maintenance5 properties: polygonModePointSize={} " - "depthStencilSwizzleOne={} earlyFragmentTests={} nonStrictWideLines={}", - properties.maintenance5.polygonModePointSize, - properties.maintenance5.depthStencilSwizzleOneSupport, - properties.maintenance5.earlyFragmentMultisampleCoverageAfterSampleCounting && - properties.maintenance5.earlyFragmentSampleMaskTestBeforeSampleCounting, - properties.maintenance5.nonStrictWideLinesUseParallelogram); - } - RemoveExtensionFeatureIfUnsuitable(extensions.maintenance5, features.maintenance5, VK_KHR_MAINTENANCE_5_EXTENSION_NAME); @@ -1390,17 +1379,13 @@ void Device::RemoveUnsuitableExtensions() { RemoveExtensionFeatureIfUnsuitable(extensions.maintenance6, features.maintenance6, VK_KHR_MAINTENANCE_6_EXTENSION_NAME); - // VK_KHR_maintenance7 (proposed for Vulkan 1.4, no features) + // VK_KHR_maintenance7 extensions.maintenance7 = loaded_extensions.contains(VK_KHR_MAINTENANCE_7_EXTENSION_NAME); RemoveExtensionIfUnsuitable(extensions.maintenance7, VK_KHR_MAINTENANCE_7_EXTENSION_NAME); - // VK_KHR_maintenance8 (proposed for Vulkan 1.4, no features) + // VK_KHR_maintenance8 extensions.maintenance8 = loaded_extensions.contains(VK_KHR_MAINTENANCE_8_EXTENSION_NAME); RemoveExtensionIfUnsuitable(extensions.maintenance8, VK_KHR_MAINTENANCE_8_EXTENSION_NAME); - - // VK_KHR_maintenance9 (proposed for Vulkan 1.4, no features) - extensions.maintenance9 = loaded_extensions.contains(VK_KHR_MAINTENANCE_9_EXTENSION_NAME); - RemoveExtensionIfUnsuitable(extensions.maintenance9, VK_KHR_MAINTENANCE_9_EXTENSION_NAME); } void Device::SetupFamilies(VkSurfaceKHR surface) { diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index be106d6962..f01a01198e 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -99,7 +99,6 @@ VK_DEFINE_HANDLE(VmaAllocator) EXTENSION(KHR, MAINTENANCE_3, maintenance3) \ EXTENSION(KHR, MAINTENANCE_7, maintenance7) \ EXTENSION(KHR, MAINTENANCE_8, maintenance8) \ - EXTENSION(KHR, MAINTENANCE_9, maintenance9) \ EXTENSION(NV, DEVICE_DIAGNOSTICS_CONFIG, device_diagnostics_config) \ EXTENSION(NV, GEOMETRY_SHADER_PASSTHROUGH, geometry_shader_passthrough) \ EXTENSION(NV, VIEWPORT_ARRAY2, viewport_array2) \ @@ -903,11 +902,6 @@ public: return extensions.maintenance8; } - /// Returns true if the device supports VK_KHR_maintenance9. - bool IsKhrMaintenance9Supported() const { - return extensions.maintenance9; - } - /// Returns true if the device supports UINT8 index buffer conversion via compute shader. bool SupportsUint8Indices() const { return features.bit8_storage.storageBuffer8BitAccess && From 0e77fa80ab2ae28bd815724bd7c2e340e0855ced Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 7 Apr 2026 03:44:18 -0400 Subject: [PATCH 4/7] [vulkan] Removal of VK_EXT_multi_draw --- .../renderer_vulkan/vk_rasterizer.cpp | 52 ++++--------------- .../vulkan_common/vulkan_device.cpp | 16 ------ src/video_core/vulkan_common/vulkan_device.h | 7 --- .../vulkan_common/vulkan_wrapper.cpp | 2 - src/video_core/vulkan_common/vulkan_wrapper.h | 15 ------ 5 files changed, 10 insertions(+), 82 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index f867980a6f..ba7b5d8c1b 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -200,11 +200,6 @@ RasterizerVulkan::RasterizerVulkan(Core::Frontend::EmuWindow& emu_window_, Tegra fence_manager(*this, gpu, texture_cache, buffer_cache, query_cache, device, scheduler), wfi_event(device.GetLogical().CreateEvent()) { scheduler.SetQueryCache(query_cache); - - // Log multi-draw support - if (device.IsExtMultiDrawSupported()) { - LOG_INFO(Render_Vulkan, "VK_EXT_multi_draw is enabled for optimized draw calls"); - } } RasterizerVulkan::~RasterizerVulkan() = default; @@ -243,43 +238,16 @@ void RasterizerVulkan::Draw(bool is_indexed, u32 instance_count) { const u32 num_instances{instance_count}; const DrawParams draw_params{MakeDrawParams(draw_state, num_instances, is_indexed)}; - // Use VK_EXT_multi_draw if available (single draw becomes multi-draw with count=1) - if (device.IsExtMultiDrawSupported()) { - scheduler.Record([draw_params](vk::CommandBuffer cmdbuf) { - if (draw_params.is_indexed) { - // Use multi-draw indexed with single draw - const VkMultiDrawIndexedInfoEXT multi_draw_info{ - .firstIndex = draw_params.first_index, - .indexCount = draw_params.num_vertices, - }; - const int32_t vertex_offset = static_cast(draw_params.base_vertex); - cmdbuf.DrawMultiIndexedEXT(1, &multi_draw_info, draw_params.num_instances, - draw_params.base_instance, - sizeof(VkMultiDrawIndexedInfoEXT), &vertex_offset); - } else { - // Use multi-draw with single draw - const VkMultiDrawInfoEXT multi_draw_info{ - .firstVertex = draw_params.base_vertex, - .vertexCount = draw_params.num_vertices, - }; - cmdbuf.DrawMultiEXT(1, &multi_draw_info, draw_params.num_instances, - draw_params.base_instance, - sizeof(VkMultiDrawInfoEXT)); - } - }); - } else { - // Fallback to standard draw calls - scheduler.Record([draw_params](vk::CommandBuffer cmdbuf) { - if (draw_params.is_indexed) { - cmdbuf.DrawIndexed(draw_params.num_vertices, draw_params.num_instances, - draw_params.first_index, draw_params.base_vertex, - draw_params.base_instance); - } else { - cmdbuf.Draw(draw_params.num_vertices, draw_params.num_instances, - draw_params.base_vertex, draw_params.base_instance); - } - }); - } + scheduler.Record([draw_params](vk::CommandBuffer cmdbuf) { + if (draw_params.is_indexed) { + cmdbuf.DrawIndexed(draw_params.num_vertices, draw_params.num_instances, + draw_params.first_index, draw_params.base_vertex, + draw_params.base_instance); + } else { + cmdbuf.Draw(draw_params.num_vertices, draw_params.num_instances, + draw_params.base_vertex, draw_params.base_instance); + } + }); // Log draw call if (Settings::values.gpu_logging_enabled.GetValue() && diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 2fa652406b..ec6f54da22 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -1078,11 +1078,6 @@ bool Device::GetSuitability(bool requires_swapchain) { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR; SetNext(next, properties.maintenance5); } - if (extensions.multi_draw) { - properties.multi_draw.sType = - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT; - SetNext(next, properties.multi_draw); - } // Perform the property fetch. physical.GetProperties2(properties2); @@ -1317,17 +1312,6 @@ void Device::RemoveUnsuitableExtensions() { features.vertex_input_dynamic_state, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); - // VK_EXT_multi_draw - extensions.multi_draw = features.multi_draw.multiDraw; - - if (extensions.multi_draw) { - LOG_INFO(Render_Vulkan, "VK_EXT_multi_draw: maxMultiDrawCount={}", - properties.multi_draw.maxMultiDrawCount); - } - - RemoveExtensionFeatureIfUnsuitable(extensions.multi_draw, features.multi_draw, - VK_EXT_MULTI_DRAW_EXTENSION_NAME); - // VK_KHR_pipeline_executable_properties if (Settings::values.renderer_shader_feedback.GetValue()) { extensions.pipeline_executable_properties = diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index f01a01198e..fd189b19b6 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -57,7 +57,6 @@ VK_DEFINE_HANDLE(VmaAllocator) FEATURE(EXT, 4444Formats, 4444_FORMATS, format_a4b4g4r4) \ FEATURE(EXT, IndexTypeUint8, INDEX_TYPE_UINT8, index_type_uint8) \ FEATURE(EXT, LineRasterization, LINE_RASTERIZATION, line_rasterization) \ - FEATURE(EXT, MultiDraw, MULTI_DRAW, multi_draw) \ FEATURE(EXT, PrimitiveTopologyListRestart, PRIMITIVE_TOPOLOGY_LIST_RESTART, \ primitive_topology_list_restart) \ FEATURE(EXT, ProvokingVertex, PROVOKING_VERTEX, provoking_vertex) \ @@ -887,11 +886,6 @@ public: return extensions.maintenance6; } - /// Returns true if the device supports VK_EXT_multi_draw. - bool IsExtMultiDrawSupported() const { - return extensions.multi_draw; - } - /// Returns true if the device supports VK_KHR_maintenance7. bool IsKhrMaintenance7Supported() const { return extensions.maintenance7; @@ -1029,7 +1023,6 @@ private: VkPhysicalDeviceSubgroupSizeControlProperties subgroup_size_control{}; VkPhysicalDeviceTransformFeedbackPropertiesEXT transform_feedback{}; VkPhysicalDeviceMaintenance5PropertiesKHR maintenance5{}; - VkPhysicalDeviceMultiDrawPropertiesEXT multi_draw{}; VkPhysicalDeviceProperties properties{}; }; diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp index a2fa2b50c6..f59ac7d6bc 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.cpp +++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp @@ -116,8 +116,6 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept { X(vkCmdDrawIndirectCount); X(vkCmdDrawIndexedIndirectCount); X(vkCmdDrawIndirectByteCountEXT); - X(vkCmdDrawMultiEXT); - X(vkCmdDrawMultiIndexedEXT); X(vkCmdEndConditionalRenderingEXT); X(vkCmdEndQuery); X(vkCmdEndRenderPass); diff --git a/src/video_core/vulkan_common/vulkan_wrapper.h b/src/video_core/vulkan_common/vulkan_wrapper.h index 872fbd858e..aaff66359e 100644 --- a/src/video_core/vulkan_common/vulkan_wrapper.h +++ b/src/video_core/vulkan_common/vulkan_wrapper.h @@ -218,8 +218,6 @@ struct DeviceDispatch : InstanceDispatch { PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount{}; PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount{}; PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT{}; - PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT{}; - PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT{}; PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT{}; PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT{}; PFN_vkCmdEndQuery vkCmdEndQuery{}; @@ -1241,19 +1239,6 @@ public: counter_buffer_offset, counter_offset, stride); } - void DrawMultiEXT(u32 draw_count, const VkMultiDrawInfoEXT* vertex_info, - u32 instance_count, u32 first_instance, u32 stride) const noexcept { - dld->vkCmdDrawMultiEXT(handle, draw_count, vertex_info, instance_count, first_instance, - stride); - } - - void DrawMultiIndexedEXT(u32 draw_count, const VkMultiDrawIndexedInfoEXT* index_info, - u32 instance_count, u32 first_instance, u32 stride, - const int32_t* vertex_offset) const noexcept { - dld->vkCmdDrawMultiIndexedEXT(handle, draw_count, index_info, instance_count, - first_instance, stride, vertex_offset); - } - void ClearAttachments(Span attachments, Span rects) const noexcept { dld->vkCmdClearAttachments(handle, attachments.size(), attachments.data(), rects.size(), From 3e324175ac8453a779333c4b0262b0e402c93e7d Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 7 Apr 2026 15:28:17 -0400 Subject: [PATCH 5/7] [vulkan] Refining ProvokingVertex remork --- src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 0235c53ea1..5f86506961 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -611,6 +611,18 @@ void PipelineCache::LoadDiskResources(u64 title_id, std::stop_token stop_loading (key.state.dynamic_vertex_input != 0) != dynamic_features.has_dynamic_vertex_input) { return; } + + const bool key_requests_provoking_last = key.state.provoking_vertex_last != 0; + if (key_requests_provoking_last && !dynamic_features.has_provoking_vertex_last_mode) { + return; + } + + const bool key_uses_transform_feedback = key.state.xfb_enabled != 0; + if (key_uses_transform_feedback && key_requests_provoking_last && + !dynamic_features.has_provoking_vertex_tf_preserve) { + return; + } + workers.QueueWork([this, key, envs_ = std::move(envs), &state, &callback]() mutable { ShaderPools pools; boost::container::static_vector env_ptrs; From 24621e63db5fcee0c21b21f887b0e61f2e5e14bf Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 7 Apr 2026 15:51:16 -0400 Subject: [PATCH 6/7] [vulkan] Removal of Indexing Descriptors --- dist/languages/ar.ts | 12 ------------ dist/languages/ca.ts | 11 ----------- dist/languages/cs.ts | 11 ----------- dist/languages/da.ts | 11 ----------- dist/languages/de.ts | 11 ----------- dist/languages/el.ts | 11 ----------- dist/languages/es.ts | 12 ------------ dist/languages/fi.ts | 11 ----------- dist/languages/fr.ts | 12 ------------ dist/languages/hu.ts | 11 ----------- dist/languages/id.ts | 11 ----------- dist/languages/it.ts | 12 ------------ dist/languages/ja_JP.ts | 11 ----------- dist/languages/ko_KR.ts | 11 ----------- dist/languages/nb.ts | 11 ----------- dist/languages/nl.ts | 11 ----------- dist/languages/pl.ts | 12 ------------ dist/languages/pt_BR.ts | 11 ----------- dist/languages/pt_PT.ts | 11 ----------- dist/languages/ru_RU.ts | 12 ------------ dist/languages/sv.ts | 12 ------------ dist/languages/tr_TR.ts | 11 ----------- dist/languages/uk.ts | 12 ------------ dist/languages/vi.ts | 11 ----------- dist/languages/vi_VN.ts | 12 ------------ dist/languages/zh_CN.ts | 12 ------------ dist/languages/zh_TW.ts | 11 ----------- .../features/settings/model/BooleanSetting.kt | 1 - .../features/settings/model/view/SettingsItem.kt | 7 ------- .../settings/ui/SettingsFragmentPresenter.kt | 1 - src/android/app/src/main/res/values-ar/strings.xml | 2 -- src/android/app/src/main/res/values-ckb/strings.xml | 2 -- src/android/app/src/main/res/values-cs/strings.xml | 2 -- src/android/app/src/main/res/values-de/strings.xml | 2 -- src/android/app/src/main/res/values-es/strings.xml | 2 -- src/android/app/src/main/res/values-fa/strings.xml | 2 -- src/android/app/src/main/res/values-fr/strings.xml | 2 -- src/android/app/src/main/res/values-he/strings.xml | 2 -- src/android/app/src/main/res/values-hu/strings.xml | 2 -- src/android/app/src/main/res/values-id/strings.xml | 2 -- src/android/app/src/main/res/values-it/strings.xml | 2 -- src/android/app/src/main/res/values-ja/strings.xml | 2 -- src/android/app/src/main/res/values-ko/strings.xml | 2 -- src/android/app/src/main/res/values-nb/strings.xml | 2 -- src/android/app/src/main/res/values-pl/strings.xml | 2 -- .../app/src/main/res/values-pt-rBR/strings.xml | 2 -- .../app/src/main/res/values-pt-rPT/strings.xml | 2 -- src/android/app/src/main/res/values-ru/strings.xml | 2 -- src/android/app/src/main/res/values-sr/strings.xml | 2 -- src/android/app/src/main/res/values-uk/strings.xml | 2 -- src/android/app/src/main/res/values-vi/strings.xml | 2 -- .../app/src/main/res/values-zh-rCN/strings.xml | 2 -- .../app/src/main/res/values-zh-rTW/strings.xml | 2 -- src/android/app/src/main/res/values/strings.xml | 2 -- src/common/settings.h | 1 - src/qt_common/config/shared_translation.cpp | 4 ---- src/video_core/vulkan_common/vulkan_device.cpp | 12 ------------ src/video_core/vulkan_common/vulkan_device.h | 6 ------ 58 files changed, 387 deletions(-) diff --git a/dist/languages/ar.ts b/dist/languages/ar.ts index 84837d724f..2f2cb0a061 100644 --- a/dist/languages/ar.ts +++ b/dist/languages/ar.ts @@ -1146,18 +1146,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. يتيح ميزة الحالة الديناميكية لإدخال الرأس لتحسين الجودة والأداء. - - - Descriptor Indexing - فهرسة الوصف - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - يُحسّن معالجة الملمس والذاكرة المؤقتة وطبقة ترجمة ماكسويل. -تدعم بعض أجهزة Vulkan الإصدار 1.1+‎ وجميع أجهزة 1.2+‎ هذه الإضافة. - Sample Shading diff --git a/dist/languages/ca.ts b/dist/languages/ca.ts index 678889f164..2cfc8992f1 100644 --- a/dist/languages/ca.ts +++ b/dist/languages/ca.ts @@ -1094,17 +1094,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/cs.ts b/dist/languages/cs.ts index f6baf19268..d1e79cf328 100644 --- a/dist/languages/cs.ts +++ b/dist/languages/cs.ts @@ -1094,17 +1094,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/da.ts b/dist/languages/da.ts index 91bd8137bd..9e2adfa4ba 100644 --- a/dist/languages/da.ts +++ b/dist/languages/da.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/de.ts b/dist/languages/de.ts index 7821afe05a..ad6a0bce19 100644 --- a/dist/languages/de.ts +++ b/dist/languages/de.ts @@ -1104,17 +1104,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/el.ts b/dist/languages/el.ts index cad37e6915..573f05f6e0 100644 --- a/dist/languages/el.ts +++ b/dist/languages/el.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/es.ts b/dist/languages/es.ts index f0604b087f..1c98b6645d 100644 --- a/dist/languages/es.ts +++ b/dist/languages/es.ts @@ -1151,18 +1151,6 @@ Números más altos permiten úsar más funciones y pueden aumentar el rendimien Enables vertex input dynamic state feature for better quality and performance. Activa la función de estado dinámico de entrada de vértices para una mejor calidad y rendimiento. - - - Descriptor Indexing - Indexación del descriptor - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Mejora el manejo de texturas, búferes y la capa de traducción de Maxwell. -Algunos dispositivos Vulkan 1.1+ y todos los 1.2+ son compatibles con esta extensión. - Sample Shading diff --git a/dist/languages/fi.ts b/dist/languages/fi.ts index 6a688b5ced..e95d883178 100644 --- a/dist/languages/fi.ts +++ b/dist/languages/fi.ts @@ -1094,17 +1094,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts index b7a3196d79..c86fcc4858 100644 --- a/dist/languages/fr.ts +++ b/dist/languages/fr.ts @@ -1142,18 +1142,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - Indexation des descripteurs - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Améliore la gestion des textures et des tampons ainsi que la couche de traduction Maxwell. -Certains appareils compatibles Vulkan 1.1+ et tous ceux en 1.2+ prennent en charge cette extension. - Sample Shading diff --git a/dist/languages/hu.ts b/dist/languages/hu.ts index 953f4c6ee3..a90f827e5e 100644 --- a/dist/languages/hu.ts +++ b/dist/languages/hu.ts @@ -1102,17 +1102,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/id.ts b/dist/languages/id.ts index 2873e64ef8..c63e341d88 100644 --- a/dist/languages/id.ts +++ b/dist/languages/id.ts @@ -1117,17 +1117,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/it.ts b/dist/languages/it.ts index 74af128d08..4b42d4c825 100644 --- a/dist/languages/it.ts +++ b/dist/languages/it.ts @@ -1146,18 +1146,6 @@ Gli stati più alti consentono più funzionalità e possono migliorare le presta Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - Indicizzazione descrittori - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Migliora la gestione di texture e buffer, ma anche il layer di traduzione Maxwell. -Alcuni dispositivi con Vulkan 1.1+ e tutti quelli con 1.2+ supportano quest'estensione. - Sample Shading diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts index f13c44baee..fb597d7734 100644 --- a/dist/languages/ja_JP.ts +++ b/dist/languages/ja_JP.ts @@ -1099,17 +1099,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts index ed5f42ca0f..66a689c714 100644 --- a/dist/languages/ko_KR.ts +++ b/dist/languages/ko_KR.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts index 9f4c650464..cf528f4df4 100644 --- a/dist/languages/nb.ts +++ b/dist/languages/nb.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts index 1ad246f948..2dec838b0b 100644 --- a/dist/languages/nl.ts +++ b/dist/languages/nl.ts @@ -1105,17 +1105,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/pl.ts b/dist/languages/pl.ts index 3546a478b9..70c84d9f09 100644 --- a/dist/languages/pl.ts +++ b/dist/languages/pl.ts @@ -1145,18 +1145,6 @@ Wyższe poziomy pozwalają na użycie większej liczby funkcji i mogą zwiększy Enables vertex input dynamic state feature for better quality and performance. Włącza funkcję dynamicznego stanu wejścia wierzchołków, poprawiając jakość i wydajność. - - - Descriptor Indexing - Indeksowanie deskryptorów - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Poprawia obsługę tekstur i buforów oraz warstwę translacji Maxwell. -Niektóre urządzenia z Vulkanem 1.1+ i wszystkie z 1.2+ obsługują to rozszerzenie. - Sample Shading diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts index a4e3366123..e53e8fc254 100644 --- a/dist/languages/pt_BR.ts +++ b/dist/languages/pt_BR.ts @@ -1129,17 +1129,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/pt_PT.ts b/dist/languages/pt_PT.ts index f7bce87a41..2c7560e77d 100644 --- a/dist/languages/pt_PT.ts +++ b/dist/languages/pt_PT.ts @@ -1104,17 +1104,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts index bda0794261..b1263a6f8d 100644 --- a/dist/languages/ru_RU.ts +++ b/dist/languages/ru_RU.ts @@ -1151,18 +1151,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. Включает функцию динамического состояния вершинного ввода для повышения качества и производительности. - - - Descriptor Indexing - Индексирование дескрипторов - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Улучшает текстуру и обработку буфера и уровень трансляции Maxwell. -Некоторые устройства Vulkan 1.1+ и все 1.2+ поддерживают это расширение. - Sample Shading diff --git a/dist/languages/sv.ts b/dist/languages/sv.ts index cfb5f38904..57c4b5a21b 100644 --- a/dist/languages/sv.ts +++ b/dist/languages/sv.ts @@ -1159,18 +1159,6 @@ Högre tillstånd möjliggör fler funktioner och kan öka prestandan, men kan o Enables vertex input dynamic state feature for better quality and performance. Aktiverar funktionen för dynamiskt tillstånd för vertexinmatning för bättre kvalitet och prestanda. - - - Descriptor Indexing - Indexering av deskriptorer - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Förbättrar textur- och bufferthantering samt Maxwell-översättningslagret. -Vissa Vulkan 1.1+ och alla 1.2+ enheter stöder detta tillägg. - Sample Shading diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts index ab77e524a9..d6994d84ea 100644 --- a/dist/languages/tr_TR.ts +++ b/dist/languages/tr_TR.ts @@ -1113,17 +1113,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. Daha iyi kalite ve performans için Vertex dinamik durum özelliğini etkinleştirir. - - - Descriptor Indexing - Tanımlayıcı İndeksleme - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Doku ve arabellek işlemeyi ve Maxwell çeviri katmanını iyileştirir. Bazı Vulkan 1.1 ve üzeri ile tüm 1.2 ve üzeri cihazlar bu uzantıyı destekler. - Sample Shading diff --git a/dist/languages/uk.ts b/dist/languages/uk.ts index 7862915790..a270cff802 100644 --- a/dist/languages/uk.ts +++ b/dist/languages/uk.ts @@ -1154,18 +1154,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. Вмикає можливість динамічного стану введення вершин для кращих якості й продуктивності. - - - Descriptor Indexing - Індексування дескрипторів - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Покращує взаємодію з текстурами й буфером, а також шар перетворення Maxwell. -Це розширення підтримують деякі пристрої з Vulkan 1.1+ та всі з 1.2+. - Sample Shading diff --git a/dist/languages/vi.ts b/dist/languages/vi.ts index 13f3690e85..acf78ca01a 100644 --- a/dist/languages/vi.ts +++ b/dist/languages/vi.ts @@ -1096,17 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts index c9e5c1f6c0..692654ed70 100644 --- a/dist/languages/vi_VN.ts +++ b/dist/languages/vi_VN.ts @@ -1096,18 +1096,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Cải thiện việc xử lý texture và bộ đệm buffer, cũng như lớp dịch Maxwell. -Một số thiết bị hỗ trợ Vulkan 1.1+ và tất cả thiết bị Vulkan 1.2+ đều hỗ trợ tiện ích mở rộng này. - Sample Shading diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts index 6076354268..510a0f97fb 100644 --- a/dist/languages/zh_CN.ts +++ b/dist/languages/zh_CN.ts @@ -1152,18 +1152,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. 开启顶点输入动态状态功能来获得更好的质量和性能。 - - - Descriptor Indexing - 描述符索引 - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - 改进了纹理和缓冲处理以及 Maxwell 翻译层。 -部分 Vulkan 1.1 设备和所有 1.2 设备支持此扩展。 - Sample Shading diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts index a2bb3d29a2..b067fc50d8 100644 --- a/dist/languages/zh_TW.ts +++ b/dist/languages/zh_TW.ts @@ -1126,17 +1126,6 @@ Higher states allow for more features and can increase performance, but may caus Enables vertex input dynamic state feature for better quality and performance. - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - Sample Shading diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt index d03a90e2a8..260df40f2f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt @@ -31,7 +31,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { RENDERER_DEBUG("debug"), RENDERER_PATCH_OLD_QCOM_DRIVERS("patch_old_qcom_drivers"), RENDERER_VERTEX_INPUT_DYNAMIC_STATE("vertex_input_dynamic_state"), - RENDERER_DESCRIPTOR_INDEXING("descriptor_indexing"), RENDERER_SAMPLE_SHADING("sample_shading"), GPU_UNSWIZZLE_ENABLED("gpu_unswizzle_enabled"), PICTURE_IN_PICTURE("picture_in_picture"), diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index 95d6d52b5e..0408711449 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -148,13 +148,6 @@ abstract class SettingsItem( descriptionId = R.string.vertex_input_dynamic_state_description ) ) - put( - SwitchSetting( - BooleanSetting.RENDERER_DESCRIPTOR_INDEXING, - titleId = R.string.descriptor_indexing, - descriptionId = R.string.descriptor_indexing_description - ) - ) put( SliderSetting( IntSetting.RENDERER_SAMPLE_SHADING, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 53ea56c08a..87cee32323 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -280,7 +280,6 @@ class SettingsFragmentPresenter( add(IntSetting.RENDERER_DYNA_STATE.key) add(BooleanSetting.RENDERER_VERTEX_INPUT_DYNAMIC_STATE.key) - add(BooleanSetting.RENDERER_DESCRIPTOR_INDEXING.key) add(IntSetting.RENDERER_SAMPLE_SHADING.key) add(HeaderSetting(R.string.display)) diff --git a/src/android/app/src/main/res/values-ar/strings.xml b/src/android/app/src/main/res/values-ar/strings.xml index b9037fedab..b258480c9f 100644 --- a/src/android/app/src/main/res/values-ar/strings.xml +++ b/src/android/app/src/main/res/values-ar/strings.xml @@ -525,8 +525,6 @@ معطل حالة ديناميكية لإدخال الرأس يتيح ميزة الحالة الديناميكية لإدخال الرأس لتحسين الجودة والأداء. - فهرسة الوصف - يحسن معالجة النسيج والمخزن المؤقت، بالإضافة إلى طبقة الترجمة Maxwell. مدعوم من بعض وحدات معالجة الرسومات Vulkan 1.1 وجميع وحدات معالجة الرسومات Vulkan 1.2+. تظليل العينة يسمح هذا الخيار بتنفيذ مُظلل الأجزاء لكل عينة في جزء متعدد العينات بدلاً من تنفيذه مرة واحدة لكل جزء. يُحسّن هذا من جودة الرسومات على حساب بعض الأداء. diff --git a/src/android/app/src/main/res/values-ckb/strings.xml b/src/android/app/src/main/res/values-ckb/strings.xml index 80f511af2b..a2d61d6fb5 100644 --- a/src/android/app/src/main/res/values-ckb/strings.xml +++ b/src/android/app/src/main/res/values-ckb/strings.xml @@ -360,8 +360,6 @@ کۆمپایلکردنی شادەرەکان بەشێوەی ناڕێک. ئەمە ڕەنگە کەمکردنەوەی ستەتەر بکات بەڵام لەوانەیە هەڵەش دروست بکات. الحالة الديناميكية الممتدة ناچالاک - فهرسة الواصفات - يحسن معالجة القوام والمخازن المؤقتة، بالإضافة إلى طبقة ترجمة ماكسويل. مدعوم من قبل بعض وحدات معالجة الرسومات التي تدعم فولكان 1.1 وجميع وحدات معالجة الرسومات التي تدعم فولكان 1.2+. پیشاندان ڕێکخستنی شاشە diff --git a/src/android/app/src/main/res/values-cs/strings.xml b/src/android/app/src/main/res/values-cs/strings.xml index ad5530d3d2..40996e26f9 100644 --- a/src/android/app/src/main/res/values-cs/strings.xml +++ b/src/android/app/src/main/res/values-cs/strings.xml @@ -486,8 +486,6 @@ Vypnuto Dynamický stav vstupu vrcholů (Vertex Input) Aktivuje funkci dynamického stavu vstupu vrcholů (Vertex Input Dynamic State) pro lepší kvalitu a výkon. - Indexování deskriptorů - Zlepšuje zpracování textur a bufferů, stejně jako překladovou vrstvu architektury Maxwell. Podporováno některými GPU s API Vulkan 1.1 a všemi GPU s API Vulkan 1.2+. Zobrazení Orientace diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index 4c5c912094..5105783815 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -484,8 +484,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die Deaktiviert Vertex Input Dynamic State Aktiviert die Funktion \"Vertex Input Dynamic State\" für bessere Qualität und Leistung. - Deskriptor-Indizierung - Verbessert die Textur- und Puffer-Verarbeitung sowie die Maxwell-Übersetzungsschicht. Wird von einigen Vulkan 1.1-GPUs und allen Vulkan 1.2+-GPUs unterstützt. Sample Shading Ermöglicht es dem Fragment-Shader, in einem Multisample-Fragment pro Sample anstatt einmal pro Fragment ausgeführt zu werden. Verbessert die Grafikqualität auf Kosten der Leistung. diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index 1dc1724889..f5a8f1dfd4 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -519,8 +519,6 @@ Desactivado Estado dinámico de entrada de vértices Activa la función de estado dinámico de entrada de vértices para una mejor calidad y rendimiento. - Indexación del descriptor - Mejora la textura y el manejo del búfer, así como la capa de traducción Maxwell. Compatible con algunas GPU Vulkan 1.1 y todas las GPU Vulkan 1.2+. Muestreo de sombreado Permite que el sombreador de fragmentos se ejecute por muestra en un fragmento multimuestreado, en lugar de una sola vez por fragmento. Mejora la calidad de los gráficos a coste de algo de rendimiento. diff --git a/src/android/app/src/main/res/values-fa/strings.xml b/src/android/app/src/main/res/values-fa/strings.xml index 9412b13f67..e5c6c33225 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -71,8 +71,6 @@ حذف فرمور آن را از دستگاه پاک می‌کند و ممکن است بر سازگاری بازی‌ها تأثیر بگذارد در حال حذف فرمور فرمور با موفقیت حذف شد - نمایه‌سازی توصیفگر - مدیریت بافت‌ها و بافرها و همچنین لایه ترجمه ماکسول را بهبود می‌بخشد. توسط برخی کارت‌های گرافیک ولکان 1.1 و تمام کارت‌های گرافیک ولکان 1.2+ پشتیبانی می‌شود فاکتور اورکلاک GPU برای حداکثر عملکرد از 128 و برای حداکثر وفاداری گرافیکی از 512 استفاده کنید. متوسط (256) diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index b99e6f1613..b2abd184e5 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -471,8 +471,6 @@ Désactivé État dynamique d\'entrée de sommet Active la fonctionnalité d\'état dynamique des entrées de sommets pour une meilleure qualité et de meilleures performances. - Indexation des descripteurs - Améliore la gestion des textures et des tampons, ainsi que la couche de traduction Maxwell. Pris en charge par certains GPU Vulkan 1.1 et tous les GPU Vulkan 1.2+. Affichage Orientation diff --git a/src/android/app/src/main/res/values-he/strings.xml b/src/android/app/src/main/res/values-he/strings.xml index 0bb25bff20..8995c5c1eb 100644 --- a/src/android/app/src/main/res/values-he/strings.xml +++ b/src/android/app/src/main/res/values-he/strings.xml @@ -390,8 +390,6 @@ מקמפל שיידרים באופן אסינכרוני. זה עשוי להפחית קפיצות אך גם עלול לגרום לתקלות גרפיות. מצב דינמי מורחב מושבת - אינדוקס תיאורים - משפר טיפול במרקמים ומאגרים, כמו גם בשכבת התרגום של Maxwell. נתמך בחלק מכרטיסי ה-Vulkan 1.1 ובכל כרטיסי ה-Vulkan 1.2+. תצוגה כיוון diff --git a/src/android/app/src/main/res/values-hu/strings.xml b/src/android/app/src/main/res/values-hu/strings.xml index 5a3eeeb40e..f1d52b7026 100644 --- a/src/android/app/src/main/res/values-hu/strings.xml +++ b/src/android/app/src/main/res/values-hu/strings.xml @@ -379,8 +379,6 @@ A shaderek aszinkron fordítása. Csökkentheti a belassulásokat, de hibákat is okozhat. Kiterjesztett Dinamikus Állapot Letiltva - Deskriptor Indexelés - Javítja a textúrák és pufferek kezelését, valamint a Maxwell fordítási réteget. Néhány Vulkan 1.1 GPU és minden Vulkan 1.2+ GPU támogatja. Kijelző Orientáció diff --git a/src/android/app/src/main/res/values-id/strings.xml b/src/android/app/src/main/res/values-id/strings.xml index 64bf270bbb..61c361a86a 100644 --- a/src/android/app/src/main/res/values-id/strings.xml +++ b/src/android/app/src/main/res/values-id/strings.xml @@ -411,8 +411,6 @@ Kompilasi shader secara asinkron. Ini dapat mengurangi lag tetapi juga dapat menyebabkan glitch. Status Dinamis Ekstensi Dinonaktifkan - Pengindeks Deskriptor - Meningkatkan penanganan tekstur dan buffer, serta lapisan terjemahan Maxwell. Didukung oleh beberapa GPU Vulkan 1.1 dan semua GPU Vulkan 1.2+. Tampilan Orientasi diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index 8d5203954d..15ad312407 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -418,8 +418,6 @@ Compila gli shader in modo asincrono. Può ridurre gli scatti, ma può anche causare glitch grafici. Stato dinamico esteso Disabilitato - Indicizzazione descrittori - Migliora la gestione di texture e buffer, nonché il livello di traduzione Maxwell. Supportato da alcune GPU Vulkan 1.1 e tutte le GPU Vulkan 1.2+. Schermo Orientamento diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index 3a89b40bf6..944db6a097 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -377,8 +377,6 @@ シェーダーを非同期でコンパイルします。これによりカクつきが減る可能性がありますが、グラフィックの不具合が発生する場合もあります。 拡張ダイナミックステート 無効 - ディスクリプタインデキシング - テクスチャとバッファの処理、およびMaxwell翻訳レイヤーを改善します。一部のVulkan 1.1 GPUとすべてのVulkan 1.2+ GPUでサポートされています。 ディスプレイ 画面の向き diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index d01401d073..4ee731205b 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -377,8 +377,6 @@ 셰이더를 비동기적으로 컴파일합니다. 이로 인해 끊김 현상이 줄어들 수 있지만 그래픽 오류가 발생할 수도 있습니다. 확장 동적 상태 비활성화됨 - 디스크립터 인덱싱 - 텍스처 및 버퍼 처리와 Maxwell 변환 레이어를 개선합니다. 일부 Vulkan 1.1 GPU 및 모든 Vulkan 1.2+ GPU에서 지원됩니다. 디스플레이 화면 방향 diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index f33b0422f3..100525ec8f 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -360,8 +360,6 @@ Kompilerer shadere asynkront. Dette kan redusere rykk, men kan også forårsake grafiske feil. Utvidet dynamisk tilstand Deaktivert - Beskrivelsesindeksering - Forbedrer tekstur- og bufferhåndtering, samt Maxwell-oversettelseslaget. Støttes av noen Vulkan 1.1 GPU-er og alle Vulkan 1.2+ GPU-er. Skjerm Orientering diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index 69db651a60..700ae6464e 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -484,8 +484,6 @@ Wyłączone Dynamiczny stan wejścia wierzchołków Włącza funkcję dynamicznego stanu wejścia wierzchołków, poprawiając jakość i wydajność. - Indeksowanie deskryptorów - Poprawia obsługę tekstur i buforów oraz warstwę tłumaczenia Maxwell. Obsługiwane przez niektóre GPU Vulkan 1.1 i wszystkie GPU Vulkan 1.2+. Cieniowanie próbkowane Pozwala uruchamiać shader fragmentów dla każdej próbki w wielopróbkowanym fragmencie zamiast raz na fragment. Poprawia jakość grafiki kosztem części wydajności. diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index 480b2c953a..61ed535eeb 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -467,8 +467,6 @@ Desativado Vertex Input Dynamic State Ativa o recurso de vertex input dynamic state para melhor qualidade e desempenho. - Descriptor Indexing - Indexação de Descritores: Melhora o processamento de texturas e buffers, assim como a camada de tradução Maxwell. Suportado por algumas GPUs Vulkan 1.1 e todas as GPUs Vulkan 1.2 ou superiores. Tela Orientação diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 5b66555953..049568108c 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -383,8 +383,6 @@ Compila shaders de forma assíncrona. Isto pode reduzir engasgadelas, mas também pode introduzir falhas gráficas. Estado Dinâmico Estendido Desativado - Indexação de descritores - Melhora o tratamento de texturas e buffers, assim como a camada de tradução Maxwell. Suportado por algumas GPUs Vulkan 1.1 e todas Vulkan 1.2+. Ecrã Oriantação diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index 9627bcd6a0..ae7a425eb7 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -520,8 +520,6 @@ Отключено Динамическое состояние ввода вершин Включает функцию динамического состояния ввода вершин для повышения качества и производительности - Индексирование дескрипторов - Улучшает обработку текстур и буферов, а также слой перевода Maxwell. Поддерживается некоторыми ГПУ Vulkan 1.1 и всеми ГПУ Vulkan 1.2+. Сэмпловое затенение Позволяет шейдеру фрагментов выполняться для каждого сэмпла в многосэмпловом фрагменте, а не один раз на фрагмент. Улучшает качество графики ценой некоторого падения производительности. diff --git a/src/android/app/src/main/res/values-sr/strings.xml b/src/android/app/src/main/res/values-sr/strings.xml index daa9c99cea..69c2994e21 100644 --- a/src/android/app/src/main/res/values-sr/strings.xml +++ b/src/android/app/src/main/res/values-sr/strings.xml @@ -382,8 +382,6 @@ Саставља схадера асинхроно. Ово може умањити затезаче, али могу такође да уведе пропусте. Проширена динамичка држава Искључено - Индексирање дескриптора - Побољшава текстуру и руковање међуспремника, као и преводилачки слој Маквелл. Подржани од стране неких Вулкана 1.1 ГПУ-а и сви Вулкан 1.2+ ГПУ. Приказ Оријентација 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 6ba5adced2..b27de2b36c 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -521,8 +521,6 @@ Вимкнено Динамічний стан введення вершин Вмикає можливість динамічного стану введення вершин для кращих якості й продуктивності. - Індексація дескрипторів - Покращує обробку текстур та буферів, а також шар перекладу Maxwell. Підтримується деякими GPU Vulkan 1.1 та всіма GPU Vulkan 1.2+. Простий шейдинг Дозволяє виконувати фрагмент шейдера для кожного зразка в багатозразковому фрагменті замість одного разу для кожного фрагмента. Покращує якість графікі ціною втрати продуктивності. diff --git a/src/android/app/src/main/res/values-vi/strings.xml b/src/android/app/src/main/res/values-vi/strings.xml index 35c67a5d79..b919eca7d5 100644 --- a/src/android/app/src/main/res/values-vi/strings.xml +++ b/src/android/app/src/main/res/values-vi/strings.xml @@ -358,8 +358,6 @@ Biên dịch shader không đồng bộ. Điều này có thể giảm giật lag nhưng cũng có thể gây ra lỗi đồ họa. Trạng thái động mở rộng Đã tắt - Lập chỉ mục bộ mô tả - Cải thiện xử lý kết cấu và bộ đệm, cũng như lớp dịch Maxwell. Được hỗ trợ bởi một số GPU Vulkan 1.1 và tất cả GPU Vulkan 1.2+. Hiển thị Hướng màn hình diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index 61f335d51c..eb20f3079b 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -514,8 +514,6 @@ 已禁用 顶点输入动态状态 开启顶点输入动态状态功能来获得更好的质量和性能。 - 描述符索引 - 改进纹理和缓冲区处理以及Maxwell转换层。部分Vulkan 1.1 GPU和所有Vulkan 1.2+ GPU支持。 采样着色 允许片段着色器在多采样片段中每个样本执行一次,而不是每个片段执行一次。以提高性能为代价改善图形质量。 diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index a336d5b66a..f1f7cf4166 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -470,8 +470,6 @@ 已停用 頂點輸入動態狀態 啟用頂點輸入動態狀態以取得更佳的品質及性能 - 描述符索引 - 改進紋理和緩衝區處理以及Maxwell轉換層。部分Vulkan 1.1 GPU和所有Vulkan 1.2+ GPU支援。 顯示 方向 diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 119b942efe..d571436180 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -531,8 +531,6 @@ Disabled Vertex Input Dynamic State Enables vertex input dynamic state feature for better quality and performance. - Descriptor Indexing - Improves texture and buffer handling, as well as the Maxwell translation layer. Supported by some Vulkan 1.1 GPUs and all Vulkan 1.2+ GPUs. Sample Shading Allows the fragment shader to execute per sample in a multi-sampled fragment instead once per fragment. Improves graphics quality at the cost of some performance. diff --git a/src/common/settings.h b/src/common/settings.h index 8b70a82470..b5aee24757 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -606,7 +606,6 @@ struct Values { true, #endif "vertex_input_dynamic_state", Category::RendererExtensions}; - SwitchableSetting descriptor_indexing{linkage, false, "descriptor_indexing", Category::RendererExtensions}; Setting renderer_debug{linkage, false, "debug", Category::RendererDebug}; Setting renderer_shader_feedback{linkage, false, "shader_feedback", diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp index 0f1ff1965c..5e0c0d8b44 100644 --- a/src/qt_common/config/shared_translation.cpp +++ b/src/qt_common/config/shared_translation.cpp @@ -286,10 +286,6 @@ std::unique_ptr InitializeTranslations(QObject* parent) { INSERT(Settings, vertex_input_dynamic_state, tr("Vertex Input Dynamic State"), tr("Enables vertex input dynamic state feature for better quality and performance.")); - INSERT(Settings, descriptor_indexing, tr("Descriptor Indexing"), - tr("Improves texture & buffer handling and the Maxwell translation layer.\n" - "Some Vulkan 1.1+ and all 1.2+ devices support this extension.")); - INSERT( Settings, sample_shading, tr("Sample Shading"), tr("Allows the fragment shader to execute per sample in a multi-sampled fragment " diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index ec6f54da22..5075a79bcd 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -465,18 +465,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR first_next = &diagnostics_nv; } - VkPhysicalDeviceDescriptorIndexingFeaturesEXT descriptor_indexing{ - .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, - .pNext = use_diagnostics_nv ? static_cast(&diagnostics_nv) : static_cast(&features2), - .shaderSampledImageArrayNonUniformIndexing = VK_TRUE, - .descriptorBindingPartiallyBound = VK_TRUE, - .descriptorBindingVariableDescriptorCount = VK_TRUE, - }; - - if (extensions.descriptor_indexing && Settings::values.descriptor_indexing.GetValue()) { - first_next = &descriptor_indexing; - } - is_blit_depth24_stencil8_supported = TestDepthStencilBlits(VK_FORMAT_D24_UNORM_S8_UINT); is_blit_depth32_stencil8_supported = TestDepthStencilBlits(VK_FORMAT_D32_SFLOAT_S8_UINT); is_optimal_astc_supported = ComputeIsOptimalAstcSupported(); diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index fd189b19b6..ad9d53ce16 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -102,7 +102,6 @@ VK_DEFINE_HANDLE(VmaAllocator) EXTENSION(NV, GEOMETRY_SHADER_PASSTHROUGH, geometry_shader_passthrough) \ EXTENSION(NV, VIEWPORT_ARRAY2, viewport_array2) \ EXTENSION(NV, VIEWPORT_SWIZZLE, viewport_swizzle) \ - EXTENSION(EXT, DESCRIPTOR_INDEXING, descriptor_indexing) \ EXTENSION(EXT, FILTER_CUBIC, filter_cubic) \ EXTENSION(IMG, FILTER_CUBIC, filter_cubic_img) \ EXTENSION(QCOM, FILTER_CUBIC_WEIGHTS, filter_cubic_weights) @@ -440,11 +439,6 @@ public: return extensions.viewport_array2; } - /// Returns true if the device supporst VK_EXT_DESCRIPTOR_INDEXING - bool isExtDescriptorIndexingSupported() const { - return extensions.descriptor_indexing; - } - /// Returns true if the device supports VK_NV_geometry_shader_passthrough. bool IsNvGeometryShaderPassthroughSupported() const { return extensions.geometry_shader_passthrough; From 83a0991c1732b2581a1e5f3b4f458e0028359db3 Mon Sep 17 00:00:00 2001 From: CamilleLaVey Date: Tue, 7 Apr 2026 22:47:13 -0400 Subject: [PATCH 7/7] Fix license headers --- src/video_core/renderer_vulkan/fixed_pipeline_state.cpp | 2 +- src/video_core/renderer_vulkan/fixed_pipeline_state.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp b/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp index d129cf8cd5..866b721a84 100644 --- a/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp +++ b/src/video_core/renderer_vulkan/fixed_pipeline_state.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project diff --git a/src/video_core/renderer_vulkan/fixed_pipeline_state.h b/src/video_core/renderer_vulkan/fixed_pipeline_state.h index a05f3e1c5b..ffc91e9a55 100644 --- a/src/video_core/renderer_vulkan/fixed_pipeline_state.h +++ b/src/video_core/renderer_vulkan/fixed_pipeline_state.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2019 yuzu Emulator Project