From ed4b011cad9cce64cf1f2f4444883ed835a57ffd Mon Sep 17 00:00:00 2001 From: Aleksandr Popovich Date: Mon, 19 May 2025 21:28:16 +0000 Subject: [PATCH] fix more vulkan issues and remove vertex input (#117) Co-authored-by: swurl Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/117 Co-authored-by: Aleksandr Popovich Co-committed-by: Aleksandr Popovich --- .ci/linux/build.sh | 1 + .ci/linux/package.sh | 1 + .../java/org/yuzu/yuzu_emu/NativeLibrary.kt | 5 - .../features/settings/model/BooleanSetting.kt | 7 +- .../features/settings/model/IntSetting.kt | 1 - .../settings/model/view/SettingsItem.kt | 32 +-- .../settings/ui/SettingsFragmentPresenter.kt | 17 +- .../yuzu_emu/fragments/EmulationFragment.kt | 23 +- .../app/src/main/jni/android_settings.h | 172 ++++++------- src/android/app/src/main/jni/native.cpp | 17 -- src/android/app/src/main/jni/native.h | 4 +- .../app/src/main/res/values-ar/strings.xml | 2 - .../app/src/main/res/values-ckb/strings.xml | 2 - .../app/src/main/res/values-cs/strings.xml | 2 - .../app/src/main/res/values-de/strings.xml | 2 - .../app/src/main/res/values-es/strings.xml | 2 - .../app/src/main/res/values-fa/strings.xml | 2 - .../app/src/main/res/values-fr/strings.xml | 2 - .../app/src/main/res/values-he/strings.xml | 2 - .../app/src/main/res/values-hu/strings.xml | 2 - .../app/src/main/res/values-id/strings.xml | 2 - .../app/src/main/res/values-it/strings.xml | 2 - .../app/src/main/res/values-ja/strings.xml | 2 - .../app/src/main/res/values-ko/strings.xml | 2 - .../app/src/main/res/values-nb/strings.xml | 2 - .../app/src/main/res/values-pl/strings.xml | 2 - .../src/main/res/values-pt-rBR/strings.xml | 2 - .../src/main/res/values-pt-rPT/strings.xml | 2 - .../app/src/main/res/values-ru/strings.xml | 2 - .../app/src/main/res/values-uk/strings.xml | 2 - .../app/src/main/res/values-vi/strings.xml | 2 - .../src/main/res/values-zh-rCN/strings.xml | 2 - .../src/main/res/values-zh-rTW/strings.xml | 2 - .../app/src/main/res/values/arrays.xml | 12 - .../app/src/main/res/values/strings.xml | 20 +- src/common/settings.h | 10 +- src/core/hle/kernel/k_memory_layout.h | 2 +- .../renderer_vulkan/vk_graphics_pipeline.cpp | 6 +- .../renderer_vulkan/vk_pipeline_cache.cpp | 10 +- .../renderer_vulkan/vk_rasterizer.cpp | 61 ++--- .../renderer_vulkan/vk_rasterizer.h | 4 - .../vulkan_common/vulkan_device.cpp | 237 +++++++++--------- src/video_core/vulkan_common/vulkan_device.h | 82 +++--- .../configure_graphics_extensions.cpp | 5 +- src/yuzu/configuration/shared_translation.cpp | 14 +- 45 files changed, 285 insertions(+), 502 deletions(-) diff --git a/.ci/linux/build.sh b/.ci/linux/build.sh index f030e9b748..c020cc7edd 100755 --- a/.ci/linux/build.sh +++ b/.ci/linux/build.sh @@ -60,6 +60,7 @@ cmake .. -G Ninja \ -DYUZU_USE_QT_MULTIMEDIA=OFF \ -DYUZU_USE_QT_WEB_ENGINE=OFF \ -DENABLE_QT_TRANSLATION=ON \ + -DUSE_DISCORD_PRESENCE=OFF \ -DYUZU_USE_FASTER_LD=OFF \ -DYUZU_ENABLE_LTO=ON \ -DCMAKE_LINKER=/usr/bin/mold \ diff --git a/.ci/linux/package.sh b/.ci/linux/package.sh index 5c556cd0e4..4d58b8f328 100755 --- a/.ci/linux/package.sh +++ b/.ci/linux/package.sh @@ -21,6 +21,7 @@ fi EDEN_TAG=$(git describe --tags --abbrev=0) echo "Making stable \"$EDEN_TAG\" build" +git checkout "$EDEN_TAG" VERSION="$(echo "$EDEN_TAG")" # NOW MAKE APPIMAGE diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt index 0be943eb86..1848ca9ef9 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt @@ -166,11 +166,6 @@ object NativeLibrary { */ external fun getPerfStats(): DoubleArray - /** - * Returns the number of shaders being built - */ - external fun getShadersBuilding(): Int - /** * Returns the current CPU backend. */ diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt index 3c8ce3504d..cc494467d1 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt @@ -20,7 +20,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { RENDERER_FAST_GPU("use_fast_gpu_time"), RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"), RENDERER_DEBUG("debug"), - RENDERER_VERTEX_INPUT("vertex_input"), RENDERER_PROVOKING_VERTEX("provoking_vertex"), RENDERER_DESCRIPTOR_INDEXING("descriptor_indexing"), PICTURE_IN_PICTURE("picture_in_picture"), @@ -41,14 +40,12 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { SHOW_APP_RAM_USAGE("show_app_ram_usage"), SHOW_SYSTEM_RAM_USAGE("show_system_ram_usage"), SHOW_BAT_TEMPERATURE("show_bat_temperature"), - SHOW_SHADERS_BUILDING("show_shaders_building"), OVERLAY_BACKGROUND("overlay_background"), - DEBUG_FLUSH_BY_LINE("flush_lines"), - USE_LRU_CACHE("use_lru_cache"); - + USE_LRU_CACHE("use_lru_cache"),; external fun isFrameSkippingEnabled(): Boolean external fun isFrameInterpolationEnabled(): Boolean + override fun getBoolean(needsGlobal: Boolean): Boolean = NativeConfig.getBoolean(key, needsGlobal) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt index 3e1c43ca89..035a33a762 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt @@ -33,7 +33,6 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { LOCK_DRAWER("lock_drawer"), VERTICAL_ALIGNMENT("vertical_alignment"), PERF_OVERLAY_POSITION("perf_overlay_position"), - MEMORY_LAYOUT("memory_layout_mode"), FSR_SHARPENING_SLIDER("fsr_sharpening_slider"); override fun getInt(needsGlobal: Boolean): Int = NativeConfig.getInt(key, needsGlobal) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index 49e2a19474..dfc17bff08 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt @@ -136,14 +136,7 @@ abstract class SettingsItem( titleId = R.string.dyna_state, descriptionId = R.string.dyna_state_description, min = 0, - max = 3, - ) - ) - put( - SwitchSetting( - BooleanSetting.RENDERER_VERTEX_INPUT, - titleId = R.string.vertex_input, - descriptionId = R.string.vertex_input_description + max = 2, ) ) put( @@ -193,13 +186,6 @@ abstract class SettingsItem( descriptionId = R.string.picture_in_picture_description ) ) - put( - SwitchSetting( - BooleanSetting.DEBUG_FLUSH_BY_LINE, - titleId = R.string.flush_by_line, - descriptionId = R.string.flush_by_line_description - ) - ) val dockedModeSetting = object : AbstractBooleanSetting { override val key = BooleanSetting.USE_DOCKED_MODE.key @@ -245,15 +231,6 @@ abstract class SettingsItem( descriptionId = R.string.use_docked_mode_description ) ) - put( - SingleChoiceSetting( - IntSetting.MEMORY_LAYOUT, - titleId = R.string.memory_layout, - descriptionId = R.string.memory_layout_description, - choicesId = R.array.memoryNames, - valuesId = R.array.memoryValues - ) - ) put( SwitchSetting( BooleanSetting.CORE_SYNC_CORE_SPEED, @@ -413,13 +390,6 @@ abstract class SettingsItem( descriptionId = R.string.show_bat_temperature_description ) ) - put( - SwitchSetting( - BooleanSetting.SHOW_SHADERS_BUILDING, - R.string.show_shaders_building, - descriptionId = R.string.show_shaders_building_description - ) - ) put( SingleChoiceSetting( IntSetting.RENDERER_VSYNC, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index 0d426f67f5..d91906d438 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -241,6 +241,17 @@ class SettingsFragmentPresenter( ) ) addEdenVeilSettings(sl) + + add(BooleanSetting.FRAME_INTERPOLATION.key) + add(BooleanSetting.FRAME_SKIPPING.key) + add(BooleanSetting.CORE_SYNC_CORE_SPEED.key) + add(IntSetting.RENDERER_SHADER_BACKEND.key) + add(IntSetting.RENDERER_OPTIMIZE_SPIRV_OUTPUT.key) + add(IntSetting.RENDERER_NVDEC_EMULATION.key) + add(IntSetting.RENDERER_ASTC_DECODE_METHOD.key) + add(IntSetting.RENDERER_ASTC_RECOMPRESSION.key) + add(IntSetting.RENDERER_VRAM_USAGE_MODE.key) + add(BooleanSetting.USE_LRU_CACHE.key) } } @@ -250,7 +261,6 @@ class SettingsFragmentPresenter( add(BooleanSetting.RENDERER_USE_SPEED_LIMIT.key) add(ShortSetting.RENDERER_SPEED_LIMIT.key) add(BooleanSetting.USE_DOCKED_MODE.key) - add(IntSetting.MEMORY_LAYOUT.key) add(IntSetting.REGION_INDEX.key) add(IntSetting.LANGUAGE_INDEX.key) add(BooleanSetting.USE_CUSTOM_RTC.key) @@ -291,7 +301,6 @@ class SettingsFragmentPresenter( add(BooleanSetting.SHOW_APP_RAM_USAGE.key) add(BooleanSetting.SHOW_SYSTEM_RAM_USAGE.key) add(BooleanSetting.SHOW_BAT_TEMPERATURE.key) - add(BooleanSetting.SHOW_SHADERS_BUILDING.key) } } @@ -457,7 +466,6 @@ class SettingsFragmentPresenter( add(ByteSetting.RENDERER_DYNA_STATE.key) - add(BooleanSetting.RENDERER_VERTEX_INPUT.key) add(BooleanSetting.RENDERER_PROVOKING_VERTEX.key) add(BooleanSetting.RENDERER_DESCRIPTOR_INDEXING.key) @@ -1134,9 +1142,6 @@ class SettingsFragmentPresenter( add(BooleanSetting.USE_AUTO_STUB.key) add(BooleanSetting.CPU_DEBUG_MODE.key) add(SettingsItem.FASTMEM_COMBINED) - - add(HeaderSetting(R.string.log)) - add(BooleanSetting.DEBUG_FLUSH_BY_LINE.key) } } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt index 8fc473410a..ddf3cb1fe1 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.kt @@ -64,7 +64,6 @@ import org.yuzu.yuzu_emu.features.settings.model.IntSetting import org.yuzu.yuzu_emu.features.settings.model.Settings import org.yuzu.yuzu_emu.features.settings.model.Settings.EmulationOrientation import org.yuzu.yuzu_emu.features.settings.model.Settings.EmulationVerticalAlignment -import org.yuzu.yuzu_emu.features.settings.model.ShortSetting import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile import org.yuzu.yuzu_emu.model.DriverViewModel import org.yuzu.yuzu_emu.model.EmulationViewModel @@ -400,7 +399,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { emulationState.updateSurface() // Setup overlays - updateShowStatsOverlay() + updateshowStatsOvelray() // Re update binding when the specs values get initialized properly binding.inGameMenu.getHeaderView(0).apply { @@ -533,7 +532,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } @SuppressLint("DefaultLocale") - private fun updateShowStatsOverlay() { + private fun updateshowStatsOvelray() { val showOverlay = BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean() binding.showStatsOverlayText.apply { setTextColor( @@ -588,12 +587,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { if (BooleanSetting.SHOW_SPEED.getBoolean(NativeConfig.isPerGameConfigLoaded())) { if (sb.isNotEmpty()) sb.append(" | ") - // TODO(alekpop): this is broken on android only. it uses the clock timer but it should not. sb.append( String.format( - "Speed: %d%% / %d%%", - (perfStats[SPEED] * 100.0 + 0.5).toInt(), - ShortSetting.RENDERER_SPEED_LIMIT.getShort(NativeConfig.isPerGameConfigLoaded()) + "Speed: %d%%", + (perfStats[SPEED] * 100.0 + 0.5).toInt() ) ) } @@ -622,16 +619,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { sb.append(String.format("%.1f°C/%.1f°F", batteryTemp, tempF)) } - val shadersBuilding = NativeLibrary.getShadersBuilding() - - if (BooleanSetting.SHOW_SHADERS_BUILDING.getBoolean(NativeConfig.isPerGameConfigLoaded()) && shadersBuilding != 0) { - if (sb.isNotEmpty()) sb.append(" | ") - - val prefix = getString(R.string.shaders_prefix) - val suffix = getString(R.string.shaders_suffix) - sb.append(String.format("$prefix %d $suffix", shadersBuilding)) - } - if (BooleanSetting.OVERLAY_BACKGROUND.getBoolean(NativeConfig.isPerGameConfigLoaded())) { binding.showStatsOverlayText.setBackgroundResource(R.color.yuzu_transparent_black) } else { @@ -862,7 +849,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { R.id.menu_show_stats_overlay -> { it.isChecked = !it.isChecked BooleanSetting.SHOW_PERFORMANCE_OVERLAY.setBoolean(it.isChecked) - updateShowStatsOverlay() + updateshowStatsOvelray() true } R.id.menu_edit_overlay -> { diff --git a/src/android/app/src/main/jni/android_settings.h b/src/android/app/src/main/jni/android_settings.h index 9a71822c6a..ff569d1981 100644 --- a/src/android/app/src/main/jni/android_settings.h +++ b/src/android/app/src/main/jni/android_settings.h @@ -9,116 +9,90 @@ namespace AndroidSettings { - struct GameDir { - std::string path; - bool deep_scan = false; - }; +struct GameDir { + std::string path; + bool deep_scan = false; +}; - struct OverlayControlData { - std::string id; - bool enabled; - std::pair landscape_position; - std::pair portrait_position; - std::pair foldable_position; - }; +struct OverlayControlData { + std::string id; + bool enabled; + std::pair landscape_position; + std::pair portrait_position; + std::pair foldable_position; +}; - struct Values { - Settings::Linkage linkage; +struct Values { + Settings::Linkage linkage; - // Path settings - std::vector game_dirs; + // Path settings + std::vector game_dirs; - // Android - Settings::Setting picture_in_picture{linkage, false, "picture_in_picture", - Settings::Category::Android}; - Settings::Setting screen_layout{linkage, - 5, - "screen_layout", - Settings::Category::Android, - Settings::Specialization::Default, - true, - true}; - Settings::Setting vertical_alignment{linkage, - 0, - "vertical_alignment", - Settings::Category::Android, - Settings::Specialization::Default, - true, - true}; + // Android + Settings::Setting picture_in_picture{linkage, false, "picture_in_picture", + Settings::Category::Android}; + Settings::Setting screen_layout{linkage, + 5, + "screen_layout", + Settings::Category::Android, + Settings::Specialization::Default, + true, + true}; + Settings::Setting vertical_alignment{linkage, + 0, + "vertical_alignment", + Settings::Category::Android, + Settings::Specialization::Default, + true, + true}; - Settings::SwitchableSetting driver_path{linkage, "", "driver_path", - Settings::Category::GpuDriver}; + Settings::SwitchableSetting driver_path{linkage, "", "driver_path", + Settings::Category::GpuDriver}; - // LRU Cache - Settings::SwitchableSetting use_lru_cache{linkage, true, "use_lru_cache", - Settings::Category::System}; + // LRU Cache + Settings::SwitchableSetting use_lru_cache{linkage, true, "use_lru_cache", + Settings::Category::System}; - Settings::Setting theme{linkage, 0, "theme", Settings::Category::Android}; - Settings::Setting theme_mode{linkage, -1, "theme_mode", Settings::Category::Android}; - Settings::Setting black_backgrounds{linkage, false, "black_backgrounds", - Settings::Category::Android}; + Settings::Setting theme{linkage, 0, "theme", Settings::Category::Android}; + Settings::Setting theme_mode{linkage, -1, "theme_mode", Settings::Category::Android}; + Settings::Setting black_backgrounds{linkage, false, "black_backgrounds", + Settings::Category::Android}; - // Input/performance overlay settings - std::vector overlay_control_data; - Settings::Setting overlay_scale{linkage, 50, "control_scale", - Settings::Category::Overlay}; - Settings::Setting overlay_opacity{linkage, 100, "control_opacity", - Settings::Category::Overlay}; - - Settings::Setting joystick_rel_center{linkage, true, "joystick_rel_center", - Settings::Category::Overlay}; - Settings::Setting dpad_slide{linkage, true, "dpad_slide", + // Input/performance overlay settings + std::vector overlay_control_data; + Settings::Setting overlay_scale{linkage, 50, "control_scale", Settings::Category::Overlay}; + Settings::Setting overlay_opacity{linkage, 100, "control_opacity", Settings::Category::Overlay}; - Settings::Setting haptic_feedback{linkage, true, "haptic_feedback", + + Settings::Setting joystick_rel_center{linkage, true, "joystick_rel_center", Settings::Category::Overlay}; - Settings::Setting show_performance_overlay{linkage, true, "show_performance_overlay", - Settings::Category::Overlay, - Settings::Specialization::Paired, true, - true}; - Settings::Setting overlay_background{linkage, false, "overlay_background", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; - Settings::Setting perf_overlay_position{linkage, 0, "perf_overlay_position", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; - Settings::Setting show_fps{linkage, true, "show_fps", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; - Settings::Setting show_frame_time{linkage, false, "show_frame_time", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; - Settings::Setting show_speed{linkage, true, "show_speed", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; - Settings::Setting show_app_ram_usage{linkage, false, "show_app_ram_usage", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; - Settings::Setting show_system_ram_usage{linkage, false, "show_system_ram_usage", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; - Settings::Setting show_bat_temperature{linkage, false, "show_bat_temperature", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; - Settings::Setting show_shaders_building{linkage, true, "show_shaders_building", - Settings::Category::Overlay, - Settings::Specialization::Default, true, true, - &show_performance_overlay}; - Settings::Setting show_input_overlay{linkage, true, "show_input_overlay", - Settings::Category::Overlay}; - Settings::Setting touchscreen{linkage, true, "touchscreen", + Settings::Setting dpad_slide{linkage, true, "dpad_slide", Settings::Category::Overlay}; + Settings::Setting haptic_feedback{linkage, true, "haptic_feedback", Settings::Category::Overlay}; - Settings::Setting lock_drawer{linkage, false, "lock_drawer", - Settings::Category::Overlay}; - }; + Settings::Setting show_performance_overlay{linkage, true, "show_performance_overlay", + Settings::Category::Overlay, Settings::Specialization::Paired, true , true}; + Settings::Setting overlay_background{linkage, false, "overlay_background", + Settings::Category::Overlay, Settings::Specialization::Default, true , true, &show_performance_overlay}; + Settings::Setting perf_overlay_position{linkage, 0, "perf_overlay_position", + Settings::Category::Overlay, Settings::Specialization::Default, true , true, &show_performance_overlay}; + Settings::Setting show_fps{linkage, true, "show_fps", + Settings::Category::Overlay, Settings::Specialization::Default, true , true, &show_performance_overlay}; + Settings::Setting show_frame_time{linkage, false, "show_frame_time", + Settings::Category::Overlay, Settings::Specialization::Default, true , true, &show_performance_overlay}; + Settings::Setting show_speed{linkage, true, "show_speed", + Settings::Category::Overlay, Settings::Specialization::Default, true , true, &show_performance_overlay}; + Settings::Setting show_app_ram_usage{linkage, false, "show_app_ram_usage", + Settings::Category::Overlay, Settings::Specialization::Default, true , true, &show_performance_overlay}; + Settings::Setting show_system_ram_usage{linkage, false, "show_system_ram_usage", + Settings::Category::Overlay, Settings::Specialization::Default, true , true, &show_performance_overlay}; + Settings::Setting show_bat_temperature{linkage, false, "show_bat_temperature", + Settings::Category::Overlay, Settings::Specialization::Default, true , true, &show_performance_overlay}; + Settings::Setting show_input_overlay{linkage, true, "show_input_overlay", + Settings::Category::Overlay}; + Settings::Setting touchscreen{linkage, true, "touchscreen", Settings::Category::Overlay}; + Settings::Setting lock_drawer{linkage, false, "lock_drawer", Settings::Category::Overlay}; +}; - extern Values values; +extern Values values; } // namespace AndroidSettings diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index 962fae126c..6dac1ef84e 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -67,7 +67,6 @@ #include "video_core/renderer_vulkan/renderer_vulkan.h" #include "video_core/vulkan_common/vulkan_instance.h" #include "video_core/vulkan_common/vulkan_surface.h" -#include "video_core/shader_notify.h" #define jconst [[maybe_unused]] const auto #define jauto [[maybe_unused]] auto @@ -159,12 +158,6 @@ const Core::PerfStatsResults& EmulationSession::PerfStats() { return m_perf_stats; } -int EmulationSession::ShadersBuilding() { - auto& shader_notify = m_system.GPU().ShaderNotify(); - m_shaders_building = shader_notify.ShadersBuilding(); - return m_shaders_building; -} - void EmulationSession::SurfaceChanged() { if (!IsRunning()) { return; @@ -617,16 +610,6 @@ jdoubleArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getPerfStats(JNIEnv* env, jcl return j_stats; } -jint Java_org_yuzu_yuzu_1emu_NativeLibrary_getShadersBuilding(JNIEnv* env, jclass clazz) { - jint j_shaders = 0; - - if (EmulationSession::GetInstance().IsRunning()) { - j_shaders = EmulationSession::GetInstance().ShadersBuilding(); - } - - return j_shaders; -} - jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getCpuBackend(JNIEnv* env, jclass clazz) { if (Settings::IsNceEnabled()) { return Common::Android::ToJString(env, "NCE"); diff --git a/src/android/app/src/main/jni/native.h b/src/android/app/src/main/jni/native.h index 4cc838ee5a..6a4551ada2 100644 --- a/src/android/app/src/main/jni/native.h +++ b/src/android/app/src/main/jni/native.h @@ -44,7 +44,6 @@ public: void ShutdownEmulation(); const Core::PerfStatsResults& PerfStats(); - int ShadersBuilding(); void ConfigureFilesystemProvider(const std::string& filepath); void InitializeSystem(bool reload); void SetAppletId(int applet_id); @@ -73,7 +72,6 @@ private: InputCommon::InputSubsystem m_input_subsystem; Common::DetachedTasks m_detached_tasks; Core::PerfStatsResults m_perf_stats{}; - int m_shaders_building{0}; std::shared_ptr m_vfs; Core::SystemResultStatus m_load_result{Core::SystemResultStatus::ErrorNotInitialized}; std::atomic m_is_running = false; @@ -91,4 +89,4 @@ private: // Program index for next boot std::atomic m_next_program_index = -1; -}; \ No newline at end of file +}; diff --git a/src/android/app/src/main/res/values-ar/strings.xml b/src/android/app/src/main/res/values-ar/strings.xml index 6ffcc1ff9e..1ed93d123c 100644 --- a/src/android/app/src/main/res/values-ar/strings.xml +++ b/src/android/app/src/main/res/values-ar/strings.xml @@ -49,8 +49,6 @@ تمكين أو تعطيل ذاكرة التخزين المؤقت الأقل استخدامًا (LRU)، مما يزيد الأداء عن طريق توفير استخدام وحدة المعالجة المركزية. بعض الألعاب بها مشاكل معها، خاصة TotK 1.2.1، لذا قم بتعطيلها إذا لم يتم تشغيل اللعبة أو تعطلت بشكل عشوائي. الحالة الديناميكية الممتدة يُمكّن ميزات فولكان لتحسين الأداء، التقديم، وتوفير الموارد أثناء إنشاء خطوط المعالجة مع الحفاظ على استهلاك أقل لوحدة المعالجة المركزية/وحدة معالجة الرسومات. قد تزيد هذه الامتدادات من درجة حرارة الجهاز، وقد لا تتفاعل وحدات معالجة الرسومات القديمة من سلسلة A6XX بشكل صحيح. اضبط على 0 لاستخدام تنسيقات Yuzu المحاكاة. - VertexInputDynamicState - يحسن الأداء على الأجهزة الأحدث. مدعوم فقط على وحدات معالجة الرسومات التي تدعم فولكان 1.3+. مزامنة سرعة النواة مزامنة سرعة النواة مع النسبة القصوى للسرعة لتحسين الأداء دون تغيير السرعة الفعلية للعبة. استخدام الستاب التلقائي diff --git a/src/android/app/src/main/res/values-ckb/strings.xml b/src/android/app/src/main/res/values-ckb/strings.xml index 00b282081d..89cbd511aa 100644 --- a/src/android/app/src/main/res/values-ckb/strings.xml +++ b/src/android/app/src/main/res/values-ckb/strings.xml @@ -50,8 +50,6 @@ چالاک یان ناچالاککردنی کاشەی LRU (کەمترین بەکارهێنراوی دوایی)، کارایی زیاد دەکات بە هەڵگرتنی بەکارهێنانی CPU. هەندێک یاری کێشەییان هەیە لەگەڵیدا، بەتایبەتی TotK 1.2.1، بۆیە ئەگەر یاریەکە نەکەوتەوە یان بە هەڕەمەکی داخرا، ناچالاکی بکە. الحالة الديناميكية الممتدة يُمكّن ميزات فولكان لتحسين الأداء، التقديم، وتوفير الموارد أثناء إنشاء خطوط المعالجة مع الحفاظ على استهلاك أقل لوحدة المعالجة المركزية/وحدة معالجة الرسومات. قد تزيد هذه الامتدادات من درجة حرارة الجهاز، وقد لا تتفاعل وحدات معالجة الرسومات القديمة من سلسلة A6XX بشكل صحيح. اضبط على 0 لاستخدام تنسيقات Yuzu المحاكاة. - VertexInputDynamicState - يحسن الأداء على الأجهزة الأحدث. مدعوم فقط على وحدات معالجة الرسومات التي تدعم فولكان 1.3+. مزامنة سرعة النواة خێرایی تیکەکانی ناوک ڕێکبخە لەگەڵ ڕێژەی خێرایی بەرزترین بۆ باشترکردنی کارایی بەبێ گۆڕینی خێرایی ڕاستەقینەی یارییەکە. استخدام الستاب التلقائي diff --git a/src/android/app/src/main/res/values-cs/strings.xml b/src/android/app/src/main/res/values-cs/strings.xml index 95fcc9f75c..4f43357a6f 100644 --- a/src/android/app/src/main/res/values-cs/strings.xml +++ b/src/android/app/src/main/res/values-cs/strings.xml @@ -49,8 +49,6 @@ Povolte nebo zakažte mezipaměť LRU (Least Recently Used), což zvýší výkon snížením zatížení CPU. Některé hry s ní mají problémy, zejména TotK 1.2.1, proto ji deaktivujte, pokud hra nespustí nebo náhodně padá. Rozšířený dynamický stav Umožňuje funkce Vulkan pro lepší výkon, vykreslování a úsporu zdrojů při vytváření grafických pipeline při zachování nižšího využití CPU/GPU. Tato rozšíření mohou zvýšit teplotu zařízení a starší GPU řady A6XX nemusí reagovat správně. Nastavte na 0 pro použití emulovaných formátů Yuzu. - VertexInputDynamicState - Zlepšuje výkon na novějších zařízeních. Podporováno pouze na GPU s Vulkan 1.3+. Synchronizovat rychlost jádra Synchronizuje rychlost jádra s maximálním procentem rychlosti, aby se zlepšil výkon bez změny skutečné rychlosti hry. Použít automatický stub diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index d444c5ca88..d2a1f89730 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -50,8 +50,6 @@ Aktivieren oder deaktivieren Sie den LRU-Cache (Least Recently Used), um die Leistung durch Reduzierung der CPU-Auslastung zu verbessern. Einige Spiele haben Probleme damit, insbesondere TotK 1.2.1, deaktivieren Sie ihn also, wenn das Spiel nicht startet oder zufällig abstürzt. Erweiterter dynamischer Status Aktiviert Vulkan-Funktionen zur Verbesserung der Leistung, des Renderings und zur Ressourceneinsparung bei der Pipeline-Erstellung, während die CPU/GPU-Auslastung niedrig bleibt. Diese Erweiterungen können die Gerätetemperatur erhöhen, und ältere GPUs der A6XX-Serie reagieren möglicherweise nicht korrekt. Auf 0 setzen, um emulierte Yuzu-Formate zu verwenden. - VertexInputDynamicState - Verbessert die Leistung auf neueren Geräten. Wird nur von GPUs mit Vulkan 1.3+ unterstützt. Kern-Geschwindigkeit synchronisieren Synchronisiert die Taktrate des Kerns mit der maximalen Geschwindigkeit, um die Leistung zu verbessern, ohne die tatsächliche Spielgeschwindigkeit zu verändern. Auto-Stub verwenden diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index fb819a2401..0eb5932de2 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -50,8 +50,6 @@ Activa o desactiva la caché LRU (menos usados recientemente), aumentando el rendimiento al ahorrar uso de CPU. Algunos juegos tienen problemas con ella, especialmente TotK 1.2.1, así que desactívala si el juego no arranca o se cierra aleatoriamente. Estado dinámico extendido Habilita funciones Vulkan para mejorar rendimiento, renderizado y ahorrar recursos en creación de pipelines manteniendo bajo uso de CPU/GPU. Estas extensiones pueden aumentar la temperatura del dispositivo y GPUs antiguas de serie A6XX podrían no responder correctamente. Establecer en 0 para usar formatos emulados de Yuzu. - VertexInputDynamicState - Mejora el rendimiento en dispositivos nuevos. Solo compatible con GPUs Vulkan 1.3+. Sincronizar velocidad del núcleo Sincroniza la velocidad del núcleo con el porcentaje máximo de velocidad para mejorar el rendimiento sin alterar la velocidad real del juego. Usar Auto Stub diff --git a/src/android/app/src/main/res/values-fa/strings.xml b/src/android/app/src/main/res/values-fa/strings.xml index c39f102d77..758fa4995d 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -50,8 +50,6 @@ فعال یا غیرفعال کردن کش LRU (کمترین اخیراً استفاده شده)، که با کاهش استفاده از CPU عملکرد را افزایش می‌دهد. برخی بازی‌ها با آن مشکل دارند، به ویژه TotK 1.2.1، بنابراین اگر بازی اجرا نشد یا به صورت تصادفی کرش کرد، آن را غیرفعال کنید. حالت پویای گسترده قابلیت‌های ولکان را برای بهبود عملکرد، رندرینگ و صرفه‌جویی در منابع هنگام ایجاد خط لوله فعال می‌کند در حالی که مصرف CPU/GPU پایین حفظ می‌شود. این افزونه‌ها ممکن است دمای دستگاه را افزایش دهند و کارت‌های گرافیک سری قدیمی A6XX ممکن است واکنش مناسبی نشان ندهند. برای استفاده از فرمت‌های شبیه‌سازی شده یوزو روی 0 تنظیم کنید - حالت پویای ورودی رأس - عملکرد را در دستگاه‌های جدیدتر بهبود می‌بخشد. فقط در کارت‌های گرافیک با پشتیبانی از ولکان 1.3+ قابل استفاده است همگام‌سازی سرعت هسته همگام‌سازی سرعت هسته با حداکثر درصد سرعت برای بهبود عملکرد بدون تغییر سرعت واقعی بازی. استفاده از استاب خودکار diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index 07b9b92e8d..9e2069cd97 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -50,8 +50,6 @@ Activez ou désactivez le cache LRU (Least Recently Used), ce qui améliore les performances en réduisant l\'utilisation du CPU. Certains jeux ont des problèmes avec, notamment TotK 1.2.1, désactivez-le donc si le jeu ne démarre pas ou plante aléatoirement. État dynamique étendu Active les fonctionnalités Vulkan pour améliorer les performances, le rendu et économiser les ressources lors de la création de pipelines tout en maintenant une faible utilisation CPU/GPU. Ces extensions peuvent augmenter la température de l`appareil, et les GPU plus anciens de la série A6XX peuvent ne pas réagir correctement. Réglez sur 0 pour utiliser les formats émulés de Yuzu. - VertexInputDynamicState - Améliore les performances sur les appareils récents. Pris en charge uniquement par les GPU Vulkan 1.3+. Synchroniser la vitesse du cœur Synchronise la vitesse du cœur avec le pourcentage de vitesse maximal pour améliorer les performances sans modifier la vitesse réelle du jeu. Utiliser le stub automatique diff --git a/src/android/app/src/main/res/values-he/strings.xml b/src/android/app/src/main/res/values-he/strings.xml index 3cd91dea59..e712e9d267 100644 --- a/src/android/app/src/main/res/values-he/strings.xml +++ b/src/android/app/src/main/res/values-he/strings.xml @@ -50,8 +50,6 @@ הפעל או השבת את מטמון LRU (Least Recently Used), המשפר ביצועים על ידי חיסכון בשימוש במעבד. חלק מהמשחקים נתקלים בבעיות עם זה, במיוחד TotK 1.2.1, אז השבת אם המשחק לא נטען או קורס אקראית. מצב דינמי מורחב מאפשר תכונות Vulkan לשיפור ביצועים, רינדור וחיסכון במשאבים תוך שמירה על שימוש נמוך ב-CPU/GPU. הרחבות אלו עשויות להעלות את טמפ` המכשיר, וכרטיסי מסך מסדרת A6XX הישנים יותר עשויים לא להגיב כראוי. הגדר ל-0 כדי להשתמש בפורמטים המדומים של Yuzu. - VertexInputDynamicState - משפר ביצועים במכשירים חדשים יותר. נתמך רק בכרטיסי מסך עם Vulkan 1.3+. סנכרון מהירות ליבה סנכרן את מהירות הליבה לאחוז המהירות המרבי כדי לשפר ביצועים מבלי לשנות את מהירות המשחק בפועל. שימוש ב-Auto Stub diff --git a/src/android/app/src/main/res/values-hu/strings.xml b/src/android/app/src/main/res/values-hu/strings.xml index 902d6ed647..8c028fb8a8 100644 --- a/src/android/app/src/main/res/values-hu/strings.xml +++ b/src/android/app/src/main/res/values-hu/strings.xml @@ -50,8 +50,6 @@ Engedélyezze vagy tiltsa le az LRU gyorsítótárat (Least Recently Used), amely a CPU használatának csökkentésével növeli a teljesítményt. Néhány játékkal problémák adódhatnak, különösen a TotK 1.2.1 esetében, ezért tiltsa le, ha a játék nem indul el vagy véletlenszerűen összeomlik. Kiterjesztett Dinamikus Állapot Engedélyezi a Vulkan funkciókat a teljesítmény, a renderelés javításához és erőforrások megtakarításához a pipeline létrehozásánál, miközben alacsony CPU/GPU használatot tart fenn. Ezek a kiterjesztések növelhetik az eszköz hőmérsékletét, és a régebbi A6XX sorozatú GPU-k nem feltétlenül reagálnak megfelelően. Állítsa 0-ra a Yuzu által emulált formátumok használatához. - VertexInputDynamicState - Javítja a teljesítményt újabb eszközökön. Csak Vulkan 1.3+ GPU-kon támogatott. Magsebesség szinkronizálása A mag sebességének szinkronizálása a maximális sebesség százalékával a teljesítmény javítása érdekében a játék tényleges sebességének megváltoztatása nélkül. Automatikus Stub használata diff --git a/src/android/app/src/main/res/values-id/strings.xml b/src/android/app/src/main/res/values-id/strings.xml index 7741089115..ee5c8db04e 100644 --- a/src/android/app/src/main/res/values-id/strings.xml +++ b/src/android/app/src/main/res/values-id/strings.xml @@ -50,8 +50,6 @@ Aktifkan atau nonaktifkan cache LRU (Least Recently Used), meningkatkan performa dengan menghemat penggunaan CPU. Beberapa game memiliki masalah dengannya, terutama TotK 1.2.1, jadi nonaktifkan jika game tidak mau boot atau sering crash. Status Dinamis Ekstensi Mengaktifkan fitur Vulkan untuk meningkatkan performa, rendering, dan menghemat sumber daya saat pembuatan pipeline sambil mempertahankan penggunaan CPU/GPU yang rendah. Ekstensi ini dapat meningkatkan suhu perangkat, dan GPU seri A6XX lama mungkin tidak merespons dengan benar. Setel ke 0 untuk menggunakan format emulasi Yuzu. - VertexInputDynamicState - Meningkatkan performa di perangkat baru. Hanya didukung di GPU Vulkan 1.3+. Sinkronisasi Kecepatan Inti Sinkronkan kecepatan inti dengan persentase kecepatan maksimum untuk meningkatkan performa tanpa mengubah kecepatan sebenarnya dari permainan. Gunakan Auto Stub diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index 654b27a812..3ed465d956 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -50,8 +50,6 @@ Abilita o disabilita la cache LRU (Least Recently Used), aumentando le prestazioni risparmiando l\'utilizzo della CPU. Alcuni giochi hanno problemi con essa, in particolare TotK 1.2.1, quindi disabilitala se il gioco non si avvia o si blocca casualmente. Stato dinamico esteso Abilita funzionalità Vulkan per migliorare prestazioni, rendering e risparmiare risorse durante la creazione della pipeline mantenendo un basso utilizzo di CPU/GPU. Queste estensioni possono aumentare la temperatura del dispositivo e le GPU più vecchie della serie A6XX potrebbero non rispondere correttamente. Imposta su 0 per usare i formati emulati da Yuzu. - VertexInputDynamicState - Migliora le prestazioni sui dispositivi più recenti. Supportato solo su GPU Vulkan 1.3+. Sincronizza velocità core Sincronizza la velocità del core con la percentuale massima di velocità per migliorare le prestazioni senza alterare la velocità effettiva del gioco. Usa Auto Stub diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index e2d2985a66..6ce448998d 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -50,8 +50,6 @@ LRUキャッシュ(最近最も使われていない)を有効または無効にし、CPU使用率を節約してパフォーマンスを向上させます。一部のゲーム(特にTotK 1.2.1)で問題が発生する可能性があるため、ゲームが起動しないかランダムにクラッシュする場合は無効にしてください。 拡張ダイナミックステート Vulkan機能を有効にしてパフォーマンスとレンダリングを向上させ、パイプライン作成時のリソースを節約しながらCPU/GPU使用率を低く保ちます。これらの拡張機能はデバイスの温度を上昇させる可能性があり、古いA6XXシリーズのGPUでは正しく反応しない場合があります。Yuzuのエミュレート形式を使用するには0に設定します。 - 頂点入力動的状態 - 新しいデバイスでパフォーマンスを向上させます。Vulkan 1.3+ GPUでのみサポートされています。 コア速度の同期 コアの速度を最大速度パーセンテージに同期させ、ゲームの実際の速度を変えずにパフォーマンスを向上させます。 自動スタブを使用 diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index 5dbb6d883e..8f232711f6 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -50,8 +50,6 @@ LRU 캐시(최근 사용되지 않은 항목)를 활성화 또는 비활성화하여 CPU 사용량을 절약하고 성능을 향상시킵니다. 일부 게임(특히 TotK 1.2.1)에서 문제가 발생할 수 있으므로 게임이 부팅되지 않거나 무작위로 충돌하는 경우 비활성화하세요. 확장 동적 상태 Vulkan 기능을 활성화하여 파이프라인 생성 시 성능, 렌더링을 개선하고 리소스를 절약하면서 CPU/GPU 사용량을 낮게 유지합니다. 이러한 확장 기능은 장치 온도를 높일 수 있으며, 이전 A6XX 라인의 GPU는 제대로 반응하지 않을 수 있습니다. Yuzu 에뮬레이션 형식을 사용하려면 0으로 설정하세요. - 정점 입력 동적 상태 - 최신 기기에서 성능을 향상시킵니다. Vulkan 1.3+ GPU에서만 지원됩니다. 코어 속도 동기화 코어 틱 속도를 최대 속도 백분율과 동기화하여 게임의 실제 속도를 변경하지 않고 성능을 향상시킵니다. 자동 스텁 사용 diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index 1a5b5ccefc..b3864defcd 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -50,8 +50,6 @@ Aktiver eller deaktiver LRU-mellomlager (Least Recently Used), som forbedrer ytelsen ved å spare CPU-bruk. Noen spill har problemer med dette, spesielt TotK 1.2.1, så deaktiver hvis spillet ikke starter eller krasjer tilfeldig. Utvidet dynamisk tilstand Aktiverer Vulkan-funksjoner for å forbedre ytelse, rendering og spare ressurser ved pipeline-opprettelse samtidig som CPU/GPU-bruken holdes lav. Disse utvidelsene kan øke enhetstemperaturen, og eldre A6XX-serien GPU-er kan reagere unormalt. Sett til 0 for å bruke Yuzus emulerte formater. - VertexInputDynamicState - Forbedrer ytelsen på nyere enheter. Støttes kun på Vulkan 1.3+ GPU-er. Synkroniser kjernespeed Synkroniser kjernens hastighet med maksimal hastighetsprosent for å forbedre ytelsen uten å endre spillets faktiske hastighet. Bruk Auto Stub diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index 04a71eb8f1..934ee8d54d 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -50,8 +50,6 @@ Włącz lub wyłącz pamięć podręczną LRU (najrzadziej używane), zwiększając wydajność poprzez oszczędzanie użycia procesora. Niektóre gry mają z nią problemy, szczególnie TotK 1.2.1, więc wyłącz, jeśli gra się nie uruchamia lub losowo się zawiesza. Rozszerzony stan dynamiczny Włącza funkcje Vulkan w celu poprawy wydajności, renderowania i oszczędzania zasobów podczas tworzenia potoku, utrzymując niskie użycie CPU/GPU. Te rozszerzenia mogą zwiększać temperaturę urządzenia, a starsze GPU z serii A6XX mogą nie reagować prawidłowo. Ustaw na 0, aby używać formatów emulowanych przez Yuzu. - VertexInputDynamicState - Poprawia wydajność na nowszych urządzeniach. Obsługiwane tylko przez GPU Vulkan 1.3+. Synchronizuj prędkość rdzenia Synchronizuje prędkość rdzenia z maksymalnym procentem prędkości, aby poprawić wydajność bez zmiany rzeczywistej prędkości gry. Użyj Auto Stub diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index d5eb1f6e7d..682212ddee 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -50,8 +50,6 @@ Ative ou desative o cache LRU (Least Recently Used), aumentando o desempenho ao economizar uso da CPU. Alguns jogos têm problemas com ele, especialmente TotK 1.2.1, então desative se o jogo não iniciar ou travar aleatoriamente. Estado Dinâmico Estendido Ativa recursos Vulkan para melhorar desempenho, renderização e economizar recursos na criação de pipelines mantendo baixo uso de CPU/GPU. Essas extensões podem aumentar a temperatura do dispositivo e GPUs mais antigas da linha A6XX podem não responder corretamente. Defina como 0 para usar formatos emulados do Yuzu. - VertexInputDynamicState - Melhora desempenho em dispositivos mais novos. Suportado apenas em GPUs Vulkan 1.3+. Sincronizar velocidade do núcleo Sincroniza a velocidade do núcleo com a porcentagem máxima de velocidade para melhorar o desempenho sem alterar a velocidade real do jogo. Usar Auto Stub diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 0f4cb60e18..56d37faa55 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -50,8 +50,6 @@ Ative ou desative a cache LRU (Least Recently Used), aumentando o desempenho ao poupar utilização da CPU. Alguns jogos têm problemas com ela, especialmente TotK 1.2.1, por isso desative se o jogo não arrancar ou falhar aleatoriamente. Estado Dinâmico Estendido Ativa funcionalidades Vulkan para melhorar desempenho, renderização e poupar recursos na criação de pipelines mantendo baixo uso de CPU/GPU. Estas extensões podem aumentar a temperatura do dispositivo e GPUs mais antigas da linha A6XX podem não responder corretamente. Defina como 0 para usar formatos emulados do Yuzu. - VertexInputDynamicState - Melhora o desempenho em dispositivos mais recentes. Suportado apenas em GPUs Vulkan 1.3+. Sincronizar velocidade do núcleo Sincroniza a velocidade do núcleo com a percentagem máxima de velocidade para melhorar o desempenho sem alterar a velocidade real do jogo. Usar Auto Stub diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index 243494ba5d..4f18397c37 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -50,8 +50,6 @@ Включите или отключите кэш LRU (наименее недавно использованный), что повышает производительность за счет экономии использования ЦП. Некоторые игры имеют проблемы с ним, особенно TotK 1.2.1, поэтому отключите, если игра не запускается или случайно вылетает. Расширенное динамическое состояние Включает функции Vulkan для улучшения производительности, рендеринга и экономии ресурсов при создании конвейеров, сохраняя низкое использование CPU/GPU. Эти расширения могут повысить температуру устройства, а старые GPU серии A6XX могут работать некорректно. Установите 0 для использования эмулируемых форматов Yuzu. - Динамическое состояние ввода вершин - Улучшает производительность на новых устройствах. Поддерживается только GPU с Vulkan 1.3+. Синхронизация скорости ядра Синхронизирует скорость ядра с максимальным процентом скорости для улучшения производительности без изменения фактической скорости игры. Использовать Auto Stub diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index 6fd938bcc4..927efccded 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -50,8 +50,6 @@ Увімкніть або вимкніть кеш LRU (найменш нещодавно використаний), що підвищує продуктивність за рахунок економії використання CPU. Деякі ігри мають проблеми з ним, особливо TotK 1.2.1, тому вимкніть, якщо гра не запускається або випадково вилітає. Розширений динамічний стан Активує функції Vulkan для покращення продуктивності, рендерингу та економії ресурсів під час створення конвеєрів, зберігаючи низьке використання CPU/GPU. Ці розширення можуть підвищити температуру пристрою, а старі GPU серії A6XX можуть реагувати некоректно. Встановіть 0 для використання емульованих форматів Yuzu. - Динамічний стан вводу вершин - Покращує продуктивність на нових пристроях. Підтримується лише GPU з Vulkan 1.3+. Синхронізувати швидкість ядра Синхронізує швидкість ядра з максимальним відсотком швидкості для покращення продуктивності без зміни реальної швидкості гри. Використовувати Auto Stub diff --git a/src/android/app/src/main/res/values-vi/strings.xml b/src/android/app/src/main/res/values-vi/strings.xml index 083af5f53f..8f861e3065 100644 --- a/src/android/app/src/main/res/values-vi/strings.xml +++ b/src/android/app/src/main/res/values-vi/strings.xml @@ -50,8 +50,6 @@ Bật hoặc tắt bộ nhớ đệm LRU (ít được sử dụng gần đây nhất), tăng hiệu suất bằng cách tiết kiệm sử dụng CPU. Một số trò chơi có vấn đề với nó, đặc biệt là TotK 1.2.1, vì vậy hãy tắt nếu trò chơi không khởi động hoặc bị treo ngẫu nhiên. Trạng thái động mở rộng Kích hoạt các tính năng Vulkan để cải thiện hiệu suất, kết xuất và tiết kiệm tài nguyên khi tạo pipeline trong khi vẫn duy trì mức sử dụng CPU/GPU thấp. Các tiện ích mở rộng này có thể làm tăng nhiệt độ thiết bị và GPU dòng A6XX cũ hơn có thể không phản ứng đúng cách. Đặt thành 0 để sử dụng định dạng mô phỏng của Yuzu. - Trạng thái động đầu vào đỉnh - Cải thiện hiệu suất trên các thiết bị mới hơn. Chỉ được hỗ trợ trên GPU Vulkan 1.3+. Đồng bộ tốc độ lõi Đồng bộ tốc độ lõi với tỷ lệ phần trăm tốc độ tối đa để cải thiện hiệu suất mà không làm thay đổi tốc độ thực tế của trò chơi. Sử dụng Auto Stub diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index 007f6b9a56..c2a69cc3aa 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -50,8 +50,6 @@ 启用或禁用LRU(最近最少使用)缓存,通过节省CPU使用来提高性能。某些游戏(尤其是TotK 1.2.1)可能存在问题,如果游戏无法启动或随机崩溃,请禁用它。 扩展动态状态 启用Vulkan功能以在保持低CPU/GPU使用率的同时提高性能、渲染效果并节省管道创建资源。这些扩展可能会提高设备温度,较旧的A6XX系列GPU可能无法正确响应。设置为0可使用Yuzu模拟格式。 - 顶点输入动态状态 - 提高新设备上的性能。仅支持Vulkan 1.3+ GPU。 同步核心速度 将核心速度与最大速度百分比同步,在不改变游戏实际速度的情况下提高性能。 使用自动存根 diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index d7d311e810..b0da549dab 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -50,8 +50,6 @@ 啟用或停用LRU(最近最少使用)快取,通過節省CPU使用來提高效能。某些遊戲(尤其是TotK 1.2.1)可能存在問題,如果遊戲無法啟動或隨機崩潰,請停用它。 擴展動態狀態 啟用Vulkan功能以在保持低CPU/GPU使用率的同時提高效能、渲染效果並節省管線建立資源。這些擴充可能會提高裝置溫度,較舊的A6XX系列GPU可能無法正確響應。設為0可使用Yuzu模擬格式。 - 頂點輸入動態狀態 - 提高新裝置上的效能。僅支援Vulkan 1.3+ GPU。 同步核心速度 將核心速度與最大速度百分比同步,在不改變遊戲實際速度的情況下提高效能。 使用自動存根 diff --git a/src/android/app/src/main/res/values/arrays.xml b/src/android/app/src/main/res/values/arrays.xml index eeac14d6f4..cb108dc548 100644 --- a/src/android/app/src/main/res/values/arrays.xml +++ b/src/android/app/src/main/res/values/arrays.xml @@ -21,18 +21,6 @@ 1 - - @string/memory_4gb - @string/memory_6gb - @string/memory_8gb - - - - 0 - 1 - 2 - - @string/language_brazilian_portuguese @string/language_british_english diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 45cfb1c32d..efb8178e68 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -12,10 +12,8 @@ (Enhanced) (Skipping) - Building - Shader(s) System: - Show Performance Stats Overlay + ShoW Performance Stats Overlay Customization Visibility Overlay @@ -33,8 +31,6 @@ Display the amount of RAM used by the system Show Battery Temperature Display current Battery temperature in Celsius and Fahrenheit - Show Shaders Building - Display current number of shaders being built Overlay Position Choose where the performance stats overlay is displayed on the screen Top Left @@ -52,9 +48,7 @@ Enhanced Frame Pacing Ensures smooth and consistent frame delivery by synchronizing the timing between frames, reducing stuttering and uneven animation. Ideal for games that experience frame timing instability or micro-stutters during gameplay. Extended Dynamic State - Enables Vulkan features to improve performance, rendering, and save resources on pipeline creation while maintaining lower CPU/GPU usage. These extensions may increase device temperature, and GPUs belonging to the older A6XX line may not react properly. Set to 0 to use Legacy emulated formats. Setting 3 will only work on new devices. - VertexInputDynamicState - Improves performance on newer devices. Only supported on Vulkan 1.3+ GPUs. + Enables Vulkan features to improve performance, rendering, and save resources on pipeline creation while maintaining lower CPU/GPU usage. These extensions may increase device temperature, and GPUs belonging to the older A6XX line may not react properly. Set to 0 to use Legacy emulated formats. Synchronize Core Speed Synchronize the core tick speed to the maximum speed percentage to improve performance without altering the game\'s actual speed. Use Auto Stub @@ -365,16 +359,12 @@ Specifies the percentage to limit emulation speed. 100% is the normal speed. Values higher or lower will increase or decrease the speed limit. CPU backend CPU accuracy - Flush debug logs by line - Flushes debugging logs on each line written, making debugging easier in cases of crashing or freezing. %1$s%2$s Device name Docked Mode Increases resolution, decreasing performance. Handheld Mode is used when disabled, lowering resolution and increasing performance. - Memory Layout - Change the emulated memory layout. This setting will not increase performance, but may help with games utilizing high resolutions via mods. Do not use on phones with 8GB of RAM or less. Emulated region Emulated language Select RTC date @@ -419,7 +409,6 @@ Graphics debugging Sets the graphics API to a slow debugging mode. Fastmem - Logging Output engine @@ -689,11 +678,6 @@ Korea Taiwan - - 4GB (Recommended) - 6GB (Unsafe) - 8GB (Unsafe) - 日本語 English diff --git a/src/common/settings.h b/src/common/settings.h index c7d34e6f2f..58044103f6 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -446,21 +446,13 @@ struct Values { Category::RendererAdvanced}; SwitchableSetting dyna_state{linkage, -#ifdef ANDROID - 2, -#else - 2, -#endif + 0, 0, 3, "dyna_state", Category::RendererExtensions, Specialization::Scalar}; - SwitchableSetting vertex_input{linkage, - false, - "vertex_input", - Category::RendererExtensions}; SwitchableSetting provoking_vertex{linkage, true, "provoking_vertex", Category::RendererExtensions}; SwitchableSetting descriptor_indexing{linkage, true, "descriptor_indexing", Category::RendererExtensions}; diff --git a/src/core/hle/kernel/k_memory_layout.h b/src/core/hle/kernel/k_memory_layout.h index 7ca5a5b41e..d7adb31699 100644 --- a/src/core/hle/kernel/k_memory_layout.h +++ b/src/core/hle/kernel/k_memory_layout.h @@ -25,7 +25,7 @@ constexpr std::size_t GetMaximumOverheadSize(std::size_t size) { } constexpr std::size_t MainMemorySize = 4_GiB; -constexpr std::size_t MainMemorySizeMax = 12_GiB; +constexpr std::size_t MainMemorySizeMax = 8_GiB; constexpr std::size_t ReservedEarlyDramSize = 384_KiB; constexpr std::size_t DramPhysicalAddress = 0x80000000; diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index c2ed3a5719..4b4331d2f4 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp @@ -803,9 +803,6 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, VK_DYNAMIC_STATE_STENCIL_REFERENCE, VK_DYNAMIC_STATE_LINE_WIDTH, VK_DYNAMIC_STATE_LINE_STIPPLE, }; - if (key.state.dynamic_vertex_input) { - dynamic_states.push_back(VK_DYNAMIC_STATE_VERTEX_INPUT_EXT); - } if (key.state.extended_dynamic_state) { static constexpr std::array extended{ VK_DYNAMIC_STATE_CULL_MODE_EXT, @@ -818,6 +815,9 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT, VK_DYNAMIC_STATE_STENCIL_OP_EXT, }; + if (key.state.dynamic_vertex_input) { + dynamic_states.push_back(VK_DYNAMIC_STATE_VERTEX_INPUT_EXT); + } dynamic_states.insert(dynamic_states.end(), extended.begin(), extended.end()); if (key.state.extended_dynamic_state_2) { static constexpr std::array extended2{ diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 82d68e59f4..51775f7f5c 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -128,8 +128,7 @@ Shader::AttributeType CastAttributeType(const FixedPipelineState::VertexAttribut return Shader::AttributeType::Float; } -Shader::AttributeType AttributeType(const FixedPipelineState& state, size_t index) -{ +Shader::AttributeType AttributeType(const FixedPipelineState& state, size_t index) { switch (state.DynamicAttributeType(index)) { case 0: return Shader::AttributeType::Disabled; @@ -180,8 +179,7 @@ Shader::RuntimeInfo MakeRuntimeInfo(std::span program info.generic_input_types[index] = AttributeType(key.state, index); } } else { - std::ranges::transform(key.state.attributes, - info.generic_input_types.begin(), + std::ranges::transform(key.state.attributes, info.generic_input_types.begin(), &CastAttributeType); } break; @@ -406,8 +404,6 @@ PipelineCache::PipelineCache(Tegra::MaxwellDeviceMemoryManager& device_memory_, const u8 dynamic_state = Settings::values.dyna_state.GetValue(); - const bool vertex_input = Settings::values.vertex_input.GetValue(); - LOG_INFO(Render_Vulkan, "DynamicState value is set to {}", (u32) dynamic_state); dynamic_features = DynamicFeatures{ @@ -421,7 +417,7 @@ PipelineCache::PipelineCache(Tegra::MaxwellDeviceMemoryManager& device_memory_, && dynamic_state > 2, .has_extended_dynamic_state_3_enables = device.IsExtExtendedDynamicState3EnablesSupported() && dynamic_state > 2, - .has_dynamic_vertex_input = device.IsExtVertexInputDynamicStateSupported() && vertex_input, + .has_dynamic_vertex_input = device.IsExtVertexInputDynamicStateSupported(), }; LOG_INFO(Render_Vulkan, "DynamicState1: {}", dynamic_features.has_extended_dynamic_state); diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 62c057bfb4..d0cff37f61 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -952,28 +952,28 @@ void RasterizerVulkan::UpdateDynamicStates() { UpdateDepthBiasEnable(regs); } if (device.IsExtExtendedDynamicState3EnablesSupported()) { - using namespace Tegra::Engines; - - if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE - || device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_PROPRIETARY) { - struct In { - const Maxwell3D::Regs::VertexAttribute::Type d; - In(Maxwell3D::Regs::VertexAttribute::Type n) : d(n) {} - bool operator()(Maxwell3D::Regs::VertexAttribute n) const { - return n.type == d; - } - }; - - auto has_float = std::any_of( - regs.vertex_attrib_format.begin(), regs.vertex_attrib_format.end(), - In(Maxwell3D::Regs::VertexAttribute::Type::Float)); - - if (regs.logic_op.enable) - regs.logic_op.enable = static_cast(!has_float); - - UpdateLogicOpEnable(regs); - } else - UpdateLogicOpEnable(regs); + using namespace Tegra::Engines; + + if (device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_OPEN_SOURCE + || device.GetDriverID() == VkDriverIdKHR::VK_DRIVER_ID_AMD_PROPRIETARY) { + struct In { + const Maxwell3D::Regs::VertexAttribute::Type d; + In(Maxwell3D::Regs::VertexAttribute::Type n) : d(n) {} + bool operator()(Maxwell3D::Regs::VertexAttribute n) const { + return n.type == d; + } + }; + + auto has_float = std::any_of( + regs.vertex_attrib_format.begin(), regs.vertex_attrib_format.end(), + In(Maxwell3D::Regs::VertexAttribute::Type::Float)); + + if (regs.logic_op.enable) + regs.logic_op.enable = static_cast(!has_float); + + UpdateLogicOpEnable(regs); + } else + UpdateLogicOpEnable(regs); UpdateDepthClampEnable(regs); } } @@ -1103,21 +1103,12 @@ void RasterizerVulkan::UpdateDepthBias(Tegra::Engines::Maxwell3D::Regs& regs) { regs.zeta.format == Tegra::DepthFormat::X8Z24_UNORM || regs.zeta.format == Tegra::DepthFormat::S8Z24_UNORM || regs.zeta.format == Tegra::DepthFormat::V8Z24_UNORM; - - size_t length = sizeof(NEEDS_D24) / sizeof(u64); - bool needs_convert = false; - for (size_t i = 0; i < length; ++i) { - if (NEEDS_D24[i] == program_id) { - needs_convert = true; - break; - } - } - - if (is_d24 && !device.SupportsD24DepthBuffer() && needs_convert) { + if (is_d24 && !device.SupportsD24DepthBuffer() && program_id == 0x1006A800016E000ULL) { + // Only activate this in Super Smash Brothers Ultimate // the base formulas can be obtained from here: // https://docs.microsoft.com/en-us/windows/win32/direct3d11/d3d10-graphics-programming-guide-output-merger-stage-depth-bias - const double rescale_factor = static_cast(1ULL << (32 - 24)) - / (static_cast(0x1.ep+127)); + const double rescale_factor = + static_cast(1ULL << (32 - 24)) / (static_cast(0x1.ep+127)); units = static_cast(static_cast(units) * rescale_factor); } scheduler.Record([constant = units, clamp = regs.depth_bias_clamp, diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index 33bc6cd8e4..0617b37f05 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h @@ -144,10 +144,6 @@ private: static constexpr size_t MAX_IMAGE_VIEWS = MAX_TEXTURES + MAX_IMAGES; static constexpr VkDeviceSize DEFAULT_BUFFER_SIZE = 4 * sizeof(float); - static constexpr u64 NEEDS_D24[] = { - 0x1006A800016E000ULL, // SSBU - 0x0100E95004038000ULL, // XC2 - }; template void PrepareDraw(bool is_indexed, Func&&); diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 87cfe06086..474e420daf 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -459,7 +459,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR first_next = &diagnostics_nv; } - // TODO(alekpop): impl is incomplete, needs the settings to be assigned. VkPhysicalDeviceDescriptorIndexingFeaturesEXT descriptor_indexing{ .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, .pNext = use_diagnostics_nv ? static_cast(&diagnostics_nv) : static_cast(&features2), @@ -492,20 +491,17 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR CollectPhysicalMemoryInfo(); CollectToolingInfo(); - // TODO(alekpop): many things here are still applying and need to be changed to match the real behaviors. - if (is_qualcomm || is_turnip) { LOG_WARNING(Render_Vulkan, "Qualcomm and Turnip drivers have broken VK_EXT_custom_border_color"); - RemoveExtensionFeature(extensions.custom_border_color, - features.custom_border_color, - VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME); + //RemoveExtensionFeature(extensions.custom_border_color, features.custom_border_color, + //VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME); } if (is_qualcomm) { LOG_WARNING(Render_Vulkan, "Qualcomm drivers have a slow VK_KHR_push_descriptor implementation"); - RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); + //RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); #if defined(ANDROID) && defined(ARCHITECTURE_arm64) // Patch the driver to enable BCn textures. @@ -539,7 +535,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR } else if (arch <= NvidiaArchitecture::Arch_Volta) { if (nv_major_version < 527) { LOG_WARNING(Render_Vulkan, "Volta and older have broken VK_KHR_push_descriptor"); - RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); + //RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); } } if (nv_major_version >= 510) { @@ -547,16 +543,15 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR cant_blit_msaa = true; } } - if (extensions.extended_dynamic_state && is_radv) { // Mask driver version variant const u32 version = (properties.properties.driverVersion << 3) >> 3; if (version < VK_MAKE_API_VERSION(0, 21, 2, 0)) { LOG_WARNING(Render_Vulkan, "RADV versions older than 21.2 have broken VK_EXT_extended_dynamic_state"); - RemoveExtensionFeature(extensions.extended_dynamic_state, - features.extended_dynamic_state, - VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); + //RemoveExtensionFeature(extensions.extended_dynamic_state, + //features.extended_dynamic_state, + //VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); } } if (extensions.extended_dynamic_state2 && is_radv) { @@ -565,9 +560,9 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR LOG_WARNING( Render_Vulkan, "RADV versions older than 22.3.1 have broken VK_EXT_extended_dynamic_state2"); - RemoveExtensionFeature(extensions.extended_dynamic_state2, - features.extended_dynamic_state2, - VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); + // RemoveExtensionFeature(extensions.extended_dynamic_state2, + // features.extended_dynamic_state2, + // VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); } } if (extensions.extended_dynamic_state2 && is_qualcomm) { @@ -577,54 +572,53 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR // Qualcomm Adreno 7xx drivers do not properly support extended_dynamic_state2. LOG_WARNING(Render_Vulkan, "Qualcomm Adreno 7xx drivers have broken VK_EXT_extended_dynamic_state2"); - RemoveExtensionFeature(extensions.extended_dynamic_state2, - features.extended_dynamic_state2, - VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); + //RemoveExtensionFeature(extensions.extended_dynamic_state2, + //features.extended_dynamic_state2, + //VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); } } if (extensions.extended_dynamic_state3 && is_radv) { LOG_WARNING(Render_Vulkan, "RADV has broken extendedDynamicState3ColorBlendEquation"); - features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false; - features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false; - dynamic_state3_blending = false; + features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = true; + features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = true; + dynamic_state3_blending = true; const u32 version = (properties.properties.driverVersion << 3) >> 3; if (version < VK_MAKE_API_VERSION(0, 23, 1, 0)) { LOG_WARNING(Render_Vulkan, "RADV versions older than 23.1.0 have broken depth clamp dynamic state"); - features.extended_dynamic_state3.extendedDynamicState3DepthClampEnable = false; - dynamic_state3_enables = false; + features.extended_dynamic_state3.extendedDynamicState3DepthClampEnable = true; + dynamic_state3_enables = true; } } if (extensions.extended_dynamic_state3 && (is_amd_driver || driver_id == VK_DRIVER_ID_SAMSUNG_PROPRIETARY)) { // AMD and Samsung drivers have broken extendedDynamicState3ColorBlendEquation LOG_WARNING(Render_Vulkan, "AMD and Samsung drivers have broken extendedDynamicState3ColorBlendEquation"); - features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false; - features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false; - dynamic_state3_blending = false; + features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = true; + features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = true; + dynamic_state3_blending = true; } if (extensions.vertex_input_dynamic_state && is_radv) { - // TODO(alekpop): Blacklist only offending driver versions - // NOTE(alekpop): It still affects the latest RADV. - // TODO(alekpop): Confirm if RDNA1 is affected + // TODO(ameerj): Blacklist only offending driver versions + // TODO(ameerj): Confirm if RDNA1 is affected const bool is_rdna2 = supported_extensions.contains(VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME); if (is_rdna2) { LOG_WARNING(Render_Vulkan, "RADV has broken VK_EXT_vertex_input_dynamic_state on RDNA2 hardware"); - RemoveExtensionFeature(extensions.vertex_input_dynamic_state, - features.vertex_input_dynamic_state, - VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); + // RemoveExtensionFeature(extensions.vertex_input_dynamic_state, + // features.vertex_input_dynamic_state, + // VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); } } if (extensions.vertex_input_dynamic_state && is_qualcomm) { // Qualcomm drivers do not properly support vertex_input_dynamic_state. LOG_WARNING(Render_Vulkan, "Qualcomm drivers have broken VK_EXT_vertex_input_dynamic_state"); - RemoveExtensionFeature(extensions.vertex_input_dynamic_state, - features.vertex_input_dynamic_state, - VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); + //RemoveExtensionFeature(extensions.vertex_input_dynamic_state, + // features.vertex_input_dynamic_state, + // VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); } sets_per_pool = 64; @@ -658,9 +652,9 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR const u32 version = (properties.properties.driverVersion << 3) >> 3; if (version < VK_MAKE_API_VERSION(27, 20, 100, 0)) { LOG_WARNING(Render_Vulkan, "Intel has broken VK_EXT_vertex_input_dynamic_state"); - RemoveExtensionFeature(extensions.vertex_input_dynamic_state, - features.vertex_input_dynamic_state, - VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); + //RemoveExtensionFeature(extensions.vertex_input_dynamic_state, + //features.vertex_input_dynamic_state, + //VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); } } if (features.shader_float16_int8.shaderFloat16 && is_intel_windows) { @@ -687,14 +681,14 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR // mesa/mesa/-/commit/ff91c5ca42bc80aa411cb3fd8f550aa6fdd16bdc LOG_WARNING(Render_Vulkan, "ANV drivers 22.3.0 to 23.1.0 have broken VK_KHR_push_descriptor"); - RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); + //RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); } } else if (extensions.push_descriptor && is_nvidia) { const auto arch = GetNvidiaArch(); if (arch <= NvidiaArchitecture::Arch_Pascal) { LOG_WARNING(Render_Vulkan, "Pascal and older architectures have broken VK_KHR_push_descriptor"); - RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); + //RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); } } @@ -728,8 +722,33 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR dynamic_state3_enables = true; } - must_emulate_scaled_formats = !Settings::values.dyna_state.GetValue(); - LOG_INFO(Render_Vulkan, "Scaled format emulation: {}", must_emulate_scaled_formats); + if (Settings::values.dyna_state.GetValue() == 0) { + must_emulate_scaled_formats = true; + LOG_INFO(Render_Vulkan, "Dynamic state is disabled (dyna_state = 0), forcing scaled format emulation ON"); + + // Disable dynamic state 1-3 and all extensions + RemoveExtensionFeature(extensions.custom_border_color, features.custom_border_color, + VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME); + + RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state, + VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); + + RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2, + VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); + + RemoveExtensionFeature(extensions.vertex_input_dynamic_state, features.vertex_input_dynamic_state, + VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); + + RemoveExtensionFeature(extensions.extended_dynamic_state3, features.extended_dynamic_state3, + VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME); + dynamic_state3_blending = false; + dynamic_state3_enables = false; + + LOG_INFO(Render_Vulkan, "All dynamic state extensions and features have been disabled"); + } else { + must_emulate_scaled_formats = false; + LOG_INFO(Render_Vulkan, "Dynamic state is enabled (dyna_state = 1-3), disabling scaled format emulation"); + } logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions), first_next, dld); @@ -1187,53 +1206,34 @@ void Device::RemoveUnsuitableExtensions() { RemoveExtensionFeatureIfUnsuitable(extensions.depth_clip_control, features.depth_clip_control, VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME); - int dynamic_state = Settings::values.dyna_state.GetValue(); - - // VK_EXT_extended_dynamic_state - if (dynamic_state > 0) { - extensions.extended_dynamic_state = features.extended_dynamic_state.extendedDynamicState; - RemoveExtensionFeatureIfUnsuitable(extensions.extended_dynamic_state, - features.extended_dynamic_state, - VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); - } else { - RemoveExtensionFeature(extensions.extended_dynamic_state, - features.extended_dynamic_state, - VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); - } + /* */ // VK_EXT_extended_dynamic_state + extensions.extended_dynamic_state = features.extended_dynamic_state.extendedDynamicState; + RemoveExtensionFeatureIfUnsuitable(extensions.extended_dynamic_state, + features.extended_dynamic_state, + VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); // VK_EXT_extended_dynamic_state2 - if (dynamic_state > 1) { - extensions.extended_dynamic_state2 = features.extended_dynamic_state2.extendedDynamicState2; - RemoveExtensionFeatureIfUnsuitable(extensions.extended_dynamic_state2, - features.extended_dynamic_state2, - VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); - } else { - RemoveExtensionFeature(extensions.extended_dynamic_state2, - features.extended_dynamic_state2, - VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); - } + extensions.extended_dynamic_state2 = features.extended_dynamic_state2.extendedDynamicState2; + RemoveExtensionFeatureIfUnsuitable(extensions.extended_dynamic_state2, + features.extended_dynamic_state2, + VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME); // VK_EXT_extended_dynamic_state3 - if (dynamic_state > 2) { - dynamic_state3_blending - = features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable - && features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation - && features.extended_dynamic_state3.extendedDynamicState3ColorWriteMask; - dynamic_state3_enables - = features.extended_dynamic_state3.extendedDynamicState3DepthClampEnable - && features.extended_dynamic_state3.extendedDynamicState3LogicOpEnable; + dynamic_state3_blending = + features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable && + features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation && + features.extended_dynamic_state3.extendedDynamicState3ColorWriteMask; + dynamic_state3_enables = + features.extended_dynamic_state3.extendedDynamicState3DepthClampEnable && + features.extended_dynamic_state3.extendedDynamicState3LogicOpEnable; + + extensions.extended_dynamic_state3 = dynamic_state3_blending || dynamic_state3_enables; + dynamic_state3_blending = dynamic_state3_blending && extensions.extended_dynamic_state3; + dynamic_state3_enables = dynamic_state3_enables && extensions.extended_dynamic_state3; + RemoveExtensionFeatureIfUnsuitable(extensions.extended_dynamic_state3, + features.extended_dynamic_state3, + VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME); - extensions.extended_dynamic_state3 = dynamic_state3_blending || dynamic_state3_enables; - dynamic_state3_blending = dynamic_state3_blending && extensions.extended_dynamic_state3; - dynamic_state3_enables = dynamic_state3_enables && extensions.extended_dynamic_state3; - RemoveExtensionFeatureIfUnsuitable(extensions.extended_dynamic_state3, - features.extended_dynamic_state3, - VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME); - } else { - RemoveExtensionFeature(extensions.extended_dynamic_state3, - features.extended_dynamic_state3, - VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME); - } // VK_EXT_provoking_vertex if (Settings::values.provoking_vertex.GetValue()) { extensions.provoking_vertex = features.provoking_vertex.provokingVertexLast @@ -1249,58 +1249,49 @@ void Device::RemoveUnsuitableExtensions() { } // VK_KHR_shader_atomic_int64 - extensions.shader_atomic_int64 = features.shader_atomic_int64.shaderBufferInt64Atomics - && features.shader_atomic_int64.shaderSharedInt64Atomics; - RemoveExtensionFeatureIfUnsuitable(extensions.shader_atomic_int64, - features.shader_atomic_int64, + extensions.shader_atomic_int64 = features.shader_atomic_int64.shaderBufferInt64Atomics && + features.shader_atomic_int64.shaderSharedInt64Atomics; + RemoveExtensionFeatureIfUnsuitable(extensions.shader_atomic_int64, features.shader_atomic_int64, VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME); // VK_EXT_shader_demote_to_helper_invocation - extensions.shader_demote_to_helper_invocation = features.shader_demote_to_helper_invocation - .shaderDemoteToHelperInvocation; + extensions.shader_demote_to_helper_invocation = + features.shader_demote_to_helper_invocation.shaderDemoteToHelperInvocation; RemoveExtensionFeatureIfUnsuitable(extensions.shader_demote_to_helper_invocation, features.shader_demote_to_helper_invocation, VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME); // VK_EXT_subgroup_size_control - extensions.subgroup_size_control = features.subgroup_size_control.subgroupSizeControl - && properties.subgroup_size_control.minSubgroupSize - <= GuestWarpSize - && properties.subgroup_size_control.maxSubgroupSize - >= GuestWarpSize; + extensions.subgroup_size_control = + features.subgroup_size_control.subgroupSizeControl && + properties.subgroup_size_control.minSubgroupSize <= GuestWarpSize && + properties.subgroup_size_control.maxSubgroupSize >= GuestWarpSize; RemoveExtensionFeatureIfUnsuitable(extensions.subgroup_size_control, features.subgroup_size_control, VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME); // VK_EXT_transform_feedback - extensions.transform_feedback = features.transform_feedback.transformFeedback - && features.transform_feedback.geometryStreams - && properties.transform_feedback.maxTransformFeedbackStreams - >= 4 - && properties.transform_feedback.maxTransformFeedbackBuffers > 0 - && properties.transform_feedback.transformFeedbackQueries - && properties.transform_feedback.transformFeedbackDraw; - RemoveExtensionFeatureIfUnsuitable(extensions.transform_feedback, - features.transform_feedback, + extensions.transform_feedback = + features.transform_feedback.transformFeedback && + features.transform_feedback.geometryStreams && + properties.transform_feedback.maxTransformFeedbackStreams >= 4 && + properties.transform_feedback.maxTransformFeedbackBuffers > 0 && + properties.transform_feedback.transformFeedbackQueries && + properties.transform_feedback.transformFeedbackDraw; + RemoveExtensionFeatureIfUnsuitable(extensions.transform_feedback, features.transform_feedback, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME); // VK_EXT_vertex_input_dynamic_state - if (Settings::values.vertex_input.GetValue()) { - extensions.vertex_input_dynamic_state = features.vertex_input_dynamic_state - .vertexInputDynamicState; - RemoveExtensionFeatureIfUnsuitable(extensions.vertex_input_dynamic_state, - features.vertex_input_dynamic_state, - VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); - } else { - RemoveExtensionFeature(extensions.vertex_input_dynamic_state, - features.vertex_input_dynamic_state, - VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); - } + extensions.vertex_input_dynamic_state = + features.vertex_input_dynamic_state.vertexInputDynamicState; + RemoveExtensionFeatureIfUnsuitable(extensions.vertex_input_dynamic_state, + features.vertex_input_dynamic_state, + VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME); // VK_KHR_pipeline_executable_properties if (Settings::values.renderer_shader_feedback.GetValue()) { - extensions.pipeline_executable_properties = features.pipeline_executable_properties - .pipelineExecutableInfo; + extensions.pipeline_executable_properties = + features.pipeline_executable_properties.pipelineExecutableInfo; RemoveExtensionFeatureIfUnsuitable(extensions.pipeline_executable_properties, features.pipeline_executable_properties, VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME); @@ -1311,12 +1302,12 @@ void Device::RemoveUnsuitableExtensions() { } // VK_KHR_workgroup_memory_explicit_layout - extensions.workgroup_memory_explicit_layout - = features.features.shaderInt16 - && features.workgroup_memory_explicit_layout.workgroupMemoryExplicitLayout - && features.workgroup_memory_explicit_layout.workgroupMemoryExplicitLayout8BitAccess - && features.workgroup_memory_explicit_layout.workgroupMemoryExplicitLayout16BitAccess - && features.workgroup_memory_explicit_layout.workgroupMemoryExplicitLayoutScalarBlockLayout; + extensions.workgroup_memory_explicit_layout = + features.features.shaderInt16 && + features.workgroup_memory_explicit_layout.workgroupMemoryExplicitLayout && + features.workgroup_memory_explicit_layout.workgroupMemoryExplicitLayout8BitAccess && + features.workgroup_memory_explicit_layout.workgroupMemoryExplicitLayout16BitAccess && + features.workgroup_memory_explicit_layout.workgroupMemoryExplicitLayoutScalarBlockLayout; RemoveExtensionFeatureIfUnsuitable(extensions.workgroup_memory_explicit_layout, features.workgroup_memory_explicit_layout, VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME); diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 01d0eb52f7..ddc9451a7e 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -39,35 +39,27 @@ VK_DEFINE_HANDLE(VmaAllocator) FEATURE(EXT, SubgroupSizeControl, SUBGROUP_SIZE_CONTROL, subgroup_size_control) // Define all features which may be used by the implementation and require an extension here. -#define FOR_EACH_VK_FEATURE_EXT(FEATURE) \ - FEATURE(EXT, CustomBorderColor, CUSTOM_BORDER_COLOR, custom_border_color) \ - FEATURE(EXT, DepthBiasControl, DEPTH_BIAS_CONTROL, depth_bias_control) \ - FEATURE(EXT, DepthClipControl, DEPTH_CLIP_CONTROL, depth_clip_control) \ - FEATURE(EXT, ExtendedDynamicState, EXTENDED_DYNAMIC_STATE, extended_dynamic_state) \ - FEATURE(EXT, ExtendedDynamicState2, EXTENDED_DYNAMIC_STATE_2, extended_dynamic_state2) \ - FEATURE(EXT, ExtendedDynamicState3, EXTENDED_DYNAMIC_STATE_3, extended_dynamic_state3) \ - 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, \ - 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(KHR, \ - PipelineExecutableProperties, \ - PIPELINE_EXECUTABLE_PROPERTIES, \ - pipeline_executable_properties) \ - FEATURE(KHR, \ - WorkgroupMemoryExplicitLayout, \ - WORKGROUP_MEMORY_EXPLICIT_LAYOUT, \ +#define FOR_EACH_VK_FEATURE_EXT(FEATURE) \ + FEATURE(EXT, CustomBorderColor, CUSTOM_BORDER_COLOR, custom_border_color) \ + FEATURE(EXT, DepthBiasControl, DEPTH_BIAS_CONTROL, depth_bias_control) \ + FEATURE(EXT, DepthClipControl, DEPTH_CLIP_CONTROL, depth_clip_control) \ + FEATURE(EXT, ExtendedDynamicState, EXTENDED_DYNAMIC_STATE, extended_dynamic_state) \ + FEATURE(EXT, ExtendedDynamicState2, EXTENDED_DYNAMIC_STATE_2, extended_dynamic_state2) \ + FEATURE(EXT, ExtendedDynamicState3, EXTENDED_DYNAMIC_STATE_3, extended_dynamic_state3) \ + 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, 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(KHR, PipelineExecutableProperties, PIPELINE_EXECUTABLE_PROPERTIES, \ + pipeline_executable_properties) \ + FEATURE(KHR, WorkgroupMemoryExplicitLayout, WORKGROUP_MEMORY_EXPLICIT_LAYOUT, \ workgroup_memory_explicit_layout) -// TODO(alekpop): descriptor index is incomplete and needs fix. - // Define miscellaneous extensions which may be used by the implementation here. #define FOR_EACH_VK_EXTENSION(EXTENSION) \ EXTENSION(EXT, CONDITIONAL_RENDERING, conditional_rendering) \ @@ -157,24 +149,24 @@ VK_DEFINE_HANDLE(VmaAllocator) FEATURE_NAME(variable_pointer, variablePointersStorageBuffer) // Define features where the absence of the feature may result in a degraded experience. -#define FOR_EACH_VK_RECOMMENDED_FEATURE(FEATURE_NAME) \ - FEATURE_NAME(custom_border_color, customBorderColors) \ - FEATURE_NAME(depth_bias_control, depthBiasControl) \ - FEATURE_NAME(depth_bias_control, leastRepresentableValueForceUnormRepresentation) \ - FEATURE_NAME(depth_bias_control, depthBiasExact) \ - FEATURE_NAME(extended_dynamic_state, extendedDynamicState) \ - FEATURE_NAME(format_a4b4g4r4, formatA4B4G4R4) \ - FEATURE_NAME(index_type_uint8, indexTypeUint8) \ - FEATURE_NAME(primitive_topology_list_restart, primitiveTopologyListRestart) \ - FEATURE_NAME(provoking_vertex, provokingVertexLast) \ - FEATURE_NAME(robustness2, nullDescriptor) \ - FEATURE_NAME(robustness2, robustBufferAccess2) \ - FEATURE_NAME(robustness2, robustImageAccess2) \ - FEATURE_NAME(shader_float16_int8, shaderFloat16) \ - FEATURE_NAME(shader_float16_int8, shaderInt8) \ - FEATURE_NAME(timeline_semaphore, timelineSemaphore) \ - FEATURE_NAME(transform_feedback, transformFeedback) \ - FEATURE_NAME(uniform_buffer_standard_layout, uniformBufferStandardLayout) \ +#define FOR_EACH_VK_RECOMMENDED_FEATURE(FEATURE_NAME) \ + FEATURE_NAME(custom_border_color, customBorderColors) \ + FEATURE_NAME(depth_bias_control, depthBiasControl) \ + FEATURE_NAME(depth_bias_control, leastRepresentableValueForceUnormRepresentation) \ + FEATURE_NAME(depth_bias_control, depthBiasExact) \ + FEATURE_NAME(extended_dynamic_state, extendedDynamicState) \ + FEATURE_NAME(format_a4b4g4r4, formatA4B4G4R4) \ + FEATURE_NAME(index_type_uint8, indexTypeUint8) \ + FEATURE_NAME(primitive_topology_list_restart, primitiveTopologyListRestart) \ + FEATURE_NAME(provoking_vertex, provokingVertexLast) \ + FEATURE_NAME(robustness2, nullDescriptor) \ + FEATURE_NAME(robustness2, robustBufferAccess2) \ + FEATURE_NAME(robustness2, robustImageAccess2) \ + FEATURE_NAME(shader_float16_int8, shaderFloat16) \ + FEATURE_NAME(shader_float16_int8, shaderInt8) \ + FEATURE_NAME(timeline_semaphore, timelineSemaphore) \ + FEATURE_NAME(transform_feedback, transformFeedback) \ + FEATURE_NAME(uniform_buffer_standard_layout, uniformBufferStandardLayout) \ FEATURE_NAME(vertex_input_dynamic_state, vertexInputDynamicState) namespace Vulkan { diff --git a/src/yuzu/configuration/configure_graphics_extensions.cpp b/src/yuzu/configuration/configure_graphics_extensions.cpp index 6ac7948288..61491c0ab7 100644 --- a/src/yuzu/configuration/configure_graphics_extensions.cpp +++ b/src/yuzu/configuration/configure_graphics_extensions.cpp @@ -30,8 +30,7 @@ ConfigureGraphicsExtensions::~ConfigureGraphicsExtensions() = default; void ConfigureGraphicsExtensions::SetConfiguration() {} -void ConfigureGraphicsExtensions::Setup(const ConfigurationShared::Builder& builder) -{ +void ConfigureGraphicsExtensions::Setup(const ConfigurationShared::Builder& builder) { auto& layout = *ui->populate_target->layout(); std::map hold{}; // A map will sort the data for us @@ -52,8 +51,6 @@ void ConfigureGraphicsExtensions::Setup(const ConfigurationShared::Builder& buil if (setting->Id() == Settings::values.dyna_state.Id()) { widget->slider->setTickInterval(1); widget->slider->setTickPosition(QSlider::TicksAbove); - } else if (setting->Id() == Settings::values.vertex_input.Id()) { - // widget->checkbox->setDisabled(true); } } diff --git a/src/yuzu/configuration/shared_translation.cpp b/src/yuzu/configuration/shared_translation.cpp index ead67a46d0..da87850fae 100644 --- a/src/yuzu/configuration/shared_translation.cpp +++ b/src/yuzu/configuration/shared_translation.cpp @@ -234,23 +234,13 @@ std::unique_ptr InitializeTranslations(QWidget* parent) { tr("Enables the VkExtendedDynamicState* extensions.\nHigher dynamic states will generally improve " "performance, but may cause issues on certain games or devices.")); - INSERT(Settings, - vertex_input, - tr("VertexInputDynamicState"), - tr("Enables the VkVertexInputDynamicState extension.\n" - "Only Vulkan 1.3+ devices support this extension, and will generally see improved " - "performance.")); - INSERT(Settings, provoking_vertex, tr("Provoking Vertex"), tr("Improves lighting and vertex handling in certain games.\n" "Only Vulkan 1.0+ devices support this extension.")); - INSERT(Settings, - descriptor_indexing, - tr("Descriptor Indexing"), + 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.\n" - "This extension is incomplete. Use with caution.")); + "Some Vulkan 1.1+ and all 1.2+ devices support this extension.")); // Renderer (Debug)