diff --git a/rpcs3/Emu/RSX/GL/GLTexture.cpp b/rpcs3/Emu/RSX/GL/GLTexture.cpp index 190f0397db..864b39afc0 100644 --- a/rpcs3/Emu/RSX/GL/GLTexture.cpp +++ b/rpcs3/Emu/RSX/GL/GLTexture.cpp @@ -885,9 +885,9 @@ namespace gl bool formats_are_bitcast_compatible(const texture* texture1, const texture* texture2) { if (const u32 transfer_class = texture1->format_class() | texture2->format_class(); - transfer_class & RSX_FORMAT_CLASS_DEPTH_FLOAT_MASK) + transfer_class > RSX_FORMAT_CLASS_COLOR) { - // If any one of the two images is a depth float, the other must match exactly or bust + // If any one of the two images is a depth format, the other must match exactly or bust return (texture1->format_class() == texture2->format_class()); } diff --git a/rpcs3/Emu/RSX/GL/GLTextureCache.cpp b/rpcs3/Emu/RSX/GL/GLTextureCache.cpp index 4550d1c37a..a1737d0622 100644 --- a/rpcs3/Emu/RSX/GL/GLTextureCache.cpp +++ b/rpcs3/Emu/RSX/GL/GLTextureCache.cpp @@ -166,7 +166,7 @@ namespace gl { const auto src_bpp = slice.src->pitch() / slice.src->width(); const u16 convert_w = u16(slice.src->width() * src_bpp) / dst_bpp; - tmp = std::make_unique(GL_TEXTURE_2D, convert_w, slice.src->height(), 1, 1, static_cast(dst_image->get_internal_format())); + tmp = std::make_unique(GL_TEXTURE_2D, convert_w, slice.src->height(), 1, 1, static_cast(dst_image->get_internal_format()), dst_image->format_class()); src_image = tmp.get();