summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2020-06-30 09:00:23 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-07-13 06:01:08 +0200
commitf29fede49c647ce336de2fb4f48aba25f968a882 (patch)
tree221f82144265a6587440ee801b5d4662f1d49a27
parentvideo_core: Implement R8_SNORM render target (diff)
downloadyuzu-f29fede49c647ce336de2fb4f48aba25f968a882.tar
yuzu-f29fede49c647ce336de2fb4f48aba25f968a882.tar.gz
yuzu-f29fede49c647ce336de2fb4f48aba25f968a882.tar.bz2
yuzu-f29fede49c647ce336de2fb4f48aba25f968a882.tar.lz
yuzu-f29fede49c647ce336de2fb4f48aba25f968a882.tar.xz
yuzu-f29fede49c647ce336de2fb4f48aba25f968a882.tar.zst
yuzu-f29fede49c647ce336de2fb4f48aba25f968a882.zip
-rw-r--r--src/video_core/gpu.h1
-rw-r--r--src/video_core/morton.cpp2
-rw-r--r--src/video_core/renderer_opengl/gl_texture_cache.cpp1
-rw-r--r--src/video_core/renderer_vulkan/maxwell_to_vk.cpp1
-rw-r--r--src/video_core/renderer_vulkan/vk_device.cpp1
-rw-r--r--src/video_core/surface.cpp2
-rw-r--r--src/video_core/surface.h5
7 files changed, 13 insertions, 0 deletions
diff --git a/src/video_core/gpu.h b/src/video_core/gpu.h
index 2b92ab0ea..1e5d2ffcc 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 9b569afc8..790360d4d 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<true, PixelFormat::A1B5G5R5U>,
MortonCopy<true, PixelFormat::R8U>,
MortonCopy<true, PixelFormat::R8S>,
+ MortonCopy<true, PixelFormat::R8I>,
MortonCopy<true, PixelFormat::R8UI>,
MortonCopy<true, PixelFormat::RGBA16F>,
MortonCopy<true, PixelFormat::RGBA16U>,
@@ -133,6 +134,7 @@ static constexpr ConversionArray linear_to_morton_fns = {
MortonCopy<false, PixelFormat::A1B5G5R5U>,
MortonCopy<false, PixelFormat::R8U>,
MortonCopy<false, PixelFormat::R8S>,
+ MortonCopy<false, PixelFormat::R8I>,
MortonCopy<false, PixelFormat::R8UI>,
MortonCopy<false, PixelFormat::RGBA16F>,
MortonCopy<false, PixelFormat::RGBA16S>,
diff --git a/src/video_core/renderer_opengl/gl_texture_cache.cpp b/src/video_core/renderer_opengl/gl_texture_cache.cpp
index 6319b0006..553db1cb1 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<FormatTuple, VideoCore::Surface::MaxPixelFormat> 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 1f3f79380..645cb92ca 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 c4889ac88..59c5f9ea5 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<VkFormat, VkFormatProperties> 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 6e9b496d3..f132f1b43 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 def206740..a6cac3bf9 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<u32, MaxPixelFormat> 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<u32, MaxPixelFormat> block_width_table = {{
1, // A1B5G5R5U
1, // R8U
1, // R8S
+ 1, // R8I
1, // R8UI
1, // RGBA16F
1, // RGBA16U
@@ -331,6 +334,7 @@ constexpr std::array<u32, MaxPixelFormat> block_height_table = {{
1, // A1B5G5R5U
1, // R8U
1, // R8S
+ 1, // R8I
1, // R8UI
1, // RGBA16F
1, // RGBA16U
@@ -423,6 +427,7 @@ constexpr std::array<u32, MaxPixelFormat> bpp_table = {{
16, // A1B5G5R5U
8, // R8U
8, // R8S
+ 8, // R8I
8, // R8UI
64, // RGBA16F
64, // RGBA16U