Vulkan 1.4 and New Extensions (#93)

- Add descriptor_indexing, VIDS, provoking_vertex
- Fix up EDS
- Implement VK 1.4

Co-authored-by: JPikachu <jpikachu.eden@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/93
Co-authored-by: swurl <swurl@swurl.xyz>
Co-committed-by: swurl <swurl@swurl.xyz>
This commit is contained in:
swurl 2025-05-09 14:19:51 +00:00 committed by JPikachu
parent d75dc79f26
commit aa333e6fb1
13 changed files with 264 additions and 159 deletions

View file

@ -19,6 +19,9 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders"),
RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"),
RENDERER_DEBUG("debug"),
RENDERER_DYNA_STATE3("dyna_state3"),
RENDERER_PROVOKING_VERTEX("provoking_vertex"),
RENDERER_DESCRIPTOR_INDEXING("descriptor_indexing"),
PICTURE_IN_PICTURE("picture_in_picture"),
USE_CUSTOM_RTC("custom_rtc_enabled"),
BLACK_BACKGROUNDS("black_backgrounds"),

View file

@ -57,13 +57,6 @@ abstract class SettingsItem(
return NativeInput.getStyleIndex(0) != NpadStyleIndex.Handheld
}
if (setting.key == ByteSetting.RENDERER_DYNA_STATE.key) {
// Can't change on Mali GPU's otherwise no game loading for you
if (!GpuDriverHelper.supportsCustomDriverLoading()) {
return false
}
}
// Can't edit settings that aren't saveable in per-game config even if they are switchable
if (NativeConfig.isPerGameConfigLoaded() && !setting.isSaveable) {
return false
@ -139,10 +132,30 @@ abstract class SettingsItem(
titleId = R.string.dyna_state,
descriptionId = R.string.dyna_state_description,
min = 0,
max = 3,
max = 2,
)
)
put(
SwitchSetting(
BooleanSetting.RENDERER_DYNA_STATE3,
titleId = R.string.dyna_state3,
descriptionId = R.string.dyna_state3_description
)
)
put(
SwitchSetting(
BooleanSetting.RENDERER_PROVOKING_VERTEX,
titleId = R.string.provoking_vertex,
descriptionId = R.string.provoking_vertex_description
)
)
put(
SwitchSetting(
BooleanSetting.RENDERER_DESCRIPTOR_INDEXING,
titleId = R.string.descriptor_indexing,
descriptionId = R.string.descriptor_indexing_description
)
)
put(
SliderSetting(
ShortSetting.RENDERER_SPEED_LIMIT,

View file

@ -479,7 +479,12 @@ class SettingsFragmentPresenter(
descriptionId = R.string.use_lru_cache_description
)
)
add(ByteSetting.RENDERER_DYNA_STATE.key)
add(BooleanSetting.RENDERER_DYNA_STATE3.key)
add(BooleanSetting.RENDERER_PROVOKING_VERTEX.key)
add(BooleanSetting.RENDERER_DESCRIPTOR_INDEXING.key)
add(
SwitchSetting(
syncCoreSpeedSetting,

View file

@ -64,9 +64,9 @@
<string name="view_grid">Grid</string>
<string name="folder">Folder</string>
<string name="pre_alpha_warning_title">Pre-Alpha Software</string>
<string name="pre_alpha_warning_description">"WARNING: This build is not meant to be shared or shown to the public. This software is in pre-alpha stages and may have bugs and incomplete feature implementations. \nIf you somehow got unauthorized access to this build; it's heavily recommended to uninstall it immediately "</string>
<string name="dont_show_again">Dont Show Again</string>
<string name="pre_alpha_warning">PRE-ALPHA SOFTWARE; NOT MEANT FOR PUBLIC USE</string>\
<string name="pre_alpha_warning_description">"WARNING: This software is in the pre-alpha stage and may have bugs and incomplete feature implementations."</string>
<string name="dont_show_again">Don\'t Show Again</string>
<string name="pre_alpha_warning">PRE-ALPHA SOFTWARE</string>\
<string name="add_directory_success">"New game directory added successfully "</string>
<string name="home_games">Games</string>
<string name="home_search">Search</string>
@ -302,7 +302,13 @@
<string name="shader_backend_description">Choose how shaders are compiled and translated for your GPU.</string>
<string name="dyna_state">Extended Dynamic State</string>
<string name="dyna_state_description">Enables Vulkan features to improve performance, rendering, and save resources on pipeline creation while maintaining lower CPU/GPU usage.
These features may have repercussions on the device\'s temperature, some GPUs belonging to the older A6XX line may not react properly. Disabled by default to use Yuzu emulated formats, risk-free core functions 1 - 2, for higher-end devices select 3.</string>
These extensions may increase device temperature, and GPUs belonging to the older A6XX line may not react properly. Set to 0 to use Yuzu emulated formats.</string>
<string name="dyna_state3">EDS3 + VertexInputDynamicState</string>
<string name="dyna_state3_description">Improves performance on newer devices. Only supported on Vulkan 1.3+ GPUs.</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>
<!-- Debug settings strings -->
<string name="cpu">CPU</string>