aboutsummaryrefslogtreecommitdiff
path: root/src/qt_common/config/shared_translation.cpp
diff options
context:
space:
mode:
authorForrest Keller <forrestmarkx@outlook.com>2026-01-13 19:18:08 +0100
committercrueter <crueter@eden-emu.dev>2026-01-13 19:18:08 +0100
commitecd01e13fd13b39bff0f2c7c7bc2387c3a2157f4 (patch)
tree4e015762b742b0183f526d6b38b7b54d3a9d7dcb /src/qt_common/config/shared_translation.cpp
parentf544004b5de4ea0fe7277e4a6a9790051b6d0120 (diff)
[video_core] Implement GPU-accelerated texture unswizzling and optimize sparse texture handling (#3246)
- [Added] a new compute shader to handle block-linear unswizzling on the GPU, reducing CPU overhead during texture uploads - [Implemented] BlockLinearUnswizzle3DPass to take advantage of the new compute shader, unimplemented for OpenGL - [Implemented] texture streaming and queue system for large sparse textures to prevent hitches - [Implemented] aggressive garbage collection system to eject large sparse textures to save on memory (Unused) - [Added] user settings to adjust the streaming unswizzle system for low-end machines - [Improved] slightly the ASTC GPU decoding system Co-authored-by: Caio Oliveira <caiooliveirafarias0@gmail.com> Co-authored-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: DraVee <dravee@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3246 Reviewed-by: Maufeat <sahyno1996@gmail.com> Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: DraVee <dravee@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com> Co-authored-by: Forrest Keller <forrestmarkx@outlook.com> Co-committed-by: Forrest Keller <forrestmarkx@outlook.com>
Diffstat (limited to 'src/qt_common/config/shared_translation.cpp')
-rw-r--r--src/qt_common/config/shared_translation.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/qt_common/config/shared_translation.cpp b/src/qt_common/config/shared_translation.cpp
index a3a720db8e..f48dcac55e 100644
--- a/src/qt_common/config/shared_translation.cpp
+++ b/src/qt_common/config/shared_translation.cpp
@@ -288,6 +288,22 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QObject* parent)
tr("Fast GPU Time"),
tr("Overclocks the emulated GPU to increase dynamic resolution and render "
"distance.\nUse 256 for maximal performance and 512 for maximal graphics fidelity."));
+ INSERT(Settings,
+ gpu_unzwizzle_texture_size,
+ tr("GPU Unswizzle Max Texture Size"),
+ tr("Sets the maximum size (MiB) for GPU-based texture unswizzling.\n"
+ "While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones.\n"
+ "Adjust this to find the balance between GPU acceleration and CPU overhead."));
+ INSERT(Settings,
+ gpu_unzwizzle_stream_size,
+ tr("GPU Unswizzle Stream Size"),
+ tr("Sets the maximum amount of texture data (in MiB) processed per frame.\n"
+ "Higher values can reduce stutter during texture loading but may impact frame consistency."));
+ INSERT(Settings,
+ gpu_unzwizzle_chunk_size,
+ tr("GPU Unswizzle Chunk Size"),
+ tr("Determines the number of depth slices processed in a single dispatch.\n"
+ "Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware."));
INSERT(Settings,
use_vulkan_driver_pipeline_cache,
@@ -719,6 +735,30 @@ std::unique_ptr<ComboboxTranslationMap> ComboboxEnumeration(QObject* parent)
PAIR(GpuOverclock, Medium, tr("Medium (256)")),
PAIR(GpuOverclock, High, tr("High (512)")),
}});
+ translations->insert({Settings::EnumMetadata<Settings::GpuUnswizzleSize>::Index(),
+ {
+ PAIR(GpuUnswizzleSize, VerySmall, tr("Very Small (16 MB)")),
+ PAIR(GpuUnswizzleSize, Small, tr("Small (32 MB)")),
+ PAIR(GpuUnswizzleSize, Normal, tr("Normal (128 MB)")),
+ PAIR(GpuUnswizzleSize, Large, tr("Large (256 MB)")),
+ PAIR(GpuUnswizzleSize, VeryLarge, tr("Very Large (512 MB)")),
+ }});
+ translations->insert({Settings::EnumMetadata<Settings::GpuUnswizzle>::Index(),
+ {
+ PAIR(GpuUnswizzle, VeryLow, tr("Very Low (4 MB)")),
+ PAIR(GpuUnswizzle, Low, tr("Low (8 MB)")),
+ PAIR(GpuUnswizzle, Normal, tr("Normal (16 MB)")),
+ PAIR(GpuUnswizzle, Medium, tr("Medium (32 MB)")),
+ PAIR(GpuUnswizzle, High, tr("High (64 MB)")),
+ }});
+ translations->insert({Settings::EnumMetadata<Settings::GpuUnswizzleChunk>::Index(),
+ {
+ PAIR(GpuUnswizzleChunk, VeryLow, tr("Very Low (32)")),
+ PAIR(GpuUnswizzleChunk, Low, tr("Low (64)")),
+ PAIR(GpuUnswizzleChunk, Normal, tr("Normal (128)")),
+ PAIR(GpuUnswizzleChunk, Medium, tr("Medium (256)")),
+ PAIR(GpuUnswizzleChunk, High, tr("High (512)")),
+ }});
translations->insert({Settings::EnumMetadata<Settings::ExtendedDynamicState>::Index(),
{