diff --git a/rpcs3/Emu/RSX/GL/GLTextureCache.h b/rpcs3/Emu/RSX/GL/GLTextureCache.h index 32155ba7fb..846ea70dd0 100644 --- a/rpcs3/Emu/RSX/GL/GLTextureCache.h +++ b/rpcs3/Emu/RSX/GL/GLTextureCache.h @@ -682,10 +682,7 @@ namespace gl { // Try and reuse this image data. It is very likely to match our needs image = dynamic_cast(cached.get_raw_texture()); - ensure(image); - ensure(cached.is_managed()); - - if (cached.get_image_type() != type) + if (!image || cached.get_image_type() != type) { // Type mismatch, discard cached.destroy(); @@ -693,6 +690,8 @@ namespace gl } else { + ensure(cached.is_managed()); + cached.set_dimensions(width, height, depth, pitch); cached.set_format(texture::format::rgba, texture::type::ubyte, true); diff --git a/rpcs3/Emu/RSX/VK/VKTextureCache.h b/rpcs3/Emu/RSX/VK/VKTextureCache.h index 37c5a6eaa7..985fffdb81 100644 --- a/rpcs3/Emu/RSX/VK/VKTextureCache.h +++ b/rpcs3/Emu/RSX/VK/VKTextureCache.h @@ -815,10 +815,7 @@ namespace vk if (region.exists()) { image = dynamic_cast(region.get_raw_texture()); - ensure(image); - ensure(region.is_managed()); - - if (region.get_image_type() != type || image->depth() != depth) // TODO + if (!image || region.get_image_type() != type || image->depth() != depth) // TODO { // Incompatible view/type region.destroy(); @@ -826,6 +823,8 @@ namespace vk } else { + ensure(region.is_managed()); + // Reuse region.set_rsx_pitch(pitch);