From 29e5516bb8847023a2555ffbf460116a386a4dbb Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 30 Jun 2020 03:51:42 -0300 Subject: video_core: Implement R8_SNORM render target --- src/video_core/renderer_vulkan/vk_device.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/video_core/renderer_vulkan/vk_device.cpp') diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index fdaea42108..c4889ac889 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -98,6 +98,7 @@ std::unordered_map GetFormatProperties( VK_FORMAT_R8G8_SNORM, VK_FORMAT_R8G8_UINT, VK_FORMAT_R8_UNORM, + VK_FORMAT_R8_SNORM, VK_FORMAT_R8_UINT, VK_FORMAT_B10G11R11_UFLOAT_PACK32, VK_FORMAT_R32_SFLOAT, -- cgit v1.2.3 From c6e852f5c529bc1e4ffa6132ee145b525ca4441e Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 30 Jun 2020 04:00:23 -0300 Subject: video_core: Implement R8_SINT render target --- src/video_core/gpu.h | 1 + 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/renderer_vulkan/vk_device.cpp | 1 + src/video_core/surface.cpp | 2 ++ src/video_core/surface.h | 5 +++++ 7 files changed, 13 insertions(+) (limited to 'src/video_core/renderer_vulkan/vk_device.cpp') diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index 2b92ab0ea5..1e5d2ffcc3 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h @@ -76,6 +76,7 @@ enum class RenderTargetFormat : u32 { R16_FLOAT = 0xF2, R8_UNORM = 0xF3, R8_SNORM = 0xF4, + R8_SINT = 0xF5, R8_UINT = 0xF6, }; diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp index 9b569afc88..790360d4da 100644 --- a/src/video_core/morton.cpp +++ b/src/video_core/morton.cpp @@ -49,6 +49,7 @@ static constexpr ConversionArray morton_to_linear_fns = { MortonCopy, MortonCopy, MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, @@ -133,6 +134,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 6319b0006f..553db1cb16 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -49,6 +49,7 @@ constexpr std::array tex_format {GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV}, // A1B5G5R5U {GL_R8, GL_RED, GL_UNSIGNED_BYTE}, // R8U {GL_R8_SNORM, GL_RED, GL_BYTE}, // R8S + {GL_R8I, GL_RED_INTEGER, GL_BYTE}, // R8I {GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE}, // R8UI {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT}, // RGBA16F {GL_RGBA16, GL_RGBA, GL_UNSIGNED_SHORT}, // RGBA16U diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index 1f3f793804..645cb92caf 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -125,6 +125,7 @@ struct FormatTuple { {VK_FORMAT_A1R5G5B5_UNORM_PACK16, Attachable}, // A1B5G5R5U (flipped with swizzle) {VK_FORMAT_R8_UNORM, Attachable | Storage}, // R8U {VK_FORMAT_R8_SNORM, Attachable | Storage}, // R8S + {VK_FORMAT_R8_SINT, Attachable | Storage}, // R8I {VK_FORMAT_R8_UINT, Attachable | Storage}, // R8UI {VK_FORMAT_R16G16B16A16_SFLOAT, Attachable | Storage}, // RGBA16F {VK_FORMAT_R16G16B16A16_UNORM, Attachable | Storage}, // RGBA16U diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index c4889ac889..59c5f9ea51 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -99,6 +99,7 @@ std::unordered_map GetFormatProperties( VK_FORMAT_R8G8_UINT, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, + VK_FORMAT_R8_SINT, VK_FORMAT_R8_UINT, VK_FORMAT_B10G11R11_UFLOAT_PACK32, VK_FORMAT_R32_SFLOAT, diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp index 6e9b496d36..f132f1b43e 100644 --- a/src/video_core/surface.cpp +++ b/src/video_core/surface.cpp @@ -166,6 +166,8 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format) return PixelFormat::R8U; case Tegra::RenderTargetFormat::R8_SNORM: return PixelFormat::R8S; + case Tegra::RenderTargetFormat::R8_SINT: + return PixelFormat::R8I; case Tegra::RenderTargetFormat::R8_UINT: return PixelFormat::R8UI; default: diff --git a/src/video_core/surface.h b/src/video_core/surface.h index def2067403..a6cac3bf95 100644 --- a/src/video_core/surface.h +++ b/src/video_core/surface.h @@ -23,6 +23,7 @@ enum class PixelFormat { A1B5G5R5U, R8U, R8S, + R8I, R8UI, RGBA16F, RGBA16U, @@ -139,6 +140,7 @@ constexpr std::array compression_factor_shift_table = {{ 0, // A1B5G5R5U 0, // R8U 0, // R8S + 0, // R8I 0, // R8UI 0, // RGBA16F 0, // RGBA16U @@ -239,6 +241,7 @@ constexpr std::array block_width_table = {{ 1, // A1B5G5R5U 1, // R8U 1, // R8S + 1, // R8I 1, // R8UI 1, // RGBA16F 1, // RGBA16U @@ -331,6 +334,7 @@ constexpr std::array block_height_table = {{ 1, // A1B5G5R5U 1, // R8U 1, // R8S + 1, // R8I 1, // R8UI 1, // RGBA16F 1, // RGBA16U @@ -423,6 +427,7 @@ constexpr std::array bpp_table = {{ 16, // A1B5G5R5U 8, // R8U 8, // R8S + 8, // R8I 8, // R8UI 64, // RGBA16F 64, // RGBA16U -- cgit v1.2.3 From 469c89d31a9359b0839e93b9d084730d14e5991a Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 30 Jun 2020 04:13:46 -0300 Subject: video_core: Implement RG8_SINT render target and fix RG8_UINT --- src/video_core/gpu.h | 1 + src/video_core/morton.cpp | 2 ++ src/video_core/renderer_opengl/gl_texture_cache.cpp | 3 ++- src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 1 + src/video_core/renderer_vulkan/vk_device.cpp | 1 + src/video_core/surface.cpp | 2 ++ src/video_core/surface.h | 5 +++++ 7 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src/video_core/renderer_vulkan/vk_device.cpp') diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index 1e5d2ffcc3..a6f846f3c4 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h @@ -68,6 +68,7 @@ enum class RenderTargetFormat : u32 { BGR5A1_UNORM = 0xE9, RG8_UNORM = 0xEA, RG8_SNORM = 0xEB, + RG8_SINT = 0xEC, RG8_UINT = 0xED, R16_UNORM = 0xEE, R16_SNORM = 0xEF, diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp index 790360d4da..9e50aa11de 100644 --- a/src/video_core/morton.cpp +++ b/src/video_core/morton.cpp @@ -85,6 +85,7 @@ static constexpr ConversionArray morton_to_linear_fns = { MortonCopy, MortonCopy, MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, @@ -171,6 +172,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 553db1cb16..ef17298940 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -85,7 +85,8 @@ constexpr std::array tex_format {GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV}, // RGBA8_SRGB {GL_RG8, GL_RG, GL_UNSIGNED_BYTE}, // RG8U {GL_RG8_SNORM, GL_RG, GL_BYTE}, // RG8S - {GL_RG8UI, GL_RG_INTEGER, GL_UNSIGNED_INT}, // RG8UI + {GL_RG8I, GL_RG_INTEGER, GL_BYTE}, // RG8I + {GL_RG8UI, GL_RG_INTEGER, GL_UNSIGNED_BYTE}, // RG8UI {GL_RG32UI, GL_RG_INTEGER, GL_UNSIGNED_INT}, // RG32UI {GL_RGB16F, GL_RGBA, GL_HALF_FLOAT}, // RGBX16F {GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT}, // R32UI diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index 645cb92caf..43264ce145 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -161,6 +161,7 @@ struct FormatTuple { {VK_FORMAT_R8G8B8A8_SRGB, Attachable}, // RGBA8_SRGB {VK_FORMAT_R8G8_UNORM, Attachable | Storage}, // RG8U {VK_FORMAT_R8G8_SNORM, Attachable | Storage}, // RG8S + {VK_FORMAT_R8G8_SINT, Attachable | Storage}, // RG8I {VK_FORMAT_R8G8_UINT, Attachable | Storage}, // RG8UI {VK_FORMAT_R32G32_UINT, Attachable | Storage}, // RG32UI {VK_FORMAT_UNDEFINED}, // RGBX16F diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index 59c5f9ea51..06c6169dc2 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -96,6 +96,7 @@ std::unordered_map GetFormatProperties( VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_R8G8_UNORM, VK_FORMAT_R8G8_SNORM, + VK_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_UINT, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp index f132f1b43e..1f12163fed 100644 --- a/src/video_core/surface.cpp +++ b/src/video_core/surface.cpp @@ -150,6 +150,8 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format) return PixelFormat::RG8U; case Tegra::RenderTargetFormat::RG8_SNORM: return PixelFormat::RG8S; + case Tegra::RenderTargetFormat::RG8_SINT: + return PixelFormat::RG8I; case Tegra::RenderTargetFormat::RG8_UINT: return PixelFormat::RG8UI; case Tegra::RenderTargetFormat::R16_UNORM: diff --git a/src/video_core/surface.h b/src/video_core/surface.h index a6cac3bf95..6999d9dc36 100644 --- a/src/video_core/surface.h +++ b/src/video_core/surface.h @@ -59,6 +59,7 @@ enum class PixelFormat { RGBA8_SRGB, RG8U, RG8S, + RG8I, RG8UI, RG32UI, RGBX16F, @@ -176,6 +177,7 @@ constexpr std::array compression_factor_shift_table = {{ 0, // RGBA8_SRGB 0, // RG8U 0, // RG8S + 0, // RG8I 0, // RG8UI 0, // RG32UI 0, // RGBX16F @@ -277,6 +279,7 @@ constexpr std::array block_width_table = {{ 1, // RGBA8_SRGB 1, // RG8U 1, // RG8S + 1, // RG8I 1, // RG8UI 1, // RG32UI 1, // RGBX16F @@ -370,6 +373,7 @@ constexpr std::array block_height_table = {{ 1, // RGBA8_SRGB 1, // RG8U 1, // RG8S + 1, // RG8I 1, // RG8UI 1, // RG32UI 1, // RGBX16F @@ -463,6 +467,7 @@ constexpr std::array bpp_table = {{ 32, // RGBA8_SRGB 16, // RG8U 16, // RG8S + 16, // RG8I 16, // RG8UI 64, // RG32UI 64, // RGBX16F -- cgit v1.2.3 From ad494d0a3c990d3d64d1d581e506ca43b55e0cd7 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 30 Jun 2020 04:23:03 -0300 Subject: video_core: Implement RG32_SINT render target --- src/video_core/gpu.h | 1 + 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/renderer_vulkan/vk_device.cpp | 1 + src/video_core/surface.cpp | 2 ++ src/video_core/surface.h | 5 +++++ 7 files changed, 13 insertions(+) (limited to 'src/video_core/renderer_vulkan/vk_device.cpp') diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index a6f846f3c4..b0a2ad21b2 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h @@ -46,6 +46,7 @@ enum class RenderTargetFormat : u32 { RGBA16_UINT = 0xC9, RGBA16_FLOAT = 0xCA, RG32_FLOAT = 0xCB, + RG32_SINT = 0xCC, RG32_UINT = 0xCD, RGBX16_FLOAT = 0xCE, BGRA8_UNORM = 0xCF, diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp index 9e50aa11de..f932df53f2 100644 --- a/src/video_core/morton.cpp +++ b/src/video_core/morton.cpp @@ -70,6 +70,7 @@ static constexpr ConversionArray morton_to_linear_fns = { MortonCopy, MortonCopy, MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, @@ -157,6 +158,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 ef17298940..1d7824324f 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -70,6 +70,7 @@ constexpr std::array tex_format {GL_RGBA8, GL_BGRA, GL_UNSIGNED_BYTE}, // BGRA8 {GL_RGBA32F, GL_RGBA, GL_FLOAT}, // RGBA32F {GL_RG32F, GL_RG, GL_FLOAT}, // RG32F + {GL_RG32I, GL_RG_INTEGER, GL_INT}, // RG32I {GL_R32F, GL_RED, GL_FLOAT}, // R32F {GL_R16F, GL_RED, GL_HALF_FLOAT}, // R16F {GL_R16, GL_RED, GL_UNSIGNED_SHORT}, // R16U diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index 43264ce145..4086d1bb69 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -146,6 +146,7 @@ struct FormatTuple { {VK_FORMAT_B8G8R8A8_UNORM, Attachable}, // BGRA8 {VK_FORMAT_R32G32B32A32_SFLOAT, Attachable | Storage}, // RGBA32F {VK_FORMAT_R32G32_SFLOAT, Attachable | Storage}, // RG32F + {VK_FORMAT_R32G32_SINT, Attachable | Storage}, // RG32I {VK_FORMAT_R32_SFLOAT, Attachable | Storage}, // R32F {VK_FORMAT_R16_SFLOAT, Attachable | Storage}, // R16F {VK_FORMAT_R16_UNORM, Attachable | Storage}, // R16U diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index 06c6169dc2..e1128efe65 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -84,6 +84,7 @@ std::unordered_map GetFormatProperties( VK_FORMAT_R32G32B32A32_SFLOAT, VK_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32_SFLOAT, + VK_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_UINT, VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_SNORM, diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp index 1f12163fed..13e598972c 100644 --- a/src/video_core/surface.cpp +++ b/src/video_core/surface.cpp @@ -106,6 +106,8 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format) return PixelFormat::RGBA16F; case Tegra::RenderTargetFormat::RG32_FLOAT: return PixelFormat::RG32F; + case Tegra::RenderTargetFormat::RG32_SINT: + return PixelFormat::RG32I; case Tegra::RenderTargetFormat::RG32_UINT: return PixelFormat::RG32UI; case Tegra::RenderTargetFormat::RGBX16_FLOAT: diff --git a/src/video_core/surface.h b/src/video_core/surface.h index 6999d9dc36..3e9dd797a1 100644 --- a/src/video_core/surface.h +++ b/src/video_core/surface.h @@ -44,6 +44,7 @@ enum class PixelFormat { BGRA8, RGBA32F, RG32F, + RG32I, R32F, R16F, R16U, @@ -162,6 +163,7 @@ constexpr std::array compression_factor_shift_table = {{ 0, // BGRA8 0, // RGBA32F 0, // RG32F + 0, // RG32I 0, // R32F 0, // R16F 0, // R16U @@ -264,6 +266,7 @@ constexpr std::array block_width_table = {{ 1, // BGRA8 1, // RGBA32F 1, // RG32F + 1, // RG32I 1, // R32F 1, // R16F 1, // R16U @@ -358,6 +361,7 @@ constexpr std::array block_height_table = {{ 1, // BGRA8 1, // RGBA32F 1, // RG32F + 1, // RG32I 1, // R32F 1, // R16F 1, // R16U @@ -452,6 +456,7 @@ constexpr std::array bpp_table = {{ 32, // BGRA8 128, // RGBA32F 64, // RG32F + 64, // RG32I 32, // R32F 16, // R16F 16, // R16U -- cgit v1.2.3 From f8136072ff0044449e8d2b33687e0ec533bc946c Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 30 Jun 2020 04:31:48 -0300 Subject: video_core: Implement RGBA8_SINT render target --- src/video_core/gpu.h | 1 + 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/renderer_vulkan/vk_device.cpp | 1 + src/video_core/surface.cpp | 2 ++ src/video_core/surface.h | 5 +++++ 7 files changed, 13 insertions(+) (limited to 'src/video_core/renderer_vulkan/vk_device.cpp') diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index b0a2ad21b2..e3ab786e59 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h @@ -55,6 +55,7 @@ enum class RenderTargetFormat : u32 { RGBA8_UNORM = 0xD5, RGBA8_SRGB = 0xD6, RGBA8_SNORM = 0xD7, + RGBA8_SINT = 0xD8, RGBA8_UINT = 0xD9, RG16_UNORM = 0xDA, RG16_SNORM = 0xDB, diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp index f932df53f2..452e1f01e7 100644 --- a/src/video_core/morton.cpp +++ b/src/video_core/morton.cpp @@ -43,6 +43,7 @@ static void MortonCopy(u32 stride, u32 block_height, u32 height, u32 block_depth static constexpr ConversionArray morton_to_linear_fns = { MortonCopy, MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, @@ -130,6 +131,7 @@ static constexpr ConversionArray morton_to_linear_fns = { static constexpr ConversionArray linear_to_morton_fns = { 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 1d7824324f..396b85e406 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -43,6 +43,7 @@ struct FormatTuple { constexpr std::array tex_format_tuples = {{ {GL_RGBA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV}, // ABGR8U {GL_RGBA8_SNORM, GL_RGBA, GL_BYTE}, // ABGR8S + {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_REV}, // B5G6R5U {GL_RGB10_A2, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV}, // A2B10G10R10U diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index 4086d1bb69..fe3b73a994 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -119,6 +119,7 @@ struct FormatTuple { } constexpr tex_format_tuples[] = { {VK_FORMAT_A8B8G8R8_UNORM_PACK32, Attachable | Storage}, // ABGR8U {VK_FORMAT_A8B8G8R8_SNORM_PACK32, Attachable | Storage}, // ABGR8S + {VK_FORMAT_A8B8G8R8_SINT_PACK32, Attachable | Storage}, // ABGR8I {VK_FORMAT_A8B8G8R8_UINT_PACK32, Attachable | Storage}, // ABGR8UI {VK_FORMAT_B5G6R5_UNORM_PACK16}, // B5G6R5U {VK_FORMAT_A2B10G10R10_UNORM_PACK32, Attachable | Storage}, // A2B10G10R10U diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index e1128efe65..7ae4005a89 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -77,6 +77,7 @@ std::unordered_map GetFormatProperties( VK_FORMAT_A8B8G8R8_UNORM_PACK32, VK_FORMAT_A8B8G8R8_UINT_PACK32, VK_FORMAT_A8B8G8R8_SNORM_PACK32, + VK_FORMAT_A8B8G8R8_SINT_PACK32, VK_FORMAT_A8B8G8R8_SRGB_PACK32, VK_FORMAT_B5G6R5_UNORM_PACK16, VK_FORMAT_A2B10G10R10_UNORM_PACK32, diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp index 13e598972c..0db995367a 100644 --- a/src/video_core/surface.cpp +++ b/src/video_core/surface.cpp @@ -124,6 +124,8 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format) return PixelFormat::RGBA8_SRGB; case Tegra::RenderTargetFormat::RGBA8_SNORM: return PixelFormat::ABGR8S; + case Tegra::RenderTargetFormat::RGBA8_SINT: + return PixelFormat::ABGR8I; case Tegra::RenderTargetFormat::RGBA8_UINT: return PixelFormat::ABGR8UI; case Tegra::RenderTargetFormat::RG16_UNORM: diff --git a/src/video_core/surface.h b/src/video_core/surface.h index 3e9dd797a1..6f3162986c 100644 --- a/src/video_core/surface.h +++ b/src/video_core/surface.h @@ -17,6 +17,7 @@ namespace VideoCore::Surface { enum class PixelFormat { ABGR8U, ABGR8S, + ABGR8I, ABGR8UI, B5G6R5U, A2B10G10R10U, @@ -136,6 +137,7 @@ enum class SurfaceTarget { constexpr std::array compression_factor_shift_table = {{ 0, // ABGR8U 0, // ABGR8S + 0, // ABGR8I 0, // ABGR8UI 0, // B5G6R5U 0, // A2B10G10R10U @@ -239,6 +241,7 @@ inline constexpr u32 GetCompressionFactor(PixelFormat format) { constexpr std::array block_width_table = {{ 1, // ABGR8U 1, // ABGR8S + 1, // ABGR8I 1, // ABGR8UI 1, // B5G6R5U 1, // A2B10G10R10U @@ -334,6 +337,7 @@ static constexpr u32 GetDefaultBlockWidth(PixelFormat format) { constexpr std::array block_height_table = {{ 1, // ABGR8U 1, // ABGR8S + 1, // ABGR8I 1, // ABGR8UI 1, // B5G6R5U 1, // A2B10G10R10U @@ -429,6 +433,7 @@ static constexpr u32 GetDefaultBlockHeight(PixelFormat format) { constexpr std::array bpp_table = {{ 32, // ABGR8U 32, // ABGR8S + 32, // ABGR8I 32, // ABGR8UI 16, // B5G6R5U 32, // A2B10G10R10U -- cgit v1.2.3 From 5ba68f5fabd1ba2bd344e28895114bc06cdba8ff Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 30 Jun 2020 04:38:29 -0300 Subject: video_core: Implement RGBA16_SINT render target --- src/video_core/gpu.h | 1 + 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/renderer_vulkan/vk_device.cpp | 1 + src/video_core/surface.cpp | 2 ++ src/video_core/surface.h | 5 +++++ 7 files changed, 13 insertions(+) (limited to 'src/video_core/renderer_vulkan/vk_device.cpp') diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index e3ab786e59..4a47862cec 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h @@ -43,6 +43,7 @@ enum class RenderTargetFormat : u32 { RGBA32_UINT = 0xC2, RGBA16_UNORM = 0xC6, RGBA16_SNORM = 0xC7, + RGBA16_SINT = 0xC8, RGBA16_UINT = 0xC9, RGBA16_FLOAT = 0xCA, RG32_FLOAT = 0xCB, diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp index 452e1f01e7..c7c8f2238f 100644 --- a/src/video_core/morton.cpp +++ b/src/video_core/morton.cpp @@ -55,6 +55,7 @@ static constexpr ConversionArray morton_to_linear_fns = { MortonCopy, MortonCopy, MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, @@ -142,6 +143,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 396b85e406..ff67ac8137 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -55,6 +55,7 @@ constexpr std::array tex_format {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT}, // RGBA16F {GL_RGBA16, GL_RGBA, GL_UNSIGNED_SHORT}, // RGBA16U {GL_RGBA16_SNORM, GL_RGBA, GL_SHORT}, // RGBA16S + {GL_RGBA16I, GL_RGBA_INTEGER, GL_SHORT}, // RGBA16I {GL_RGBA16UI, GL_RGBA_INTEGER, GL_UNSIGNED_SHORT}, // RGBA16UI {GL_R11F_G11F_B10F, GL_RGB, GL_UNSIGNED_INT_10F_11F_11F_REV}, // R11FG11FB10F {GL_RGBA32UI, GL_RGBA_INTEGER, GL_UNSIGNED_INT}, // RGBA32UI diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index fe3b73a994..e79e0645d7 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -131,6 +131,7 @@ struct FormatTuple { {VK_FORMAT_R16G16B16A16_SFLOAT, Attachable | Storage}, // RGBA16F {VK_FORMAT_R16G16B16A16_UNORM, Attachable | Storage}, // RGBA16U {VK_FORMAT_R16G16B16A16_SNORM, Attachable | Storage}, // RGBA16S + {VK_FORMAT_R16G16B16A16_SINT, Attachable | Storage}, // RGBA16I {VK_FORMAT_R16G16B16A16_UINT, Attachable | Storage}, // RGBA16UI {VK_FORMAT_B10G11R11_UFLOAT_PACK32, Attachable | Storage}, // R11FG11FB10F {VK_FORMAT_R32G32B32A32_UINT, Attachable | Storage}, // RGBA32UI diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index 7ae4005a89..a61a94c6c5 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -87,6 +87,7 @@ std::unordered_map GetFormatProperties( VK_FORMAT_R32G32_SFLOAT, VK_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_UINT, + VK_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_SNORM, VK_FORMAT_R16G16B16A16_UNORM, diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp index 0db995367a..9c19e28389 100644 --- a/src/video_core/surface.cpp +++ b/src/video_core/surface.cpp @@ -100,6 +100,8 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format) return PixelFormat::RGBA16U; case Tegra::RenderTargetFormat::RGBA16_SNORM: return PixelFormat::RGBA16S; + case Tegra::RenderTargetFormat::RGBA16_SINT: + return PixelFormat::RGBA16I; case Tegra::RenderTargetFormat::RGBA16_UINT: return PixelFormat::RGBA16UI; case Tegra::RenderTargetFormat::RGBA16_FLOAT: diff --git a/src/video_core/surface.h b/src/video_core/surface.h index 6f3162986c..27d447cb94 100644 --- a/src/video_core/surface.h +++ b/src/video_core/surface.h @@ -29,6 +29,7 @@ enum class PixelFormat { RGBA16F, RGBA16U, RGBA16S, + RGBA16I, RGBA16UI, R11FG11FB10F, RGBA32UI, @@ -149,6 +150,7 @@ constexpr std::array compression_factor_shift_table = {{ 0, // RGBA16F 0, // RGBA16U 0, // RGBA16S + 0, // RGBA16I 0, // RGBA16UI 0, // R11FG11FB10F 0, // RGBA32UI @@ -253,6 +255,7 @@ constexpr std::array block_width_table = {{ 1, // RGBA16F 1, // RGBA16U 1, // RGBA16S + 1, // RGBA16I 1, // RGBA16UI 1, // R11FG11FB10F 1, // RGBA32UI @@ -349,6 +352,7 @@ constexpr std::array block_height_table = {{ 1, // RGBA16F 1, // RGBA16U 1, // RGBA16S + 1, // RGBA16I 1, // RGBA16UI 1, // R11FG11FB10F 1, // RGBA32UI @@ -445,6 +449,7 @@ constexpr std::array bpp_table = {{ 64, // RGBA16F 64, // RGBA16U 64, // RGBA16S + 64, // RGBA16I 64, // RGBA16UI 32, // R11FG11FB10F 128, // RGBA32UI -- cgit v1.2.3 From 59610b129f61c45973416f1655644534bb4baeb1 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 30 Jun 2020 04:46:07 -0300 Subject: video_core: Implement RGBA32_SINT render target --- src/video_core/gpu.h | 1 + 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/renderer_vulkan/vk_device.cpp | 1 + src/video_core/surface.cpp | 2 ++ src/video_core/surface.h | 5 +++++ 7 files changed, 13 insertions(+) (limited to 'src/video_core/renderer_vulkan/vk_device.cpp') diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index 4a47862cec..102f528c57 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h @@ -40,6 +40,7 @@ namespace Tegra { enum class RenderTargetFormat : u32 { NONE = 0x0, RGBA32_FLOAT = 0xC0, + RGBA32_SINT = 0xC1, RGBA32_UINT = 0xC2, RGBA16_UNORM = 0xC6, RGBA16_SNORM = 0xC7, diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp index c7c8f2238f..18bcb60b0c 100644 --- a/src/video_core/morton.cpp +++ b/src/video_core/morton.cpp @@ -71,6 +71,7 @@ static constexpr ConversionArray morton_to_linear_fns = { MortonCopy, MortonCopy, MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, @@ -161,6 +162,7 @@ static constexpr ConversionArray linear_to_morton_fns = { nullptr, 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 ff67ac8137..de1e05cd23 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -71,6 +71,7 @@ constexpr std::array tex_format {GL_COMPRESSED_RGBA_ASTC_4x4_KHR}, // ASTC_2D_4X4 {GL_RGBA8, GL_BGRA, GL_UNSIGNED_BYTE}, // BGRA8 {GL_RGBA32F, GL_RGBA, GL_FLOAT}, // RGBA32F + {GL_RGBA32I, GL_RGBA_INTEGER, GL_INT}, // RGBA32I {GL_RG32F, GL_RG, GL_FLOAT}, // RG32F {GL_RG32I, GL_RG_INTEGER, GL_INT}, // RG32I {GL_R32F, GL_RED, GL_FLOAT}, // R32F diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index e79e0645d7..bab9f485fe 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -147,6 +147,7 @@ struct FormatTuple { {VK_FORMAT_ASTC_4x4_UNORM_BLOCK}, // ASTC_2D_4X4 {VK_FORMAT_B8G8R8A8_UNORM, Attachable}, // BGRA8 {VK_FORMAT_R32G32B32A32_SFLOAT, Attachable | Storage}, // RGBA32F + {VK_FORMAT_R32G32B32A32_SINT, Attachable | Storage}, // RGBA32I {VK_FORMAT_R32G32_SFLOAT, Attachable | Storage}, // RG32F {VK_FORMAT_R32G32_SINT, Attachable | Storage}, // RG32I {VK_FORMAT_R32_SFLOAT, Attachable | Storage}, // R32F diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index a61a94c6c5..173957533e 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -83,6 +83,7 @@ std::unordered_map GetFormatProperties( VK_FORMAT_A2B10G10R10_UNORM_PACK32, VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_R32G32B32A32_SFLOAT, + VK_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32_SFLOAT, VK_FORMAT_R32G32_SINT, diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp index 9c19e28389..b287fe83f5 100644 --- a/src/video_core/surface.cpp +++ b/src/video_core/surface.cpp @@ -94,6 +94,8 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format) switch (format) { case Tegra::RenderTargetFormat::RGBA32_FLOAT: return PixelFormat::RGBA32F; + case Tegra::RenderTargetFormat::RGBA32_SINT: + return PixelFormat::RGBA32I; case Tegra::RenderTargetFormat::RGBA32_UINT: return PixelFormat::RGBA32UI; case Tegra::RenderTargetFormat::RGBA16_UNORM: diff --git a/src/video_core/surface.h b/src/video_core/surface.h index 27d447cb94..a564a00e90 100644 --- a/src/video_core/surface.h +++ b/src/video_core/surface.h @@ -45,6 +45,7 @@ enum class PixelFormat { ASTC_2D_4X4, BGRA8, RGBA32F, + RGBA32I, RG32F, RG32I, R32F, @@ -166,6 +167,7 @@ constexpr std::array compression_factor_shift_table = {{ 2, // ASTC_2D_4X4 0, // BGRA8 0, // RGBA32F + 0, // RGBA32I 0, // RG32F 0, // RG32I 0, // R32F @@ -271,6 +273,7 @@ constexpr std::array block_width_table = {{ 4, // ASTC_2D_4X4 1, // BGRA8 1, // RGBA32F + 1, // RGBA32I 1, // RG32F 1, // RG32I 1, // R32F @@ -368,6 +371,7 @@ constexpr std::array block_height_table = {{ 4, // ASTC_2D_4X4 1, // BGRA8 1, // RGBA32F + 1, // RGBA32I 1, // RG32F 1, // RG32I 1, // R32F @@ -465,6 +469,7 @@ constexpr std::array bpp_table = {{ 128, // ASTC_2D_4X4 32, // BGRA8 128, // RGBA32F + 128, // RGBA32I 64, // RG32F 64, // RG32I 32, // R32F -- cgit v1.2.3 From ac8eeffbbc3e41e09f0e7d56401fe176c7e6e536 Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Tue, 30 Jun 2020 04:53:48 -0300 Subject: video_core: Implement RGBA32_SINT render target --- src/video_core/gpu.h | 1 + src/video_core/morton.cpp | 2 + .../renderer_opengl/gl_texture_cache.cpp | 117 +++++++++++---------- src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 1 + src/video_core/renderer_vulkan/vk_device.cpp | 1 + src/video_core/surface.cpp | 2 + src/video_core/surface.h | 5 + 7 files changed, 71 insertions(+), 58 deletions(-) (limited to 'src/video_core/renderer_vulkan/vk_device.cpp') diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h index 102f528c57..464f5c7d69 100644 --- a/src/video_core/gpu.h +++ b/src/video_core/gpu.h @@ -54,6 +54,7 @@ enum class RenderTargetFormat : u32 { BGRA8_UNORM = 0xCF, BGRA8_SRGB = 0xD0, RGB10_A2_UNORM = 0xD1, + RGB10_A2_UINT = 0xD2, RGBA8_UNORM = 0xD5, RGBA8_SRGB = 0xD6, RGBA8_SNORM = 0xD7, diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp index 18bcb60b0c..889f7caacc 100644 --- a/src/video_core/morton.cpp +++ b/src/video_core/morton.cpp @@ -47,6 +47,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 de1e05cd23..b5ebe0c43b 100644 --- a/src/video_core/renderer_opengl/gl_texture_cache.cpp +++ b/src/video_core/renderer_opengl/gl_texture_cache.cpp @@ -41,64 +41,65 @@ struct FormatTuple { }; constexpr std::array tex_format_tuples = {{ - {GL_RGBA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV}, // ABGR8U - {GL_RGBA8_SNORM, GL_RGBA, GL_BYTE}, // ABGR8S - {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_REV}, // B5G6R5U - {GL_RGB10_A2, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV}, // A2B10G10R10U - {GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV}, // A1B5G5R5U - {GL_R8, GL_RED, GL_UNSIGNED_BYTE}, // R8U - {GL_R8_SNORM, GL_RED, GL_BYTE}, // R8S - {GL_R8I, GL_RED_INTEGER, GL_BYTE}, // R8I - {GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE}, // R8UI - {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT}, // RGBA16F - {GL_RGBA16, GL_RGBA, GL_UNSIGNED_SHORT}, // RGBA16U - {GL_RGBA16_SNORM, GL_RGBA, GL_SHORT}, // RGBA16S - {GL_RGBA16I, GL_RGBA_INTEGER, GL_SHORT}, // RGBA16I - {GL_RGBA16UI, GL_RGBA_INTEGER, GL_UNSIGNED_SHORT}, // RGBA16UI - {GL_R11F_G11F_B10F, GL_RGB, GL_UNSIGNED_INT_10F_11F_11F_REV}, // R11FG11FB10F - {GL_RGBA32UI, GL_RGBA_INTEGER, GL_UNSIGNED_INT}, // RGBA32UI - {GL_COMPRESSED_RGBA_S3TC_DXT1_EXT}, // DXT1 - {GL_COMPRESSED_RGBA_S3TC_DXT3_EXT}, // DXT23 - {GL_COMPRESSED_RGBA_S3TC_DXT5_EXT}, // DXT45 - {GL_COMPRESSED_RED_RGTC1}, // DXN1 - {GL_COMPRESSED_RG_RGTC2}, // DXN2UNORM - {GL_COMPRESSED_SIGNED_RG_RGTC2}, // DXN2SNORM - {GL_COMPRESSED_RGBA_BPTC_UNORM}, // BC7U - {GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT}, // BC6H_UF16 - {GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT}, // BC6H_SF16 - {GL_COMPRESSED_RGBA_ASTC_4x4_KHR}, // ASTC_2D_4X4 - {GL_RGBA8, GL_BGRA, GL_UNSIGNED_BYTE}, // BGRA8 - {GL_RGBA32F, GL_RGBA, GL_FLOAT}, // RGBA32F - {GL_RGBA32I, GL_RGBA_INTEGER, GL_INT}, // RGBA32I - {GL_RG32F, GL_RG, GL_FLOAT}, // RG32F - {GL_RG32I, GL_RG_INTEGER, GL_INT}, // RG32I - {GL_R32F, GL_RED, GL_FLOAT}, // R32F - {GL_R16F, GL_RED, GL_HALF_FLOAT}, // R16F - {GL_R16, GL_RED, GL_UNSIGNED_SHORT}, // R16U - {GL_R16_SNORM, GL_RED, GL_SHORT}, // R16S - {GL_R16UI, GL_RED_INTEGER, GL_UNSIGNED_SHORT}, // R16UI - {GL_R16I, GL_RED_INTEGER, GL_SHORT}, // R16I - {GL_RG16, GL_RG, GL_UNSIGNED_SHORT}, // RG16 - {GL_RG16F, GL_RG, GL_HALF_FLOAT}, // RG16F - {GL_RG16UI, GL_RG_INTEGER, GL_UNSIGNED_SHORT}, // RG16UI - {GL_RG16I, GL_RG_INTEGER, GL_SHORT}, // RG16I - {GL_RG16_SNORM, GL_RG, GL_SHORT}, // RG16S - {GL_RGB32F, GL_RGB, GL_FLOAT}, // RGB32F - {GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV}, // RGBA8_SRGB - {GL_RG8, GL_RG, GL_UNSIGNED_BYTE}, // RG8U - {GL_RG8_SNORM, GL_RG, GL_BYTE}, // RG8S - {GL_RG8I, GL_RG_INTEGER, GL_BYTE}, // RG8I - {GL_RG8UI, GL_RG_INTEGER, GL_UNSIGNED_BYTE}, // RG8UI - {GL_RG32UI, GL_RG_INTEGER, GL_UNSIGNED_INT}, // RG32UI - {GL_RGB16F, GL_RGBA, GL_HALF_FLOAT}, // RGBX16F - {GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT}, // R32UI - {GL_R32I, GL_RED_INTEGER, GL_INT}, // R32I - {GL_COMPRESSED_RGBA_ASTC_8x8_KHR}, // ASTC_2D_8X8 - {GL_COMPRESSED_RGBA_ASTC_8x5_KHR}, // ASTC_2D_8X5 - {GL_COMPRESSED_RGBA_ASTC_5x4_KHR}, // ASTC_2D_5X4 - {GL_SRGB8_ALPHA8, GL_BGRA, GL_UNSIGNED_BYTE}, // BGRA8 + {GL_RGBA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV}, // ABGR8U + {GL_RGBA8_SNORM, GL_RGBA, GL_BYTE}, // ABGR8S + {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_REV}, // B5G6R5U + {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 + {GL_R8, GL_RED, GL_UNSIGNED_BYTE}, // R8U + {GL_R8_SNORM, GL_RED, GL_BYTE}, // R8S + {GL_R8I, GL_RED_INTEGER, GL_BYTE}, // R8I + {GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE}, // R8UI + {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT}, // RGBA16F + {GL_RGBA16, GL_RGBA, GL_UNSIGNED_SHORT}, // RGBA16U + {GL_RGBA16_SNORM, GL_RGBA, GL_SHORT}, // RGBA16S + {GL_RGBA16I, GL_RGBA_INTEGER, GL_SHORT}, // RGBA16I + {GL_RGBA16UI, GL_RGBA_INTEGER, GL_UNSIGNED_SHORT}, // RGBA16UI + {GL_R11F_G11F_B10F, GL_RGB, GL_UNSIGNED_INT_10F_11F_11F_REV}, // R11FG11FB10F + {GL_RGBA32UI, GL_RGBA_INTEGER, GL_UNSIGNED_INT}, // RGBA32UI + {GL_COMPRESSED_RGBA_S3TC_DXT1_EXT}, // DXT1 + {GL_COMPRESSED_RGBA_S3TC_DXT3_EXT}, // DXT23 + {GL_COMPRESSED_RGBA_S3TC_DXT5_EXT}, // DXT45 + {GL_COMPRESSED_RED_RGTC1}, // DXN1 + {GL_COMPRESSED_RG_RGTC2}, // DXN2UNORM + {GL_COMPRESSED_SIGNED_RG_RGTC2}, // DXN2SNORM + {GL_COMPRESSED_RGBA_BPTC_UNORM}, // BC7U + {GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT}, // BC6H_UF16 + {GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT}, // BC6H_SF16 + {GL_COMPRESSED_RGBA_ASTC_4x4_KHR}, // ASTC_2D_4X4 + {GL_RGBA8, GL_BGRA, GL_UNSIGNED_BYTE}, // BGRA8 + {GL_RGBA32F, GL_RGBA, GL_FLOAT}, // RGBA32F + {GL_RGBA32I, GL_RGBA_INTEGER, GL_INT}, // RGBA32I + {GL_RG32F, GL_RG, GL_FLOAT}, // RG32F + {GL_RG32I, GL_RG_INTEGER, GL_INT}, // RG32I + {GL_R32F, GL_RED, GL_FLOAT}, // R32F + {GL_R16F, GL_RED, GL_HALF_FLOAT}, // R16F + {GL_R16, GL_RED, GL_UNSIGNED_SHORT}, // R16U + {GL_R16_SNORM, GL_RED, GL_SHORT}, // R16S + {GL_R16UI, GL_RED_INTEGER, GL_UNSIGNED_SHORT}, // R16UI + {GL_R16I, GL_RED_INTEGER, GL_SHORT}, // R16I + {GL_RG16, GL_RG, GL_UNSIGNED_SHORT}, // RG16 + {GL_RG16F, GL_RG, GL_HALF_FLOAT}, // RG16F + {GL_RG16UI, GL_RG_INTEGER, GL_UNSIGNED_SHORT}, // RG16UI + {GL_RG16I, GL_RG_INTEGER, GL_SHORT}, // RG16I + {GL_RG16_SNORM, GL_RG, GL_SHORT}, // RG16S + {GL_RGB32F, GL_RGB, GL_FLOAT}, // RGB32F + {GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV}, // RGBA8_SRGB + {GL_RG8, GL_RG, GL_UNSIGNED_BYTE}, // RG8U + {GL_RG8_SNORM, GL_RG, GL_BYTE}, // RG8S + {GL_RG8I, GL_RG_INTEGER, GL_BYTE}, // RG8I + {GL_RG8UI, GL_RG_INTEGER, GL_UNSIGNED_BYTE}, // RG8UI + {GL_RG32UI, GL_RG_INTEGER, GL_UNSIGNED_INT}, // RG32UI + {GL_RGB16F, GL_RGBA, GL_HALF_FLOAT}, // RGBX16F + {GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT}, // R32UI + {GL_R32I, GL_RED_INTEGER, GL_INT}, // R32I + {GL_COMPRESSED_RGBA_ASTC_8x8_KHR}, // ASTC_2D_8X8 + {GL_COMPRESSED_RGBA_ASTC_8x5_KHR}, // ASTC_2D_8X5 + {GL_COMPRESSED_RGBA_ASTC_5x4_KHR}, // ASTC_2D_5X4 + {GL_SRGB8_ALPHA8, GL_BGRA, GL_UNSIGNED_BYTE}, // BGRA8 // Compressed sRGB formats {GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT}, // DXT1_SRGB {GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT}, // DXT23_SRGB diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index bab9f485fe..134ef17816 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp @@ -123,6 +123,7 @@ struct FormatTuple { {VK_FORMAT_A8B8G8R8_UINT_PACK32, Attachable | Storage}, // ABGR8UI {VK_FORMAT_B5G6R5_UNORM_PACK16}, // B5G6R5U {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) {VK_FORMAT_R8_UNORM, Attachable | Storage}, // R8U {VK_FORMAT_R8_SNORM, Attachable | Storage}, // R8S diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index 173957533e..2f5621889a 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -81,6 +81,7 @@ std::unordered_map GetFormatProperties( VK_FORMAT_A8B8G8R8_SRGB_PACK32, VK_FORMAT_B5G6R5_UNORM_PACK16, VK_FORMAT_A2B10G10R10_UNORM_PACK32, + VK_FORMAT_A2B10G10R10_UINT_PACK32, VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_R32G32B32A32_SFLOAT, VK_FORMAT_R32G32B32A32_SINT, diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp index b287fe83f5..ea1e20de71 100644 --- a/src/video_core/surface.cpp +++ b/src/video_core/surface.cpp @@ -122,6 +122,8 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format) return PixelFormat::BGRA8_SRGB; case Tegra::RenderTargetFormat::RGB10_A2_UNORM: return PixelFormat::A2B10G10R10U; + case Tegra::RenderTargetFormat::RGB10_A2_UINT: + return PixelFormat::A2B10G10R10UI; case Tegra::RenderTargetFormat::RGBA8_UNORM: return PixelFormat::ABGR8U; case Tegra::RenderTargetFormat::RGBA8_SRGB: diff --git a/src/video_core/surface.h b/src/video_core/surface.h index a564a00e90..aec6b1734a 100644 --- a/src/video_core/surface.h +++ b/src/video_core/surface.h @@ -21,6 +21,7 @@ enum class PixelFormat { ABGR8UI, B5G6R5U, A2B10G10R10U, + A2B10G10R10UI, A1B5G5R5U, R8U, R8S, @@ -143,6 +144,7 @@ constexpr std::array compression_factor_shift_table = {{ 0, // ABGR8UI 0, // B5G6R5U 0, // A2B10G10R10U + 0, // A2B10G10R10UI 0, // A1B5G5R5U 0, // R8U 0, // R8S @@ -249,6 +251,7 @@ constexpr std::array block_width_table = {{ 1, // ABGR8UI 1, // B5G6R5U 1, // A2B10G10R10U + 1, // A2B10G10R10UI 1, // A1B5G5R5U 1, // R8U 1, // R8S @@ -347,6 +350,7 @@ constexpr std::array block_height_table = {{ 1, // ABGR8UI 1, // B5G6R5U 1, // A2B10G10R10U + 1, // A2B10G10R10UI 1, // A1B5G5R5U 1, // R8U 1, // R8S @@ -445,6 +449,7 @@ constexpr std::array bpp_table = {{ 32, // ABGR8UI 16, // B5G6R5U 32, // A2B10G10R10U + 32, // A2B10G10R10UI 16, // A1B5G5R5U 8, // R8U 8, // R8S -- cgit v1.2.3 From 44fb3cf920382cd73985bdd12c92fd70897892de Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Wed, 1 Jul 2020 01:18:43 -0300 Subject: video_core: Fix DXT4 and RGB565 --- src/video_core/morton.cpp | 8 ++++++-- .../renderer_opengl/gl_texture_cache.cpp | 4 +++- src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 4 +++- src/video_core/renderer_vulkan/vk_device.cpp | 1 + src/video_core/surface.cpp | 21 -------------------- src/video_core/surface.h | 23 ++++++++++++++-------- .../texture_cache/format_lookup_table.cpp | 7 +++---- 7 files changed, 31 insertions(+), 37 deletions(-) (limited to 'src/video_core/renderer_vulkan/vk_device.cpp') diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp index 7f239566a7..0c3c9f12d1 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, @@ -64,7 +65,8 @@ static constexpr ConversionArray morton_to_linear_fns = { MortonCopy, MortonCopy, MortonCopy, - MortonCopy, + MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, @@ -138,6 +140,7 @@ static constexpr ConversionArray linear_to_morton_fns = { MortonCopy, MortonCopy, MortonCopy, + MortonCopy, MortonCopy, MortonCopy, MortonCopy, @@ -156,7 +159,8 @@ static constexpr ConversionArray linear_to_morton_fns = { MortonCopy, MortonCopy, 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 7f85ceca9e..12f54c050a 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_RGB565, GL_RGB, GL_UNSIGNED_SHORT_5_6_5_REV}, // R5G6B5U {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 @@ -64,7 +65,8 @@ constexpr std::array tex_format {GL_COMPRESSED_RGBA_S3TC_DXT1_EXT}, // DXT1 {GL_COMPRESSED_RGBA_S3TC_DXT3_EXT}, // DXT23 {GL_COMPRESSED_RGBA_S3TC_DXT5_EXT}, // DXT45 - {GL_COMPRESSED_RED_RGTC1}, // DXN1 + {GL_COMPRESSED_RED_RGTC1}, // DXN1UNORM + {GL_COMPRESSED_SIGNED_RED_RGTC1}, // DXN1SNORM {GL_COMPRESSED_RG_RGTC2}, // DXN2UNORM {GL_COMPRESSED_SIGNED_RG_RGTC2}, // DXN2SNORM {GL_COMPRESSED_RGBA_BPTC_UNORM}, // BC7U diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index 3cb3b00d9b..57c3822c2d 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_B5G6R5_UNORM_PACK16, Attachable}, // R5G6B5U {VK_FORMAT_A1R5G5B5_UNORM_PACK16, Attachable}, // B5G5R5A1U {VK_FORMAT_A2B10G10R10_UNORM_PACK32, Attachable | Storage}, // A2B10G10R10U {VK_FORMAT_A2B10G10R10_UINT_PACK32, Attachable | Storage}, // A2B10G10R10UI @@ -140,7 +141,8 @@ struct FormatTuple { {VK_FORMAT_BC1_RGBA_UNORM_BLOCK}, // DXT1 {VK_FORMAT_BC2_UNORM_BLOCK}, // DXT23 {VK_FORMAT_BC3_UNORM_BLOCK}, // DXT45 - {VK_FORMAT_BC4_UNORM_BLOCK}, // DXN1 + {VK_FORMAT_BC4_UNORM_BLOCK}, // DXN1UNORM + {VK_FORMAT_BC4_SNORM_BLOCK}, // DXN1SNORM {VK_FORMAT_BC5_UNORM_BLOCK}, // DXN2UNORM {VK_FORMAT_BC5_SNORM_BLOCK}, // DXN2SNORM {VK_FORMAT_BC7_UNORM_BLOCK}, // BC7U diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index 2f5621889a..71f0ff4274 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -125,6 +125,7 @@ std::unordered_map GetFormatProperties( VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, + VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp index c1c2f2c524..492ab6215e 100644 --- a/src/video_core/surface.cpp +++ b/src/video_core/surface.cpp @@ -283,25 +283,4 @@ std::pair GetASTCBlockSize(PixelFormat format) { return {GetDefaultBlockWidth(format), GetDefaultBlockHeight(format)}; } -bool IsFormatBCn(PixelFormat format) { - switch (format) { - case PixelFormat::DXT1: - case PixelFormat::DXT23: - case PixelFormat::DXT45: - case PixelFormat::DXN1: - case PixelFormat::DXN2SNORM: - case PixelFormat::DXN2UNORM: - case PixelFormat::BC7U: - case PixelFormat::BC6H_UF16: - case PixelFormat::BC6H_SF16: - case PixelFormat::DXT1_SRGB: - case PixelFormat::DXT23_SRGB: - case PixelFormat::DXT45_SRGB: - case PixelFormat::BC7U_SRGB: - return true; - default: - return false; - } -} - } // namespace VideoCore::Surface diff --git a/src/video_core/surface.h b/src/video_core/surface.h index 9510db2c87..826c5a3ad5 100644 --- a/src/video_core/surface.h +++ b/src/video_core/surface.h @@ -20,6 +20,7 @@ enum class PixelFormat { ABGR8I, ABGR8UI, B5G6R5U, + R5G6B5U, B5G5R5A1U, A2B10G10R10U, A2B10G10R10UI, @@ -38,7 +39,8 @@ enum class PixelFormat { DXT1, DXT23, DXT45, - DXN1, // This is also known as BC4 + DXN1UNORM, // This is also known as BC4 + DXN1SNORM, DXN2UNORM, DXN2SNORM, BC7U, @@ -144,6 +146,7 @@ constexpr std::array compression_factor_shift_table = {{ 0, // ABGR8I 0, // ABGR8UI 0, // B5G6R5U + 0, // R5G6B5U 0, // B5G5R5A1U 0, // A2B10G10R10U 0, // A2B10G10R10UI @@ -162,7 +165,8 @@ constexpr std::array compression_factor_shift_table = {{ 2, // DXT1 2, // DXT23 2, // DXT45 - 2, // DXN1 + 2, // DXN1UNORM + 2, // DXN1SNORM 2, // DXN2UNORM 2, // DXN2SNORM 2, // BC7U @@ -252,6 +256,7 @@ constexpr std::array block_width_table = {{ 1, // ABGR8I 1, // ABGR8UI 1, // B5G6R5U + 1, // R5G6B5U 1, // B5G5R5A1U 1, // A2B10G10R10U 1, // A2B10G10R10UI @@ -270,7 +275,8 @@ constexpr std::array block_width_table = {{ 4, // DXT1 4, // DXT23 4, // DXT45 - 4, // DXN1 + 4, // DXN1UNORM + 4, // DXN1SNORM 4, // DXN2UNORM 4, // DXN2SNORM 4, // BC7U @@ -352,6 +358,7 @@ constexpr std::array block_height_table = {{ 1, // ABGR8I 1, // ABGR8UI 1, // B5G6R5U + 1, // R5G6B5U 1, // B5G5R5A1U 1, // A2B10G10R10U 1, // A2B10G10R10UI @@ -370,7 +377,8 @@ constexpr std::array block_height_table = {{ 4, // DXT1 4, // DXT23 4, // DXT45 - 4, // DXN1 + 4, // DXN1UNORM + 4, // DXN1SNORM 4, // DXN2UNORM 4, // DXN2SNORM 4, // BC7U @@ -452,6 +460,7 @@ constexpr std::array bpp_table = {{ 32, // ABGR8I 32, // ABGR8UI 16, // B5G6R5U + 16, // R5G6B5U 16, // B5G5R5A1U 32, // A2B10G10R10U 32, // A2B10G10R10UI @@ -470,7 +479,8 @@ constexpr std::array bpp_table = {{ 64, // DXT1 128, // DXT23 128, // DXT45 - 64, // DXN1 + 64, // DXN1UNORM + 64, // DXN1SNORM 128, // DXN2UNORM 128, // DXN2SNORM 128, // BC7U @@ -574,7 +584,4 @@ bool IsPixelFormatSRGB(PixelFormat format); std::pair GetASTCBlockSize(PixelFormat format); -/// Returns true if the specified PixelFormat is a BCn format, e.g. DXT or DXN -bool IsFormatBCn(PixelFormat format); - } // namespace VideoCore::Surface diff --git a/src/video_core/texture_cache/format_lookup_table.cpp b/src/video_core/texture_cache/format_lookup_table.cpp index b7f44ead22..148a3935d3 100644 --- a/src/video_core/texture_cache/format_lookup_table.cpp +++ b/src/video_core/texture_cache/format_lookup_table.cpp @@ -48,7 +48,7 @@ constexpr std::array DefinitionTable = {{ {TextureFormat::A8R8G8B8, C, SINT, SINT, SINT, SINT, PixelFormat::ABGR8I}, {TextureFormat::A8R8G8B8, S, UNORM, UNORM, UNORM, UNORM, PixelFormat::RGBA8_SRGB}, - {TextureFormat::B5G6R5, C, UNORM, UNORM, UNORM, UNORM, PixelFormat::B5G6R5U}, + {TextureFormat::B5G6R5, C, UNORM, UNORM, UNORM, UNORM, PixelFormat::R5G6B5U}, {TextureFormat::A2B10G10R10, C, UNORM, UNORM, UNORM, UNORM, PixelFormat::A2B10G10R10U}, {TextureFormat::A2B10G10R10, C, UINT, UINT, UINT, UINT, PixelFormat::A2B10G10R10UI}, @@ -118,9 +118,8 @@ constexpr std::array DefinitionTable = {{ {TextureFormat::DXT45, C, UNORM, UNORM, UNORM, UNORM, PixelFormat::DXT45}, {TextureFormat::DXT45, S, UNORM, UNORM, UNORM, UNORM, PixelFormat::DXT45_SRGB}, - // TODO: Use a different pixel format for SNORM - {TextureFormat::DXN1, C, UNORM, UNORM, UNORM, UNORM, PixelFormat::DXN1}, - {TextureFormat::DXN1, C, SNORM, SNORM, SNORM, SNORM, PixelFormat::DXN1}, + {TextureFormat::DXN1, C, UNORM, UNORM, UNORM, UNORM, PixelFormat::DXN1UNORM}, + {TextureFormat::DXN1, C, SNORM, SNORM, SNORM, SNORM, PixelFormat::DXN1SNORM}, {TextureFormat::DXN2, C, UNORM, UNORM, UNORM, UNORM, PixelFormat::DXN2UNORM}, {TextureFormat::DXN2, C, SNORM, SNORM, SNORM, SNORM, PixelFormat::DXN2SNORM}, -- cgit v1.2.3