rsx: Relax inheritance checks a bit

- It is not a fatal error for a texture to be defined where a framebuffer once existed.
This commit is contained in:
kd-11 2021-01-27 19:36:33 +03:00 committed by kd-11
parent 5a049d41fd
commit bec91aab7b
2 changed files with 6 additions and 8 deletions

View File

@ -682,10 +682,7 @@ namespace gl
{ {
// Try and reuse this image data. It is very likely to match our needs // Try and reuse this image data. It is very likely to match our needs
image = dynamic_cast<gl::viewable_image*>(cached.get_raw_texture()); image = dynamic_cast<gl::viewable_image*>(cached.get_raw_texture());
ensure(image); if (!image || cached.get_image_type() != type)
ensure(cached.is_managed());
if (cached.get_image_type() != type)
{ {
// Type mismatch, discard // Type mismatch, discard
cached.destroy(); cached.destroy();
@ -693,6 +690,8 @@ namespace gl
} }
else else
{ {
ensure(cached.is_managed());
cached.set_dimensions(width, height, depth, pitch); cached.set_dimensions(width, height, depth, pitch);
cached.set_format(texture::format::rgba, texture::type::ubyte, true); cached.set_format(texture::format::rgba, texture::type::ubyte, true);

View File

@ -815,10 +815,7 @@ namespace vk
if (region.exists()) if (region.exists())
{ {
image = dynamic_cast<vk::viewable_image*>(region.get_raw_texture()); image = dynamic_cast<vk::viewable_image*>(region.get_raw_texture());
ensure(image); if (!image || region.get_image_type() != type || image->depth() != depth) // TODO
ensure(region.is_managed());
if (region.get_image_type() != type || image->depth() != depth) // TODO
{ {
// Incompatible view/type // Incompatible view/type
region.destroy(); region.destroy();
@ -826,6 +823,8 @@ namespace vk
} }
else else
{ {
ensure(region.is_managed());
// Reuse // Reuse
region.set_rsx_pitch(pitch); region.set_rsx_pitch(pitch);