forked from suyu/suyu
Video_Core: Implement texture format E5B9G9R9_SHAREDEXP.
This commit implements the E5B9G9R9 Texture format into the general system and OpenGL backend.
This commit is contained in:
parent
26f3e18c5c
commit
3f9262195b
4 changed files with 22 additions and 5 deletions
|
@ -112,6 +112,7 @@ static constexpr ConversionArray morton_to_linear_fns = {
|
||||||
MortonCopy<true, PixelFormat::ASTC_2D_8X6_SRGB>,
|
MortonCopy<true, PixelFormat::ASTC_2D_8X6_SRGB>,
|
||||||
MortonCopy<true, PixelFormat::ASTC_2D_6X5>,
|
MortonCopy<true, PixelFormat::ASTC_2D_6X5>,
|
||||||
MortonCopy<true, PixelFormat::ASTC_2D_6X5_SRGB>,
|
MortonCopy<true, PixelFormat::ASTC_2D_6X5_SRGB>,
|
||||||
|
MortonCopy<true, PixelFormat::E5B9G9R9F>,
|
||||||
MortonCopy<true, PixelFormat::Z32F>,
|
MortonCopy<true, PixelFormat::Z32F>,
|
||||||
MortonCopy<true, PixelFormat::Z16>,
|
MortonCopy<true, PixelFormat::Z16>,
|
||||||
MortonCopy<true, PixelFormat::Z24S8>,
|
MortonCopy<true, PixelFormat::Z24S8>,
|
||||||
|
@ -192,6 +193,7 @@ static constexpr ConversionArray linear_to_morton_fns = {
|
||||||
nullptr,
|
nullptr,
|
||||||
nullptr,
|
nullptr,
|
||||||
nullptr,
|
nullptr,
|
||||||
|
MortonCopy<false, PixelFormat::E5B9G9R9F>,
|
||||||
MortonCopy<false, PixelFormat::Z32F>,
|
MortonCopy<false, PixelFormat::Z32F>,
|
||||||
MortonCopy<false, PixelFormat::Z16>,
|
MortonCopy<false, PixelFormat::Z16>,
|
||||||
MortonCopy<false, PixelFormat::Z24S8>,
|
MortonCopy<false, PixelFormat::Z24S8>,
|
||||||
|
|
|
@ -131,6 +131,7 @@ constexpr std::array<FormatTuple, VideoCore::Surface::MaxPixelFormat> tex_format
|
||||||
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_8X6_SRGB
|
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_8X6_SRGB
|
||||||
{GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_6X5
|
{GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_6X5
|
||||||
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_6X5_SRGB
|
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_6X5_SRGB
|
||||||
|
{GL_RGB9_E5, GL_RGB, GL_UNSIGNED_INT_5_9_9_9_REV, ComponentType::Float, false}, // E5B9G9R9F
|
||||||
|
|
||||||
// Depth formats
|
// Depth formats
|
||||||
{GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, ComponentType::Float, false}, // Z32F
|
{GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, ComponentType::Float, false}, // Z32F
|
||||||
|
|
|
@ -315,6 +315,14 @@ PixelFormat PixelFormatFromTextureFormat(Tegra::Texture::TextureFormat format,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case Tegra::Texture::TextureFormat::E5B9G9R9_SHAREDEXP:
|
||||||
|
switch (component_type) {
|
||||||
|
case Tegra::Texture::ComponentType::FLOAT:
|
||||||
|
return PixelFormat::E5B9G9R9F;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case Tegra::Texture::TextureFormat::ZF32:
|
case Tegra::Texture::TextureFormat::ZF32:
|
||||||
return PixelFormat::Z32F;
|
return PixelFormat::Z32F;
|
||||||
case Tegra::Texture::TextureFormat::Z16:
|
case Tegra::Texture::TextureFormat::Z16:
|
||||||
|
|
|
@ -86,19 +86,20 @@ enum class PixelFormat {
|
||||||
ASTC_2D_8X6_SRGB = 68,
|
ASTC_2D_8X6_SRGB = 68,
|
||||||
ASTC_2D_6X5 = 69,
|
ASTC_2D_6X5 = 69,
|
||||||
ASTC_2D_6X5_SRGB = 70,
|
ASTC_2D_6X5_SRGB = 70,
|
||||||
|
E5B9G9R9F = 71,
|
||||||
|
|
||||||
MaxColorFormat,
|
MaxColorFormat,
|
||||||
|
|
||||||
// Depth formats
|
// Depth formats
|
||||||
Z32F = 71,
|
Z32F = 72,
|
||||||
Z16 = 72,
|
Z16 = 73,
|
||||||
|
|
||||||
MaxDepthFormat,
|
MaxDepthFormat,
|
||||||
|
|
||||||
// DepthStencil formats
|
// DepthStencil formats
|
||||||
Z24S8 = 73,
|
Z24S8 = 74,
|
||||||
S8Z24 = 74,
|
S8Z24 = 75,
|
||||||
Z32FS8 = 75,
|
Z32FS8 = 76,
|
||||||
|
|
||||||
MaxDepthStencilFormat,
|
MaxDepthStencilFormat,
|
||||||
|
|
||||||
|
@ -207,6 +208,7 @@ constexpr std::array<u32, MaxPixelFormat> compression_factor_shift_table = {{
|
||||||
2, // ASTC_2D_8X6_SRGB
|
2, // ASTC_2D_8X6_SRGB
|
||||||
2, // ASTC_2D_6X5
|
2, // ASTC_2D_6X5
|
||||||
2, // ASTC_2D_6X5_SRGB
|
2, // ASTC_2D_6X5_SRGB
|
||||||
|
0, // E5B9G9R9F
|
||||||
0, // Z32F
|
0, // Z32F
|
||||||
0, // Z16
|
0, // Z16
|
||||||
0, // Z24S8
|
0, // Z24S8
|
||||||
|
@ -302,6 +304,7 @@ constexpr std::array<u32, MaxPixelFormat> block_width_table = {{
|
||||||
8, // ASTC_2D_8X6_SRGB
|
8, // ASTC_2D_8X6_SRGB
|
||||||
6, // ASTC_2D_6X5
|
6, // ASTC_2D_6X5
|
||||||
6, // ASTC_2D_6X5_SRGB
|
6, // ASTC_2D_6X5_SRGB
|
||||||
|
1, // E5B9G9R9F
|
||||||
1, // Z32F
|
1, // Z32F
|
||||||
1, // Z16
|
1, // Z16
|
||||||
1, // Z24S8
|
1, // Z24S8
|
||||||
|
@ -389,6 +392,7 @@ constexpr std::array<u32, MaxPixelFormat> block_height_table = {{
|
||||||
6, // ASTC_2D_8X6_SRGB
|
6, // ASTC_2D_8X6_SRGB
|
||||||
5, // ASTC_2D_6X5
|
5, // ASTC_2D_6X5
|
||||||
5, // ASTC_2D_6X5_SRGB
|
5, // ASTC_2D_6X5_SRGB
|
||||||
|
1, // E5B9G9R9F
|
||||||
1, // Z32F
|
1, // Z32F
|
||||||
1, // Z16
|
1, // Z16
|
||||||
1, // Z24S8
|
1, // Z24S8
|
||||||
|
@ -476,6 +480,7 @@ constexpr std::array<u32, MaxPixelFormat> bpp_table = {{
|
||||||
128, // ASTC_2D_8X6_SRGB
|
128, // ASTC_2D_8X6_SRGB
|
||||||
128, // ASTC_2D_6X5
|
128, // ASTC_2D_6X5
|
||||||
128, // ASTC_2D_6X5_SRGB
|
128, // ASTC_2D_6X5_SRGB
|
||||||
|
32, // E5B9G9R9F
|
||||||
32, // Z32F
|
32, // Z32F
|
||||||
16, // Z16
|
16, // Z16
|
||||||
32, // Z24S8
|
32, // Z24S8
|
||||||
|
@ -578,6 +583,7 @@ constexpr std::array<SurfaceCompression, MaxPixelFormat> compression_type_table
|
||||||
SurfaceCompression::Converted, // ASTC_2D_8X6_SRGB
|
SurfaceCompression::Converted, // ASTC_2D_8X6_SRGB
|
||||||
SurfaceCompression::Converted, // ASTC_2D_6X5
|
SurfaceCompression::Converted, // ASTC_2D_6X5
|
||||||
SurfaceCompression::Converted, // ASTC_2D_6X5_SRGB
|
SurfaceCompression::Converted, // ASTC_2D_6X5_SRGB
|
||||||
|
SurfaceCompression::None, // E5B9G9R9F
|
||||||
SurfaceCompression::None, // Z32F
|
SurfaceCompression::None, // Z32F
|
||||||
SurfaceCompression::None, // Z16
|
SurfaceCompression::None, // Z16
|
||||||
SurfaceCompression::None, // Z24S8
|
SurfaceCompression::None, // Z24S8
|
||||||
|
|
Loading…
Reference in a new issue