mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	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
					
				@ -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 New Issue
	
	Block a user