diff options
| author | Forrest Keller <forrestmarkx@outlook.com> | 2026-01-13 19:18:08 +0100 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-01-13 19:18:08 +0100 |
| commit | ecd01e13fd13b39bff0f2c7c7bc2387c3a2157f4 (patch) | |
| tree | 4e015762b742b0183f526d6b38b7b54d3a9d7dcb /src/qt_common/config/shared_translation.cpp | |
| parent | f544004b5de4ea0fe7277e4a6a9790051b6d0120 (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.cpp | 40 |
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(), { |
