[vulkan] 1st Vulkan Global Maintenance (#3839)
Some checks are pending
tx-src / sources (push) Waiting to run
Check Strings / check-strings (push) Waiting to run

This pr aims to make a first step into giving Eden's Vulkan backend maintenance with better formatting, understanding and reduce the redundancy between some wrong implementations:

-> ProvokingVertex: Has been reworked completely, now the wiring to ExtendedDynamicState3 (ProvokingVertexMode) it works safe, the gating of the extension no longer requires user enabling on UI, it will be enabled automatically based on what features of the extension are available on driver, depending if first or last mode are available and also will be properly set under TrasformFeedback operations; this way we're gonna ensure all drivers, including Android stock drivers on QCOM, Mali and other mobile vendors drivers access correctly to the extension, fixing some graphical issues (flickering textures or wrong sccisors on vertex that required first mode) generated by the missing first mode handling or the proper clearing on pipeline state. This change will increase/ decrease slightly the performance on some games that changes dynamically between first and last modes, but will also ensure a clear path to GPU to use resources smartly, reducing VRAM consumption in PC and MEM/GPU percentage of use on Android (marginal to 5 - 8% approx).

-> Removal VK_EXT_multi_draw: It has passed some months since the first try to implement this feature, but wasn't completed so functionality was null to negative, taking space in source and using small CPU cicles for initialization during device creation that reduced CPU effectiveness by 2 - 5%, aside that, after reviewing the situation of formally introducing handling for multidraws to reduce the floods of constants draw calls into 1 per batch, seems to not pay the overhead when the multidraw capacity is less or equal to 1, aside that, for the time being batching multidraws will introduce indirections on each batch of command draws, that graphical issues will appear and reducing performance can happen, something it was gonna solve. For the time being it's discarded, but, may be analyzed the chance to introduce it properly in a later date.

-> Removal VK_EXT_indexing_descriptor: Currently the implementation of this feature was partial, with not proper handling on layouts; just the initial checks on device creation and chained up to the pNext feature, currently this extension will require a buffer cache and texture cache rework to set layouts and reduce the amount of use of descriptor into making it a less expensive cost effective, aside that to generate a path for the Bindless Texture and Bindless Buffer, allowing to track state of textures in runtime and ensuring the state of some compiled shaders doesn't change if it's no needed, among other benefits, besides that, enabling this feature was only generating innecessary checks on GPU, so consumption would be higher than it should be.

-> Removal of VK_EXT_swapchain_maintenance1: The use of this feature was really conditional to certain support on newer drivers and cards, which wasn't available for all platforms, I concluded that if the support for this instance wasn't really there, the cost effective between the try to initialize it and running it, won't be good as when it didn't exist on our Vulkan device, with also the constant factor of not being completely implemented, right now I'm aiming to reduce the complexity on Vulkan side to keep it as simple as it could for a future video_core rework, which may start somewhere these weeks.

-> Refined the Maintenance features: Meawhile this features are usually inherent to Vulkan core functionality, sometimes drivers doesn't expose them well, which leads to Eden run Vulkan without really noticing the existence of maintenance features on driver to improve stability, so we're tied to declare them and load them when a device creation starts by asking if driver supports and which, currently 1 - 5 are core maintenance features, meanwhile the 7 - 9 are more experimental and not being available everywhere, so right now to help drivers give attention to this features we not only load them, but also calculate with features bits which features inside Maintenance5 are available to use, that was the initial purpose, but we weren't using the full potential of the extension; I made cleaned part of the unneeded log code for the initialization of this Maintenance5 and it's feature flags, but also making an operation to sanitize depth/ stencil when One is not available in swizzle operations, making it easier to draw it; it's also needed to mention that Maintenance9 was removed from source code until we can have better handling on Arrays2D, aside that, the use of the extension was really conditional to certain drivers being capable of use it, so I remove it.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3839
Co-authored-by: CamilleLaVey <camillelavey99@gmail.com>
Co-committed-by: CamilleLaVey <camillelavey99@gmail.com>
This commit is contained in:
CamilleLaVey 2026-04-08 23:46:50 +02:00 committed by crueter
parent 1b4a79c7ee
commit 3d0eb4b5d7
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
68 changed files with 134 additions and 960 deletions

26
dist/languages/ar.ts vendored
View file

@ -1136,30 +1136,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation>يتيح ميزة الحالة الديناميكية لإدخال الرأس لتحسين الجودة والأداء.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation>استفزاز قمة الرأس</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation>يُحسّن الإضاءة ومعالجة الرؤوس في بعض الألعاب.
تدعم هذه الإضافة أجهزة Vulkan 1.0+ فقط.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation>فهرسة الوصف</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>يُحسّن معالجة الملمس والذاكرة المؤقتة وطبقة ترجمة ماكسويل.
تدعم بعض أجهزة Vulkan الإصدار 1.1+ وجميع أجهزة 1.2+ هذه الإضافة.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10632,4 +10608,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation>وصل إجمالي زمن التشغيل إلى الحد الأقصى.</translation>
</message>
</context>
</TS>
</TS>

24
dist/languages/ca.ts vendored
View file

@ -1084,28 +1084,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10504,4 +10482,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

24
dist/languages/cs.ts vendored
View file

@ -1084,28 +1084,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10492,4 +10470,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

24
dist/languages/da.ts vendored
View file

@ -1086,28 +1086,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10486,4 +10464,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

24
dist/languages/de.ts vendored
View file

@ -1094,28 +1094,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10516,4 +10494,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

24
dist/languages/el.ts vendored
View file

@ -1086,28 +1086,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10482,4 +10460,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

26
dist/languages/es.ts vendored
View file

@ -1141,30 +1141,6 @@ Números más altos permiten úsar más funciones y pueden aumentar el rendimien
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation>Activa la función de estado dinámico de entrada de vértices para una mejor calidad y rendimiento.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation>Vértice provocante</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation>Indexación del descriptor</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10646,4 +10622,4 @@ Seleccionando &quot;Desde Eden&quot;, los datos de guardado anteriores alojados
<translation>Se ha alcanzado el límite total de tiempo de juego.</translation>
</message>
</context>
</TS>
</TS>

24
dist/languages/fi.ts vendored
View file

@ -1084,28 +1084,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10453,4 +10431,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

26
dist/languages/fr.ts vendored
View file

@ -1132,30 +1132,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation>Vertex provoquant</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation>Indexation des descripteurs</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10593,4 +10569,4 @@ En sélectionnant « Depuis Eden », les données de sauvegarde précédemment s
<translation>Le temps de jeu total a atteint le maximum.</translation>
</message>
</context>
</TS>
</TS>

24
dist/languages/hu.ts vendored
View file

@ -1092,28 +1092,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10487,4 +10465,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

24
dist/languages/id.ts vendored
View file

@ -1107,28 +1107,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10508,4 +10486,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

26
dist/languages/it.ts vendored
View file

@ -1136,30 +1136,6 @@ Gli stati più alti consentono più funzionalità e possono migliorare le presta
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation>Provoking Vertex</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation>Migliora l&apos;illuminazione e la gestione dei vertici in alcuni giochi.
Solo i dispositivi con Vulkan 1.0+ supportano quest&apos;estensione.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation>Indicizzazione descrittori</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>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&apos;estensione.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10625,4 +10601,4 @@ Selezionando &quot;Da Eden&quot;, i dati di salvataggio pre-esistenti in Ryujinx
<translation>Il tempo di gioco totale ha raggiunto il limite massimo.</translation>
</message>
</context>
</TS>
</TS>

View file

@ -1089,28 +1089,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10510,4 +10488,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

View file

@ -1086,28 +1086,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10508,4 +10486,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

24
dist/languages/nb.ts vendored
View file

@ -1086,28 +1086,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10509,4 +10487,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

24
dist/languages/nl.ts vendored
View file

@ -1095,28 +1095,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10505,4 +10483,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

26
dist/languages/pl.ts vendored
View file

@ -1135,30 +1135,6 @@ Wyższe poziomy pozwalają na użycie większej liczby funkcji i mogą zwiększy
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation>Włącza funkcję dynamicznego stanu wejścia wierzchołków, poprawiając jakość i wydajność.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation>Wierzchołek prowokujący</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation>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+.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation>Indeksowanie deskryptorów</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10627,4 +10603,4 @@ Wybierając „Z Eden”, dotychczasowe dane zapisu przechowywane w Ryujinx zost
<translation>Łączny czas gry osiągnął maksimum.</translation>
</message>
</context>
</TS>
</TS>

View file

@ -1119,28 +1119,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10542,4 +10520,4 @@ Ao selecionar &quot;Do Eden&quot;, os dados salvos anteriores armazenados no Ryu
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

View file

@ -1094,28 +1094,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10508,4 +10486,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

View file

@ -1141,30 +1141,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation>Включает функцию динамического состояния вершинного ввода для повышения качества и производительности.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation>Определяющая вершина</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation>Улучшает освещение и обработку вершин в определенных играх.
Поддерживаются устройства только с Vulkan 1.0+.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation>Индексирование дескрипторов</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>Улучшает текстуру и обработку буфера и уровень трансляции Maxwell.
Некоторые устройства Vulkan 1.1+ и все 1.2+ поддерживают это расширение.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10639,4 +10615,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation>Общее максимальное игровое время.</translation>
</message>
</context>
</TS>
</TS>

26
dist/languages/sv.ts vendored
View file

@ -1149,30 +1149,6 @@ Högre tillstånd möjliggör fler funktioner och kan öka prestandan, men kan o
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation>Aktiverar funktionen för dynamiskt tillstånd för vertexinmatning för bättre kvalitet och prestanda.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation>Provocerande toppunkt</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation>Förbättrar belysning och vertexhantering i vissa spel.
Endast enheter med Vulkan 1.0+ stöder denna tilläggsfunktion.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation>Indexering av deskriptorer</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>Förbättrar textur- och bufferthantering samt Maxwell-översättningslagret.
Vissa Vulkan 1.1+ och alla 1.2+ enheter stöder detta tillägg.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10647,4 +10623,4 @@ Om du väljer ”Från Eden” tas tidigare sparade data bort som lagrats i Ryuj
<translation>Maximal total speltid uppnådd.</translation>
</message>
</context>
</TS>
</TS>

View file

@ -1103,28 +1103,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation>Daha iyi kalite ve performans için Vertex dinamik durum özelliğini etkinleştirir.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation>Provoking Vertex</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation>Bazı oyunlarda aydınlatmayı ve köşe işlemeyi iyileştirir. Bu uzantıyı yalnızca Vulkan 1.0 ve üzeri cihazlar destekler.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation>Tanımlayıcı İndeksleme</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>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.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10536,4 +10514,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

26
dist/languages/uk.ts vendored
View file

@ -1144,30 +1144,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation>Вмикає можливість динамічного стану введення вершин для кращих якості й продуктивності.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation>Провокативна вершина</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation>Покращує освітлення та взаємодію з вершинами у деяких іграх.
Це розширення підтримують лише пристрої з Vulkan 1.0+.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation>Індексування дескрипторів</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>Покращує взаємодію з текстурами й буфером, а також шар перетворення Maxwell.
Це розширення підтримують деякі пристрої з Vulkan 1.1+ та всі з 1.2+.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10647,4 +10623,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation>Загальний награний час досягнув максимуму.</translation>
</message>
</context>
</TS>
</TS>

24
dist/languages/vi.ts vendored
View file

@ -1086,28 +1086,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10508,4 +10486,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

View file

@ -1086,29 +1086,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation>Cải thiện việc xử texture bộ đm buffer, cũng như lớp dịch Maxwell.
Một số thiết bị hỗ trợ Vulkan 1.1+ tất cả thiết bị Vulkan 1.2+ đu hỗ trợ tiện ích mở rộng này.</translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10509,4 +10486,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

View file

@ -1142,29 +1142,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation></translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation></translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation> Vulkan 1.0 </translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation></translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation> Maxwell
Vulkan 1.1 1.2 </translation>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10618,4 +10595,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation></translation>
</message>
</context>
</TS>
</TS>

View file

@ -1116,28 +1116,6 @@ Higher states allow for more features and can increase performance, but may caus
<source>Enables vertex input dynamic state feature for better quality and performance.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="289"/>
<source>Provoking Vertex</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="290"/>
<source>Improves lighting and vertex handling in some games.
Only Vulkan 1.0+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="293"/>
<source>Descriptor Indexing</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="294"/>
<source>Improves texture &amp; buffer handling and the Maxwell translation layer.
Some Vulkan 1.1+ and all 1.2+ devices support this extension.</source>
<translation type="unfinished"/>
</message>
<message>
<location filename="../../src/qt_common/config/shared_translation.cpp" line="298"/>
<source>Sample Shading</source>
@ -10536,4 +10514,4 @@ By selecting &quot;From Eden&quot;, previous save data stored in Ryujinx will be
<translation type="unfinished"/>
</message>
</context>
</TS>
</TS>

View file

@ -33,8 +33,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"),
PICTURE_IN_PICTURE("picture_in_picture"),

View file

@ -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,
@ -155,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,

View file

@ -302,8 +302,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)
add(HeaderSetting(R.string.display))

View file

@ -523,10 +523,6 @@
<string name="disabled">معطل</string>
<string name="vertex_input_dynamic_state">حالة ديناميكية لإدخال الرأس</string>
<string name="vertex_input_dynamic_state_description">يتيح ميزة الحالة الديناميكية لإدخال الرأس لتحسين الجودة والأداء.</string>
<string name="provoking_vertex">الرأس المثير</string>
<string name="provoking_vertex_description">يحسن الإضاءة ومعالجة الرؤوس في بعض الألعاب. مدعوم فقط على وحدات معالجة الرسومات Vulkan 1.0+.</string>
<string name="descriptor_indexing">فهرسة الوصف</string>
<string name="descriptor_indexing_description">يحسن معالجة النسيج والمخزن المؤقت، بالإضافة إلى طبقة الترجمة Maxwell. مدعوم من بعض وحدات معالجة الرسومات Vulkan 1.1 وجميع وحدات معالجة الرسومات Vulkan 1.2+.</string>
<string name="sample_shading_fraction">تظليل العينة</string>
<string name="sample_shading_fraction_description">يسمح هذا الخيار بتنفيذ مُظلل الأجزاء لكل عينة في جزء متعدد العينات بدلاً من تنفيذه مرة واحدة لكل جزء. يُحسّن هذا من جودة الرسومات على حساب بعض الأداء.</string>

View file

@ -358,10 +358,6 @@
<string name="renderer_asynchronous_shaders_description">کۆمپایلکردنی شادەرەکان بەشێوەی ناڕێک. ئەمە ڕەنگە کەمکردنەوەی ستەتەر بکات بەڵام لەوانەیە هەڵەش دروست بکات.</string>
<string name="dyna_state">الحالة الديناميكية الممتدة</string>
<string name="disabled">ناچالاک</string>
<string name="provoking_vertex">الرأس المثير</string>
<string name="provoking_vertex_description">يحسن الإضاءة ومعالجة الرؤوس في بعض الألعاب. مدعوم فقط على وحدات معالجة الرسومات التي تدعم فولكان 1.0+.</string>
<string name="descriptor_indexing">فهرسة الواصفات</string>
<string name="descriptor_indexing_description">يحسن معالجة القوام والمخازن المؤقتة، بالإضافة إلى طبقة ترجمة ماكسويل. مدعوم من قبل بعض وحدات معالجة الرسومات التي تدعم فولكان 1.1 وجميع وحدات معالجة الرسومات التي تدعم فولكان 1.2+.</string>
<string name="display">پیشاندان</string>
<string name="renderer_screen_layout">ڕێکخستنی شاشە</string>

View file

@ -484,10 +484,6 @@
<string name="disabled">Vypnuto</string>
<string name="vertex_input_dynamic_state">Dynamický stav vstupu vrcholů (Vertex Input)</string>
<string name="vertex_input_dynamic_state_description">Aktivuje funkci dynamického stavu vstupu vrcholů (Vertex Input Dynamic State) pro lepší kvalitu a výkon.</string>
<string name="provoking_vertex">Určující vrchol</string>
<string name="provoking_vertex_description">Zlepšuje osvětlení a zpracování vrcholů v některých hrách. Podporováno pouze na GPU s API Vulkan 1.0+.</string>
<string name="descriptor_indexing">Indexování deskriptorů</string>
<string name="descriptor_indexing_description">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+.</string>
<string name="display">Zobrazení</string>
<string name="renderer_screen_layout">Orientace</string>

View file

@ -482,10 +482,6 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
<string name="disabled">Deaktiviert</string>
<string name="vertex_input_dynamic_state">Vertex Input Dynamic State</string>
<string name="vertex_input_dynamic_state_description">Aktiviert die Funktion \"Vertex Input Dynamic State\" für bessere Qualität und Leistung.</string>
<string name="provoking_vertex">Provokanter Vertex</string>
<string name="provoking_vertex_description">Verbessert die Beleuchtung und die Vertex-Verarbeitung in einigen Spielen. Wird nur von GPUs mit Vulkan 1.0+ unterstützt.</string>
<string name="descriptor_indexing">Deskriptor-Indizierung</string>
<string name="descriptor_indexing_description">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.</string>
<string name="sample_shading_fraction">Sample Shading</string>
<string name="sample_shading_fraction_description">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.</string>

View file

@ -517,10 +517,6 @@
<string name="disabled">Desactivado</string>
<string name="vertex_input_dynamic_state">Estado dinámico de entrada de vértices</string>
<string name="vertex_input_dynamic_state_description">Activa la función de estado dinámico de entrada de vértices para una mejor calidad y rendimiento.</string>
<string name="provoking_vertex">Vértice provocante</string>
<string name="provoking_vertex_description">Mejora la iluminación y el manejo de vértices en ciertos juegos. Solo es compatible con las GPU Vulkan 1.0+.</string>
<string name="descriptor_indexing">Indexación del descriptor</string>
<string name="descriptor_indexing_description">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+.</string>
<string name="sample_shading_fraction">Muestreo de sombreado</string>
<string name="sample_shading_fraction_description">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.</string>

View file

@ -71,10 +71,6 @@
<string name="uninstall_firmware_description">حذف فرمور آن را از دستگاه پاک می‌کند و ممکن است بر سازگاری بازی‌ها تأثیر بگذارد</string>
<string name="firmware_uninstalling">در حال حذف فرمور</string>
<string name="firmware_uninstalled_success">فرمور با موفقیت حذف شد</string>
<string name="provoking_vertex">رأس تحریک‌کننده</string>
<string name="provoking_vertex_description">نورپردازی و مدیریت رأس را در برخی بازی‌ها بهبود می‌بخشد. فقط در کارت‌های گرافیک با پشتیبانی از ولکان 1.0+ قابل استفاده است</string>
<string name="descriptor_indexing">نمایه‌سازی توصیفگر</string>
<string name="descriptor_indexing_description">مدیریت بافت‌ها و بافرها و همچنین لایه ترجمه ماکسول را بهبود می‌بخشد. توسط برخی کارت‌های گرافیک ولکان 1.1 و تمام کارت‌های گرافیک ولکان 1.2+ پشتیبانی می‌شود</string>
<string name="fast_gpu_time">فاکتور اورکلاک GPU</string>
<string name="fast_gpu_time_description">برای حداکثر عملکرد از 128 و برای حداکثر وفاداری گرافیکی از 512 استفاده کنید.</string>
<string name="fast_gpu_medium">متوسط (256)</string>

View file

@ -483,10 +483,6 @@
<string name="disabled">Désactivé</string>
<string name="vertex_input_dynamic_state">État dynamique d\'entrée de sommet</string>
<string name="vertex_input_dynamic_state_description">Active la fonctionnalité d\'état dynamique des entrées de sommets pour une meilleure qualité et de meilleures performances.</string>
<string name="provoking_vertex">Provoque des Vertex</string>
<string name="provoking_vertex_description">Améliore l`éclairage et la gestion des vertex dans certains jeux. Pris en charge uniquement par les GPU Vulkan 1.0+.</string>
<string name="descriptor_indexing">Indexation des descripteurs</string>
<string name="descriptor_indexing_description">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+.</string>
<string name="display">Affichage</string>
<string name="renderer_screen_layout">Orientation</string>

View file

@ -388,10 +388,6 @@
<string name="renderer_asynchronous_shaders_description">מקמפל שיידרים באופן אסינכרוני. זה עשוי להפחית קפיצות אך גם עלול לגרום לתקלות גרפיות.</string>
<string name="dyna_state">מצב דינמי מורחב</string>
<string name="disabled">מושבת</string>
<string name="provoking_vertex">קודקוד מעורר</string>
<string name="provoking_vertex_description">משפר תאורה וטיפול בקודקודים במשחקים מסוימים. נתמך רק בכרטיסי מסך עם Vulkan 1.0+.</string>
<string name="descriptor_indexing">אינדוקס תיאורים</string>
<string name="descriptor_indexing_description">משפר טיפול במרקמים ומאגרים, כמו גם בשכבת התרגום של Maxwell. נתמך בחלק מכרטיסי ה-Vulkan 1.1 ובכל כרטיסי ה-Vulkan 1.2+.</string>
<string name="display">תצוגה</string>
<string name="renderer_screen_layout">כיוון</string>

View file

@ -377,10 +377,6 @@
<string name="renderer_asynchronous_shaders_description">A shaderek aszinkron fordítása. Csökkentheti a belassulásokat, de hibákat is okozhat.</string>
<string name="dyna_state">Kiterjesztett Dinamikus Állapot</string>
<string name="disabled">Letiltva</string>
<string name="provoking_vertex">Provokáló csúcs</string>
<string name="provoking_vertex_description">Javítja a világítást és a csúcskezelést bizonyos játékokban. Csak Vulkan 1.0+ GPU-kon támogatott.</string>
<string name="descriptor_indexing">Deskriptor Indexelés</string>
<string name="descriptor_indexing_description">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.</string>
<string name="display">Kijelző</string>
<string name="renderer_screen_layout">Orientáció</string>

View file

@ -409,10 +409,6 @@
<string name="renderer_asynchronous_shaders_description">Kompilasi shader secara asinkron. Ini dapat mengurangi lag tetapi juga dapat menyebabkan glitch.</string>
<string name="dyna_state">Status Dinamis Ekstensi</string>
<string name="disabled">Dinonaktifkan</string>
<string name="provoking_vertex">Vertex Provokasi</string>
<string name="provoking_vertex_description">Meningkatkan pencahayaan dan penanganan vertex di beberapa game. Hanya didukung di GPU Vulkan 1.0+.</string>
<string name="descriptor_indexing">Pengindeks Deskriptor</string>
<string name="descriptor_indexing_description">Meningkatkan penanganan tekstur dan buffer, serta lapisan terjemahan Maxwell. Didukung oleh beberapa GPU Vulkan 1.1 dan semua GPU Vulkan 1.2+.</string>
<string name="display">Tampilan</string>
<string name="renderer_screen_layout">Orientasi</string>

View file

@ -416,10 +416,6 @@
<string name="renderer_asynchronous_shaders_description">Compila gli shader in modo asincrono. Può ridurre gli scatti, ma può anche causare glitch grafici.</string>
<string name="dyna_state">Stato dinamico esteso</string>
<string name="disabled">Disabilitato</string>
<string name="provoking_vertex">Vertice provocante</string>
<string name="provoking_vertex_description">Migliora illuminazione e gestione dei vertici in alcuni giochi. Supportato solo su GPU Vulkan 1.0+.</string>
<string name="descriptor_indexing">Indicizzazione descrittori</string>
<string name="descriptor_indexing_description">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+.</string>
<string name="display">Schermo</string>
<string name="renderer_screen_layout">Orientamento</string>

View file

@ -375,10 +375,6 @@
<string name="renderer_asynchronous_shaders_description">シェーダーを非同期でコンパイルします。これによりカクつきが減る可能性がありますが、グラフィックの不具合が発生する場合もあります。</string>
<string name="dyna_state">拡張ダイナミックステート</string>
<string name="disabled">無効</string>
<string name="provoking_vertex">プロボーキング頂点</string>
<string name="provoking_vertex_description">特定のゲームで照明と頂点処理を改善します。Vulkan 1.0+ GPUでのみサポートされています。</string>
<string name="descriptor_indexing">ディスクリプタインデキシング</string>
<string name="descriptor_indexing_description">テクスチャとバッファの処理、およびMaxwell翻訳レイヤーを改善します。一部のVulkan 1.1 GPUとすべてのVulkan 1.2+ GPUでサポートされています。</string>
<string name="display">ディスプレイ</string>
<string name="renderer_screen_layout">画面の向き</string>

View file

@ -375,10 +375,6 @@
<string name="renderer_asynchronous_shaders_description">셰이더를 비동기적으로 컴파일합니다. 이로 인해 끊김 현상이 줄어들 수 있지만 그래픽 오류가 발생할 수도 있습니다.</string>
<string name="dyna_state">확장 동적 상태</string>
<string name="disabled">비활성화됨</string>
<string name="provoking_vertex">프로보킹 버텍스</string>
<string name="provoking_vertex_description">일부 게임에서 조명과 버텍스 처리를 개선합니다. Vulkan 1.0+ GPU에서만 지원됩니다.</string>
<string name="descriptor_indexing">디스크립터 인덱싱</string>
<string name="descriptor_indexing_description">텍스처 및 버퍼 처리와 Maxwell 변환 레이어를 개선합니다. 일부 Vulkan 1.1 GPU 및 모든 Vulkan 1.2+ GPU에서 지원됩니다.</string>
<string name="display">디스플레이</string>
<string name="renderer_screen_layout">화면 방향</string>

View file

@ -358,10 +358,6 @@
<string name="renderer_asynchronous_shaders_description">Kompilerer shadere asynkront. Dette kan redusere rykk, men kan også forårsake grafiske feil.</string>
<string name="dyna_state">Utvidet dynamisk tilstand</string>
<string name="disabled">Deaktivert</string>
<string name="provoking_vertex">Provoserende vertex</string>
<string name="provoking_vertex_description">Forbedrer belysning og vertexhåndtering i enkelte spill. Støttes kun på Vulkan 1.0+ GPU-er.</string>
<string name="descriptor_indexing">Beskrivelsesindeksering</string>
<string name="descriptor_indexing_description">Forbedrer tekstur- og bufferhåndtering, samt Maxwell-oversettelseslaget. Støttes av noen Vulkan 1.1 GPU-er og alle Vulkan 1.2+ GPU-er.</string>
<string name="display">Skjerm</string>
<string name="renderer_screen_layout">Orientering</string>

View file

@ -482,10 +482,6 @@
<string name="disabled">Wyłączone</string>
<string name="vertex_input_dynamic_state">Dynamiczny stan wejścia wierzchołków</string>
<string name="vertex_input_dynamic_state_description">Włącza funkcję dynamicznego stanu wejścia wierzchołków, poprawiając jakość i wydajność.</string>
<string name="provoking_vertex">Wierzchołek prowokujący</string>
<string name="provoking_vertex_description">Poprawia oświetlenie i obsługę wierzchołków w niektórych grach. Obsługiwane tylko przez GPU Vulkan 1.0+.</string>
<string name="descriptor_indexing">Indeksowanie deskryptorów</string>
<string name="descriptor_indexing_description">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+.</string>
<string name="sample_shading_fraction">Cieniowanie próbkowane</string>
<string name="sample_shading_fraction_description">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.</string>

View file

@ -465,10 +465,6 @@
<string name="disabled">Desativado</string>
<string name="vertex_input_dynamic_state">Vertex Input Dynamic State</string>
<string name="vertex_input_dynamic_state_description">Ativa o recurso de vertex input dynamic state para melhor qualidade e desempenho.</string>
<string name="provoking_vertex">Provoking Vertex</string>
<string name="provoking_vertex_description">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.</string>
<string name="descriptor_indexing">Descriptor Indexing</string>
<string name="descriptor_indexing_description">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.</string>
<string name="display">Tela</string>
<string name="renderer_screen_layout">Orientação</string>

View file

@ -381,10 +381,6 @@
<string name="renderer_asynchronous_shaders_description">Compila shaders de forma assíncrona. Isto pode reduzir engasgadelas, mas também pode introduzir falhas gráficas.</string>
<string name="dyna_state">Estado Dinâmico Estendido</string>
<string name="disabled">Desativado</string>
<string name="provoking_vertex">Vértice provocante</string>
<string name="provoking_vertex_description">Melhora a iluminação e o tratamento de vértices em certos jogos. Suportado apenas em GPUs Vulkan 1.0+.</string>
<string name="descriptor_indexing">Indexação de descritores</string>
<string name="descriptor_indexing_description">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+.</string>
<string name="display">Ecrã</string>
<string name="renderer_screen_layout">Oriantação</string>

View file

@ -519,10 +519,6 @@
<string name="disabled">Отключено</string>
<string name="vertex_input_dynamic_state">Динамическое состояние ввода вершин</string>
<string name="vertex_input_dynamic_state_description">Включает функцию динамического состояния ввода вершин для повышения качества и производительности</string>
<string name="provoking_vertex">Определяющая вершина</string>
<string name="provoking_vertex_description">Улучшает освещение и обработку вершин в некоторых играх. Поддерживается только ГПУ с Vulkan 1.0+.</string>
<string name="descriptor_indexing">Индексирование дескрипторов</string>
<string name="descriptor_indexing_description">Улучшает обработку текстур и буферов, а также слой перевода Maxwell. Поддерживается некоторыми ГПУ Vulkan 1.1 и всеми ГПУ Vulkan 1.2+.</string>
<string name="sample_shading_fraction">Сэмпловое затенение</string>
<string name="sample_shading_fraction_description">Позволяет шейдеру фрагментов выполняться для каждого сэмпла в многосэмпловом фрагменте, а не один раз на фрагмент. Улучшает качество графики ценой некоторого падения производительности.</string>

View file

@ -380,10 +380,6 @@
<string name="renderer_asynchronous_shaders_description">Саставља схадера асинхроно. Ово може умањити затезаче, али могу такође да уведе пропусте.</string>
<string name="dyna_state">Проширена динамичка држава</string>
<string name="disabled">Искључено</string>
<string name="provoking_vertex">Провоцирајући врх</string>
<string name="provoking_vertex_description">Побољшава осветљење и вертификат руковања у одређеним играма. Подржан само на Вулкану 1.0+ ГПУ-у.</string>
<string name="descriptor_indexing">Индексирање дескриптора</string>
<string name="descriptor_indexing_description">Побољшава текстуру и руковање међуспремника, као и преводилачки слој Маквелл. Подржани од стране неких Вулкана 1.1 ГПУ-а и сви Вулкан 1.2+ ГПУ.</string>
<string name="display">Приказ</string>
<string name="renderer_screen_layout">Оријентација</string>

View file

@ -519,10 +519,6 @@
<string name="disabled">Вимкнено</string>
<string name="vertex_input_dynamic_state">Динамічний стан введення вершин</string>
<string name="vertex_input_dynamic_state_description">Вмикає можливість динамічного стану введення вершин для кращих якості й продуктивності.</string>
<string name="provoking_vertex">Провокативна вершина</string>
<string name="provoking_vertex_description">Покращує освітлення та взаємодію з вершинами у деяких іграх. Лише для ГП з підтримкою Vulkan 1.0+.</string>
<string name="descriptor_indexing">Індексація дескрипторів</string>
<string name="descriptor_indexing_description">Покращує обробку текстур та буферів, а також шар перекладу Maxwell. Підтримується деякими GPU Vulkan 1.1 та всіма GPU Vulkan 1.2+.</string>
<string name="sample_shading_fraction">Простий шейдинг</string>
<string name="sample_shading_fraction_description">Дозволяє виконувати фрагмент шейдера для кожного зразка в багатозразковому фрагменті замість одного разу для кожного фрагмента. Покращує якість графікі ціною втрати продуктивності.</string>

View file

@ -356,10 +356,6 @@
<string name="renderer_asynchronous_shaders_description">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.</string>
<string name="dyna_state">Trạng thái động mở rộng</string>
<string name="disabled">Đã tắt</string>
<string name="provoking_vertex">Đỉnh kích hoạt</string>
<string name="provoking_vertex_description">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+.</string>
<string name="descriptor_indexing">Lập chỉ mục bộ mô tả</string>
<string name="descriptor_indexing_description">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+.</string>
<string name="display">Hiển thị</string>
<string name="renderer_screen_layout">Hướng màn hình</string>

View file

@ -513,10 +513,6 @@
<string name="disabled">已禁用</string>
<string name="vertex_input_dynamic_state">顶点输入动态状态</string>
<string name="vertex_input_dynamic_state_description">开启顶点输入动态状态功能来获得更好的质量和性能。</string>
<string name="provoking_vertex">引发顶点</string>
<string name="provoking_vertex_description">改善某些游戏中的光照和顶点处理。仅支持Vulkan 1.0+ GPU。</string>
<string name="descriptor_indexing">描述符索引</string>
<string name="descriptor_indexing_description">改进纹理和缓冲区处理以及Maxwell转换层。部分Vulkan 1.1 GPU和所有Vulkan 1.2+ GPU支持。</string>
<string name="sample_shading_fraction">采样着色</string>
<string name="sample_shading_fraction_description">允许片段着色器在多采样片段中每个样本执行一次,而不是每个片段执行一次。以提高性能为代价改善图形质量。</string>

View file

@ -468,10 +468,6 @@
<string name="disabled">已停用</string>
<string name="vertex_input_dynamic_state">頂點輸入動態狀態</string>
<string name="vertex_input_dynamic_state_description">啟用頂點輸入動態狀態以取得更佳的品質及性能</string>
<string name="provoking_vertex">引發頂點</string>
<string name="provoking_vertex_description">改善某些遊戲中的光照和頂點處理。僅支援Vulkan 1.0+ GPU。</string>
<string name="descriptor_indexing">描述符索引</string>
<string name="descriptor_indexing_description">改進紋理和緩衝區處理以及Maxwell轉換層。部分Vulkan 1.1 GPU和所有Vulkan 1.2+ GPU支援。</string>
<string name="display">顯示</string>
<string name="renderer_screen_layout">方向</string>

View file

@ -533,10 +533,6 @@
<string name="disabled">Disabled</string>
<string name="vertex_input_dynamic_state">Vertex Input Dynamic State</string>
<string name="vertex_input_dynamic_state_description">Enables vertex input dynamic state feature for better quality and performance.</string>
<string name="provoking_vertex">Provoking Vertex</string>
<string name="provoking_vertex_description">Improves lighting and vertex handling in certain games. Only supported on Vulkan 1.0+ GPUs.</string>
<string name="descriptor_indexing">Descriptor Indexing</string>
<string name="descriptor_indexing_description">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.</string>
<string name="sample_shading_fraction">Sample Shading</string>
<string name="sample_shading_fraction_description">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.</string>

View file

@ -608,8 +608,6 @@ struct Values {
true,
#endif
"vertex_input_dynamic_state", Category::RendererExtensions};
SwitchableSetting<bool> provoking_vertex{linkage, false, "provoking_vertex", Category::RendererExtensions};
SwitchableSetting<bool> descriptor_indexing{linkage, false, "descriptor_indexing", Category::RendererExtensions};
Setting<bool> renderer_debug{linkage, false, "debug", Category::RendererDebug};
Setting<bool> renderer_shader_feedback{linkage, false, "shader_feedback",

View file

@ -286,14 +286,6 @@ std::unique_ptr<TranslationMap> 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."));
INSERT(
Settings, sample_shading, tr("Sample Shading"),
tr("Allows the fragment shader to execute per sample in a multi-sampled fragment "

View file

@ -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
@ -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<u32>(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);

View file

@ -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
@ -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 {

View file

@ -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);
}

View file

@ -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() {
@ -603,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<Shader::Environment*, 5> env_ptrs;

View file

@ -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<int32_t>(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() &&

View file

@ -275,6 +275,19 @@ constexpr VkBorderColor ConvertBorderColor(const std::array<float, 4>& color) {
return VK_COMPONENT_SWIZZLE_ZERO;
}
void SanitizeDepthStencilSwizzle(std::array<SwizzleSource, 4>& 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);

View file

@ -22,16 +22,13 @@
#include <vulkan/vulkan.h>
// 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

View file

@ -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<void*>(&diagnostics_nv) : static_cast<void*>(&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();
@ -1078,11 +1066,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);
@ -1196,7 +1179,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 +1251,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 +1259,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 +1286,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 =
@ -1342,17 +1300,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 =
@ -1377,35 +1324,15 @@ 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)
// 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);
@ -1416,17 +1343,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);
@ -1435,17 +1351,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) {

View file

@ -57,14 +57,12 @@ 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) \
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, \
@ -100,12 +98,10 @@ 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) \
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)
@ -443,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;
@ -473,11 +464,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;
@ -719,6 +705,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;
@ -878,11 +880,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;
@ -893,11 +890,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 &&
@ -1025,7 +1017,6 @@ private:
VkPhysicalDeviceSubgroupSizeControlProperties subgroup_size_control{};
VkPhysicalDeviceTransformFeedbackPropertiesEXT transform_feedback{};
VkPhysicalDeviceMaintenance5PropertiesKHR maintenance5{};
VkPhysicalDeviceMultiDrawPropertiesEXT multi_draw{};
VkPhysicalDeviceProperties properties{};
};

View file

@ -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;
}

View file

@ -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);

View file

@ -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<VkClearAttachment> attachments,
Span<VkClearRect> rects) const noexcept {
dld->vkCmdClearAttachments(handle, attachments.size(), attachments.data(), rects.size(),