diff options
| author | Zephyron <zephyron@citron-emu.org> | 2025-03-28 18:25:36 +1000 |
|---|---|---|
| committer | MrPurple666 <antoniosacramento666usa@gmail.com> | 2025-04-12 23:39:19 -0300 |
| commit | b550c6e3cc67e2c92aeefa208fbc466c050977b9 (patch) | |
| tree | e3ce22942d4af21f8c62bbf6a96d0ee7c7f28369 /src/video_core/renderer_vulkan/renderer_vulkan.h | |
| parent | 991770b84f6b04ecaa4e4e3844cbaaa6fb0ba1ab (diff) | |
feat(vulkan): implement enhanced texture and shader management
This commit adds improved Vulkan functionality to the Citron emulator:
- Add thread-safe texture management with automatic error recovery
- Implement shader caching with validation support
- Add robust error handling for Vulkan operations
- Implement platform-specific initialization for Windows, Linux, and Android
These enhancements improve stability when handling texture loading errors
and provide better recovery mechanisms for Vulkan failures.
Co-authored-by: boss.sfc <boss.sfc@citron-emu.org>
Co-committed-by: boss.sfc <boss.sfc@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Diffstat (limited to 'src/video_core/renderer_vulkan/renderer_vulkan.h')
| -rw-r--r-- | src/video_core/renderer_vulkan/renderer_vulkan.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.h b/src/video_core/renderer_vulkan/renderer_vulkan.h index fe1f6ce53d..e6efc887d1 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.h +++ b/src/video_core/renderer_vulkan/renderer_vulkan.h @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-FileCopyrightText: Copyright 2025 citron Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once @@ -6,6 +7,7 @@ #include <memory> #include <string> #include <variant> +#include <functional> #include "common/dynamic_library.h" #include "video_core/host1x/gpu_device_memory_manager.h" @@ -17,6 +19,8 @@ #include "video_core/renderer_vulkan/vk_state_tracker.h" #include "video_core/renderer_vulkan/vk_swapchain.h" #include "video_core/renderer_vulkan/vk_turbo_mode.h" +#include "video_core/renderer_vulkan/vk_texture_manager.h" +#include "video_core/renderer_vulkan/vk_shader_util.h" #include "video_core/vulkan_common/vulkan_device.h" #include "video_core/vulkan_common/vulkan_memory_allocator.h" #include "video_core/vulkan_common/vulkan_wrapper.h" @@ -53,6 +57,9 @@ public: return device.GetDriverName(); } + // Enhanced platform-specific initialization + void InitializePlatformSpecific(); + private: void InterpolateFrames(Frame* prev_frame, Frame* curr_frame); Frame* previous_frame = nullptr; // Store the previous frame for interpolation @@ -66,6 +73,10 @@ private: void RenderScreenshot(std::span<const Tegra::FramebufferConfig> framebuffers); void RenderAppletCaptureLayer(std::span<const Tegra::FramebufferConfig> framebuffers); + // Enhanced error handling + bool HandleVulkanError(VkResult result, const std::string& operation); + void RecoverFromError(); + Tegra::MaxwellDeviceMemoryManager& device_memory; Tegra::GPU& gpu; @@ -88,6 +99,10 @@ private: RasterizerVulkan rasterizer; std::optional<TurboMode> turbo_mode; + // Enhanced texture and shader management + TextureManager texture_manager; + ShaderManager shader_manager; + Frame applet_frame; }; |
