From bf96cbe980c83bbb0a95ef94df1993b2345b32f9 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Thu, 15 Dec 2022 15:56:00 +0300 Subject: [PATCH] rsx: Fix const RTV/DSV cast from texture cache --- rpcs3/Emu/RSX/GL/GLRenderTargets.h | 5 +++++ rpcs3/Emu/RSX/GL/GLTextureCache.h | 2 +- rpcs3/Emu/RSX/VK/VKRenderTargets.h | 5 +++++ rpcs3/Emu/RSX/VK/VKTextureCache.h | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/GL/GLRenderTargets.h b/rpcs3/Emu/RSX/GL/GLRenderTargets.h index c8c7e22cec..adbc2d7d0d 100644 --- a/rpcs3/Emu/RSX/GL/GLRenderTargets.h +++ b/rpcs3/Emu/RSX/GL/GLRenderTargets.h @@ -113,6 +113,11 @@ namespace gl { return ensure(dynamic_cast(t)); } + + static inline const gl::render_target* as_rtt(const gl::texture* t) + { + return ensure(dynamic_cast(t)); + } } struct gl_render_target_traits diff --git a/rpcs3/Emu/RSX/GL/GLTextureCache.h b/rpcs3/Emu/RSX/GL/GLTextureCache.h index 0555c828fa..fb0ba38893 100644 --- a/rpcs3/Emu/RSX/GL/GLTextureCache.h +++ b/rpcs3/Emu/RSX/GL/GLTextureCache.h @@ -393,7 +393,7 @@ namespace gl return managed_texture.get(); } - gl::render_target* get_render_target() + gl::render_target* get_render_target() const { return gl::as_rtt(vram_texture); } diff --git a/rpcs3/Emu/RSX/VK/VKRenderTargets.h b/rpcs3/Emu/RSX/VK/VKRenderTargets.h index 19e15cab46..e340d493cb 100644 --- a/rpcs3/Emu/RSX/VK/VKRenderTargets.h +++ b/rpcs3/Emu/RSX/VK/VKRenderTargets.h @@ -85,6 +85,11 @@ namespace vk return ensure(dynamic_cast(t)); } + static inline const vk::render_target* as_rtt(const vk::image* t) + { + return ensure(dynamic_cast(t)); + } + struct surface_cache_traits { using surface_storage_type = std::unique_ptr; diff --git a/rpcs3/Emu/RSX/VK/VKTextureCache.h b/rpcs3/Emu/RSX/VK/VKTextureCache.h index 6a4702b4b5..e57b2da0c1 100644 --- a/rpcs3/Emu/RSX/VK/VKTextureCache.h +++ b/rpcs3/Emu/RSX/VK/VKTextureCache.h @@ -163,7 +163,7 @@ namespace vk return managed_texture; } - vk::render_target* get_render_target() + vk::render_target* get_render_target() const { return vk::as_rtt(vram_texture); }