From ce8c92262d36003e471eff24ffa827d7d30c0cc6 Mon Sep 17 00:00:00 2001 From: elad Date: Sat, 2 Mar 2019 10:27:08 +0200 Subject: [PATCH] Treat X8R8G8B8 format as A8R8G8B8 in image_in, Fixes #5510 --- rpcs3/Emu/RSX/rsx_methods.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index 5546cdbdd1..35d05953ce 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -820,7 +820,7 @@ namespace rsx const blit_engine::transfer_origin in_origin = method_registers.blit_engine_input_origin(); const blit_engine::transfer_interpolator in_inter = method_registers.blit_engine_input_inter(); - const rsx::blit_engine::transfer_source_format src_color_format = method_registers.blit_engine_src_color_format(); + rsx::blit_engine::transfer_source_format src_color_format = method_registers.blit_engine_src_color_format(); const f32 in_x = std::ceil(method_registers.blit_engine_in_x()); const f32 in_y = std::ceil(method_registers.blit_engine_in_y()); @@ -924,7 +924,16 @@ namespace rsx if (src_color_format != rsx::blit_engine::transfer_source_format::r5g6b5 && src_color_format != rsx::blit_engine::transfer_source_format::a8r8g8b8) { - fmt::throw_exception("NV3089_IMAGE_IN_SIZE: unknown src_color_format (%d)" HERE, (u8)src_color_format); + // Alpha has no meaning in both formats + if (src_color_format == rsx::blit_engine::transfer_source_format::x8r8g8b8) + { + src_color_format = rsx::blit_engine::transfer_source_format::a8r8g8b8; + } + else + { + // TODO: Support more formats + fmt::throw_exception("NV3089_IMAGE_IN_SIZE: unknown src_color_format (%d)" HERE, (u8)src_color_format); + } } f32 scale_x = method_registers.blit_engine_ds_dx();