From 480850ffe7106a23f23946ad9ea46b800fa60168 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 30 Jun 2020 17:32:36 -0300 Subject: video_core: Fix B5G6R5_UNORM render target format --- src/video_core/morton.cpp | 2 ++ src/video_core/renderer_opengl/gl_texture_cache.cpp | 1 + src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 1 + src/video_core/surface.cpp | 2 +- src/video_core/surface.h | 5 +++++ 5 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src/video_core') diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp index 889f7caac..7f239566a 100644 --- a/src/video_core/morton.cpp +++ b/src/video_core/morton.cpp @@ -46,6 +46,7 @@ static constexpr ConversionArray morton_to_linear_fns = { MortonCopy, MortonCopy, MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, @@ -137,6 +138,7 @@ static constexpr ConversionArray linear_to_morton_fns = { MortonCopy, MortonCopy, MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp index ccfa7c9fe..7f85ceca9 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -46,6 +46,7 @@ constexpr std::array tex_format {GL_RGBA8I, GL_RGBA_INTEGER, GL_BYTE}, // ABGR8I {GL_RGBA8UI, GL_RGBA_INTEGER, GL_UNSIGNED_BYTE}, // ABGR8UI {GL_RGB565, GL_RGB, GL_UNSIGNED_SHORT_5_6_5}, // B5G6R5U + {GL_RGB5_A1, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV}, // B5G5R5A1U {GL_RGB10_A2, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV}, // A2B10G10R10U {GL_RGB10_A2UI, GL_RGBA_INTEGER, GL_UNSIGNED_INT_2_10_10_10_REV}, // A2B10G10R10UI {GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV}, // A1B5G5R5U diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index fc53321e5..3cb3b00d9 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -122,6 +122,7 @@ struct FormatTuple { {VK_FORMAT_A8B8G8R8_SINT_PACK32, Attachable | Storage}, // ABGR8I {VK_FORMAT_A8B8G8R8_UINT_PACK32, Attachable | Storage}, // ABGR8UI {VK_FORMAT_R5G6B5_UNORM_PACK16, Attachable}, // B5G6R5U + {VK_FORMAT_A1R5G5B5_UNORM_PACK16, Attachable}, // B5G5R5A1U {VK_FORMAT_A2B10G10R10_UNORM_PACK32, Attachable | Storage}, // A2B10G10R10U {VK_FORMAT_A2B10G10R10_UINT_PACK32, Attachable | Storage}, // A2B10G10R10UI {VK_FORMAT_A1R5G5B5_UNORM_PACK16, Attachable}, // A1B5G5R5U (flipped with swizzle) diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp index ea1e20de7..c1c2f2c52 100644 --- a/src/video_core/surface.cpp +++ b/src/video_core/surface.cpp @@ -155,7 +155,7 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format) case Tegra::RenderTargetFormat::B5G6R5_UNORM: return PixelFormat::B5G6R5U; case Tegra::RenderTargetFormat::BGR5A1_UNORM: - return PixelFormat::A1B5G5R5U; + return PixelFormat::B5G5R5A1U; case Tegra::RenderTargetFormat::RG8_UNORM: return PixelFormat::RG8U; case Tegra::RenderTargetFormat::RG8_SNORM: diff --git a/src/video_core/surface.h b/src/video_core/surface.h index aec6b1734..9510db2c8 100644 --- a/src/video_core/surface.h +++ b/src/video_core/surface.h @@ -20,6 +20,7 @@ enum class PixelFormat { ABGR8I, ABGR8UI, B5G6R5U, + B5G5R5A1U, A2B10G10R10U, A2B10G10R10UI, A1B5G5R5U, @@ -143,6 +144,7 @@ constexpr std::array compression_factor_shift_table = {{ 0, // ABGR8I 0, // ABGR8UI 0, // B5G6R5U + 0, // B5G5R5A1U 0, // A2B10G10R10U 0, // A2B10G10R10UI 0, // A1B5G5R5U @@ -250,6 +252,7 @@ constexpr std::array block_width_table = {{ 1, // ABGR8I 1, // ABGR8UI 1, // B5G6R5U + 1, // B5G5R5A1U 1, // A2B10G10R10U 1, // A2B10G10R10UI 1, // A1B5G5R5U @@ -349,6 +352,7 @@ constexpr std::array block_height_table = {{ 1, // ABGR8I 1, // ABGR8UI 1, // B5G6R5U + 1, // B5G5R5A1U 1, // A2B10G10R10U 1, // A2B10G10R10UI 1, // A1B5G5R5U @@ -448,6 +452,7 @@ constexpr std::array bpp_table = {{ 32, // ABGR8I 32, // ABGR8UI 16, // B5G6R5U + 16, // B5G5R5A1U 32, // A2B10G10R10U 32, // A2B10G10R10UI 16, // A1B5G5R5U -- cgit v1.2.3