video_core: Implement R8_SNORM render target
This commit is contained in:
		
							parent
							
								
									505c206eb8
								
							
						
					
					
						commit
						fd33e996e0
					
				@ -75,6 +75,7 @@ enum class RenderTargetFormat : u32 {
 | 
			
		||||
    R16_UINT = 0xF1,
 | 
			
		||||
    R16_FLOAT = 0xF2,
 | 
			
		||||
    R8_UNORM = 0xF3,
 | 
			
		||||
    R8_SNORM = 0xF4,
 | 
			
		||||
    R8_UINT = 0xF6,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -48,6 +48,7 @@ static constexpr ConversionArray morton_to_linear_fns = {
 | 
			
		||||
    MortonCopy<true, PixelFormat::A2B10G10R10U>,
 | 
			
		||||
    MortonCopy<true, PixelFormat::A1B5G5R5U>,
 | 
			
		||||
    MortonCopy<true, PixelFormat::R8U>,
 | 
			
		||||
    MortonCopy<true, PixelFormat::R8S>,
 | 
			
		||||
    MortonCopy<true, PixelFormat::R8UI>,
 | 
			
		||||
    MortonCopy<true, PixelFormat::RGBA16F>,
 | 
			
		||||
    MortonCopy<true, PixelFormat::RGBA16U>,
 | 
			
		||||
@ -131,6 +132,7 @@ static constexpr ConversionArray linear_to_morton_fns = {
 | 
			
		||||
    MortonCopy<false, PixelFormat::A2B10G10R10U>,
 | 
			
		||||
    MortonCopy<false, PixelFormat::A1B5G5R5U>,
 | 
			
		||||
    MortonCopy<false, PixelFormat::R8U>,
 | 
			
		||||
    MortonCopy<false, PixelFormat::R8S>,
 | 
			
		||||
    MortonCopy<false, PixelFormat::R8UI>,
 | 
			
		||||
    MortonCopy<false, PixelFormat::RGBA16F>,
 | 
			
		||||
    MortonCopy<false, PixelFormat::RGBA16S>,
 | 
			
		||||
 | 
			
		||||
@ -48,6 +48,7 @@ constexpr std::array<FormatTuple, VideoCore::Surface::MaxPixelFormat> tex_format
 | 
			
		||||
    {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_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE},                  // R8UI
 | 
			
		||||
    {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT},                         // RGBA16F
 | 
			
		||||
    {GL_RGBA16, GL_RGBA, GL_UNSIGNED_SHORT},                      // RGBA16U
 | 
			
		||||
 | 
			
		||||
@ -124,6 +124,7 @@ struct FormatTuple {
 | 
			
		||||
    {VK_FORMAT_A2B10G10R10_UNORM_PACK32, Attachable | Storage}, // A2B10G10R10U
 | 
			
		||||
    {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_UINT, Attachable | Storage},                  // R8UI
 | 
			
		||||
    {VK_FORMAT_R16G16B16A16_SFLOAT, Attachable | Storage},      // RGBA16F
 | 
			
		||||
    {VK_FORMAT_R16G16B16A16_UNORM, Attachable | Storage},       // RGBA16U
 | 
			
		||||
 | 
			
		||||
@ -98,6 +98,7 @@ std::unordered_map<VkFormat, VkFormatProperties> 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,
 | 
			
		||||
 | 
			
		||||
@ -164,6 +164,8 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format)
 | 
			
		||||
        return PixelFormat::R16F;
 | 
			
		||||
    case Tegra::RenderTargetFormat::R8_UNORM:
 | 
			
		||||
        return PixelFormat::R8U;
 | 
			
		||||
    case Tegra::RenderTargetFormat::R8_SNORM:
 | 
			
		||||
        return PixelFormat::R8S;
 | 
			
		||||
    case Tegra::RenderTargetFormat::R8_UINT:
 | 
			
		||||
        return PixelFormat::R8UI;
 | 
			
		||||
    default:
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,7 @@ enum class PixelFormat {
 | 
			
		||||
    A2B10G10R10U,
 | 
			
		||||
    A1B5G5R5U,
 | 
			
		||||
    R8U,
 | 
			
		||||
    R8S,
 | 
			
		||||
    R8UI,
 | 
			
		||||
    RGBA16F,
 | 
			
		||||
    RGBA16U,
 | 
			
		||||
@ -137,6 +138,7 @@ constexpr std::array<u32, MaxPixelFormat> compression_factor_shift_table = {{
 | 
			
		||||
    0, // A2B10G10R10U
 | 
			
		||||
    0, // A1B5G5R5U
 | 
			
		||||
    0, // R8U
 | 
			
		||||
    0, // R8S
 | 
			
		||||
    0, // R8UI
 | 
			
		||||
    0, // RGBA16F
 | 
			
		||||
    0, // RGBA16U
 | 
			
		||||
@ -236,6 +238,7 @@ constexpr std::array<u32, MaxPixelFormat> block_width_table = {{
 | 
			
		||||
    1,  // A2B10G10R10U
 | 
			
		||||
    1,  // A1B5G5R5U
 | 
			
		||||
    1,  // R8U
 | 
			
		||||
    1,  // R8S
 | 
			
		||||
    1,  // R8UI
 | 
			
		||||
    1,  // RGBA16F
 | 
			
		||||
    1,  // RGBA16U
 | 
			
		||||
@ -327,6 +330,7 @@ constexpr std::array<u32, MaxPixelFormat> block_height_table = {{
 | 
			
		||||
    1,  // A2B10G10R10U
 | 
			
		||||
    1,  // A1B5G5R5U
 | 
			
		||||
    1,  // R8U
 | 
			
		||||
    1,  // R8S
 | 
			
		||||
    1,  // R8UI
 | 
			
		||||
    1,  // RGBA16F
 | 
			
		||||
    1,  // RGBA16U
 | 
			
		||||
@ -418,6 +422,7 @@ constexpr std::array<u32, MaxPixelFormat> bpp_table = {{
 | 
			
		||||
    32,  // A2B10G10R10U
 | 
			
		||||
    16,  // A1B5G5R5U
 | 
			
		||||
    8,   // R8U
 | 
			
		||||
    8,   // R8S
 | 
			
		||||
    8,   // R8UI
 | 
			
		||||
    64,  // RGBA16F
 | 
			
		||||
    64,  // RGBA16U
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user