From c764925b4d976cc62b60257e56348cc0e51d8e79 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Tue, 16 Jun 2020 21:24:05 +0300 Subject: [PATCH] rsx: Properly handle conversion of G8B8 and related formats - These formats are 16-bit packed, not separate 8-bit channels. Conversion requires byteswap for them. --- rpcs3/Emu/RSX/GL/GLTexture.cpp | 2 +- rpcs3/Emu/RSX/VK/VKFormats.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rpcs3/Emu/RSX/GL/GLTexture.cpp b/rpcs3/Emu/RSX/GL/GLTexture.cpp index e5a63cf1bc..9dd312e630 100644 --- a/rpcs3/Emu/RSX/GL/GLTexture.cpp +++ b/rpcs3/Emu/RSX/GL/GLTexture.cpp @@ -106,7 +106,7 @@ namespace gl case texture::internal_format::r32f: return { GL_RED, GL_FLOAT, 4, true }; case texture::internal_format::rg8: - return { GL_RG, GL_UNSIGNED_BYTE, 1, false }; + return { GL_RG, GL_UNSIGNED_SHORT, 2, true }; case texture::internal_format::rg16: return { GL_RG, GL_UNSIGNED_SHORT, 2, true }; case texture::internal_format::rg16f: diff --git a/rpcs3/Emu/RSX/VK/VKFormats.cpp b/rpcs3/Emu/RSX/VK/VKFormats.cpp index 2c4f216c86..6de9edd8cf 100644 --- a/rpcs3/Emu/RSX/VK/VKFormats.cpp +++ b/rpcs3/Emu/RSX/VK/VKFormats.cpp @@ -394,8 +394,6 @@ namespace vk { //8-bit case VK_FORMAT_R8_UNORM: - case VK_FORMAT_R8G8_UNORM: - case VK_FORMAT_R8G8_SNORM: case VK_FORMAT_A8B8G8R8_UNORM_PACK32: case VK_FORMAT_R8G8B8A8_UNORM: return{ false, 1 }; @@ -406,6 +404,8 @@ namespace vk case VK_FORMAT_R16_UINT: case VK_FORMAT_R16_SFLOAT: case VK_FORMAT_R16_UNORM: + case VK_FORMAT_R8G8_UNORM: + case VK_FORMAT_R8G8_SNORM: case VK_FORMAT_R16G16_UNORM: case VK_FORMAT_R16G16_SFLOAT: case VK_FORMAT_R16G16B16A16_SFLOAT: