mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Implement R8_UINT RenderTargetFormat & PixelFormat (#1014)
- Used by Go Vacation
This commit is contained in:
		
							parent
							
								
									403dfd68fc
								
							
						
					
					
						commit
						224071a652
					
				| @ -70,6 +70,7 @@ u32 RenderTargetBytesPerPixel(RenderTargetFormat format) { | ||||
|     case RenderTargetFormat::RG8_SNORM: | ||||
|         return 2; | ||||
|     case RenderTargetFormat::R8_UNORM: | ||||
|     case RenderTargetFormat::R8_UINT: | ||||
|         return 1; | ||||
|     default: | ||||
|         UNIMPLEMENTED_MSG("Unimplemented render target format {}", static_cast<u32>(format)); | ||||
|  | ||||
| @ -42,6 +42,7 @@ enum class RenderTargetFormat : u32 { | ||||
|     R16_UINT = 0xF1, | ||||
|     R16_FLOAT = 0xF2, | ||||
|     R8_UNORM = 0xF3, | ||||
|     R8_UINT = 0xF6, | ||||
| }; | ||||
| 
 | ||||
| enum class DepthFormat : u32 { | ||||
|  | ||||
| @ -99,6 +99,7 @@ static constexpr std::array<FormatTuple, SurfaceParams::MaxPixelFormat> tex_form | ||||
|      false}, // A2B10G10R10
 | ||||
|     {GL_RGB5_A1, GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV, ComponentType::UNorm, false}, // A1B5G5R5
 | ||||
|     {GL_R8, GL_RED, GL_UNSIGNED_BYTE, ComponentType::UNorm, false},                    // R8
 | ||||
|     {GL_R8UI, GL_RED_INTEGER, GL_UNSIGNED_BYTE, ComponentType::UInt, false},           // R8UI
 | ||||
|     {GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, ComponentType::Float, false},                 // RGBA16F
 | ||||
|     {GL_R11F_G11F_B10F, GL_RGB, GL_UNSIGNED_INT_10F_11F_11F_REV, ComponentType::Float, | ||||
|      false},                                                                     // R11FG11FB10F
 | ||||
| @ -236,23 +237,24 @@ static constexpr std::array<void (*)(u32, u32, u32, std::vector<u8>&, Tegra::GPU | ||||
|         MortonCopy<true, PixelFormat::ABGR8U>,       MortonCopy<true, PixelFormat::ABGR8S>, | ||||
|         MortonCopy<true, PixelFormat::B5G6R5>,       MortonCopy<true, PixelFormat::A2B10G10R10>, | ||||
|         MortonCopy<true, PixelFormat::A1B5G5R5>,     MortonCopy<true, PixelFormat::R8>, | ||||
|         MortonCopy<true, PixelFormat::RGBA16F>,     MortonCopy<true, PixelFormat::R11FG11FB10F>, | ||||
|         MortonCopy<true, PixelFormat::RGBA32UI>,    MortonCopy<true, PixelFormat::DXT1>, | ||||
|         MortonCopy<true, PixelFormat::DXT23>,       MortonCopy<true, PixelFormat::DXT45>, | ||||
|         MortonCopy<true, PixelFormat::DXN1>,        MortonCopy<true, PixelFormat::DXN2UNORM>, | ||||
|         MortonCopy<true, PixelFormat::DXN2SNORM>,   MortonCopy<true, PixelFormat::BC7U>, | ||||
|         MortonCopy<true, PixelFormat::ASTC_2D_4X4>, MortonCopy<true, PixelFormat::G8R8>, | ||||
|         MortonCopy<true, PixelFormat::BGRA8>,       MortonCopy<true, PixelFormat::RGBA32F>, | ||||
|         MortonCopy<true, PixelFormat::RG32F>,       MortonCopy<true, PixelFormat::R32F>, | ||||
|         MortonCopy<true, PixelFormat::R16F>,        MortonCopy<true, PixelFormat::R16UNORM>, | ||||
|         MortonCopy<true, PixelFormat::R16S>,        MortonCopy<true, PixelFormat::R16UI>, | ||||
|         MortonCopy<true, PixelFormat::R16I>,        MortonCopy<true, PixelFormat::RG16>, | ||||
|         MortonCopy<true, PixelFormat::RG16F>,       MortonCopy<true, PixelFormat::RG16UI>, | ||||
|         MortonCopy<true, PixelFormat::RG16I>,       MortonCopy<true, PixelFormat::RG16S>, | ||||
|         MortonCopy<true, PixelFormat::RGB32F>,      MortonCopy<true, PixelFormat::SRGBA8>, | ||||
|         MortonCopy<true, PixelFormat::RG8S>,        MortonCopy<true, PixelFormat::Z24S8>, | ||||
|         MortonCopy<true, PixelFormat::S8Z24>,       MortonCopy<true, PixelFormat::Z32F>, | ||||
|         MortonCopy<true, PixelFormat::Z16>,         MortonCopy<true, PixelFormat::Z32FS8>, | ||||
|         MortonCopy<true, PixelFormat::R8UI>,         MortonCopy<true, PixelFormat::RGBA16F>, | ||||
|         MortonCopy<true, PixelFormat::R11FG11FB10F>, MortonCopy<true, PixelFormat::RGBA32UI>, | ||||
|         MortonCopy<true, PixelFormat::DXT1>,         MortonCopy<true, PixelFormat::DXT23>, | ||||
|         MortonCopy<true, PixelFormat::DXT45>,        MortonCopy<true, PixelFormat::DXN1>, | ||||
|         MortonCopy<true, PixelFormat::DXN2UNORM>,    MortonCopy<true, PixelFormat::DXN2SNORM>, | ||||
|         MortonCopy<true, PixelFormat::BC7U>,         MortonCopy<true, PixelFormat::ASTC_2D_4X4>, | ||||
|         MortonCopy<true, PixelFormat::G8R8>,         MortonCopy<true, PixelFormat::BGRA8>, | ||||
|         MortonCopy<true, PixelFormat::RGBA32F>,      MortonCopy<true, PixelFormat::RG32F>, | ||||
|         MortonCopy<true, PixelFormat::R32F>,         MortonCopy<true, PixelFormat::R16F>, | ||||
|         MortonCopy<true, PixelFormat::R16UNORM>,     MortonCopy<true, PixelFormat::R16S>, | ||||
|         MortonCopy<true, PixelFormat::R16UI>,        MortonCopy<true, PixelFormat::R16I>, | ||||
|         MortonCopy<true, PixelFormat::RG16>,         MortonCopy<true, PixelFormat::RG16F>, | ||||
|         MortonCopy<true, PixelFormat::RG16UI>,       MortonCopy<true, PixelFormat::RG16I>, | ||||
|         MortonCopy<true, PixelFormat::RG16S>,        MortonCopy<true, PixelFormat::RGB32F>, | ||||
|         MortonCopy<true, PixelFormat::SRGBA8>,       MortonCopy<true, PixelFormat::RG8S>, | ||||
|         MortonCopy<true, PixelFormat::Z24S8>,        MortonCopy<true, PixelFormat::S8Z24>, | ||||
|         MortonCopy<true, PixelFormat::Z32F>,         MortonCopy<true, PixelFormat::Z16>, | ||||
|         MortonCopy<true, PixelFormat::Z32FS8>, | ||||
| }; | ||||
| 
 | ||||
| static constexpr std::array<void (*)(u32, u32, u32, std::vector<u8>&, Tegra::GPUVAddr), | ||||
| @ -264,6 +266,7 @@ static constexpr std::array<void (*)(u32, u32, u32, std::vector<u8>&, Tegra::GPU | ||||
|         MortonCopy<false, PixelFormat::A2B10G10R10>, | ||||
|         MortonCopy<false, PixelFormat::A1B5G5R5>, | ||||
|         MortonCopy<false, PixelFormat::R8>, | ||||
|         MortonCopy<false, PixelFormat::R8UI>, | ||||
|         MortonCopy<false, PixelFormat::RGBA16F>, | ||||
|         MortonCopy<false, PixelFormat::R11FG11FB10F>, | ||||
|         MortonCopy<false, PixelFormat::RGBA32UI>, | ||||
|  | ||||
| @ -29,44 +29,45 @@ struct SurfaceParams { | ||||
|         A2B10G10R10 = 3, | ||||
|         A1B5G5R5 = 4, | ||||
|         R8 = 5, | ||||
|         RGBA16F = 6, | ||||
|         R11FG11FB10F = 7, | ||||
|         RGBA32UI = 8, | ||||
|         DXT1 = 9, | ||||
|         DXT23 = 10, | ||||
|         DXT45 = 11, | ||||
|         DXN1 = 12, // This is also known as BC4
 | ||||
|         DXN2UNORM = 13, | ||||
|         DXN2SNORM = 14, | ||||
|         BC7U = 15, | ||||
|         ASTC_2D_4X4 = 16, | ||||
|         G8R8 = 17, | ||||
|         BGRA8 = 18, | ||||
|         RGBA32F = 19, | ||||
|         RG32F = 20, | ||||
|         R32F = 21, | ||||
|         R16F = 22, | ||||
|         R16UNORM = 23, | ||||
|         R16S = 24, | ||||
|         R16UI = 25, | ||||
|         R16I = 26, | ||||
|         RG16 = 27, | ||||
|         RG16F = 28, | ||||
|         RG16UI = 29, | ||||
|         RG16I = 30, | ||||
|         RG16S = 31, | ||||
|         RGB32F = 32, | ||||
|         SRGBA8 = 33, | ||||
|         RG8S = 34, | ||||
|         R8UI = 6, | ||||
|         RGBA16F = 7, | ||||
|         R11FG11FB10F = 8, | ||||
|         RGBA32UI = 9, | ||||
|         DXT1 = 10, | ||||
|         DXT23 = 11, | ||||
|         DXT45 = 12, | ||||
|         DXN1 = 13, // This is also known as BC4
 | ||||
|         DXN2UNORM = 14, | ||||
|         DXN2SNORM = 15, | ||||
|         BC7U = 16, | ||||
|         ASTC_2D_4X4 = 17, | ||||
|         G8R8 = 18, | ||||
|         BGRA8 = 19, | ||||
|         RGBA32F = 20, | ||||
|         RG32F = 21, | ||||
|         R32F = 22, | ||||
|         R16F = 23, | ||||
|         R16UNORM = 24, | ||||
|         R16S = 25, | ||||
|         R16UI = 26, | ||||
|         R16I = 27, | ||||
|         RG16 = 28, | ||||
|         RG16F = 29, | ||||
|         RG16UI = 30, | ||||
|         RG16I = 31, | ||||
|         RG16S = 32, | ||||
|         RGB32F = 33, | ||||
|         SRGBA8 = 34, | ||||
|         RG8S = 35, | ||||
| 
 | ||||
|         MaxColorFormat, | ||||
| 
 | ||||
|         // DepthStencil formats
 | ||||
|         Z24S8 = 35, | ||||
|         S8Z24 = 36, | ||||
|         Z32F = 37, | ||||
|         Z16 = 38, | ||||
|         Z32FS8 = 39, | ||||
|         Z24S8 = 36, | ||||
|         S8Z24 = 37, | ||||
|         Z32F = 38, | ||||
|         Z16 = 39, | ||||
|         Z32FS8 = 40, | ||||
| 
 | ||||
|         MaxDepthStencilFormat, | ||||
| 
 | ||||
| @ -110,6 +111,7 @@ struct SurfaceParams { | ||||
|             1, // A2B10G10R10
 | ||||
|             1, // A1B5G5R5
 | ||||
|             1, // R8
 | ||||
|             1, // R8UI
 | ||||
|             1, // RGBA16F
 | ||||
|             1, // R11FG11FB10F
 | ||||
|             1, // RGBA32UI
 | ||||
| @ -161,6 +163,7 @@ struct SurfaceParams { | ||||
|             32,  // A2B10G10R10
 | ||||
|             16,  // A1B5G5R5
 | ||||
|             8,   // R8
 | ||||
|             8,   // R8UI
 | ||||
|             64,  // RGBA16F
 | ||||
|             32,  // R11FG11FB10F
 | ||||
|             128, // RGBA32UI
 | ||||
| @ -250,6 +253,8 @@ struct SurfaceParams { | ||||
|             return PixelFormat::RGBA32UI; | ||||
|         case Tegra::RenderTargetFormat::R8_UNORM: | ||||
|             return PixelFormat::R8; | ||||
|         case Tegra::RenderTargetFormat::R8_UINT: | ||||
|             return PixelFormat::R8UI; | ||||
|         case Tegra::RenderTargetFormat::RG16_FLOAT: | ||||
|             return PixelFormat::RG16F; | ||||
|         case Tegra::RenderTargetFormat::RG16_UINT: | ||||
| @ -301,7 +306,15 @@ struct SurfaceParams { | ||||
|         case Tegra::Texture::TextureFormat::A1B5G5R5: | ||||
|             return PixelFormat::A1B5G5R5; | ||||
|         case Tegra::Texture::TextureFormat::R8: | ||||
|             switch (component_type) { | ||||
|             case Tegra::Texture::ComponentType::UNORM: | ||||
|                 return PixelFormat::R8; | ||||
|             case Tegra::Texture::ComponentType::UINT: | ||||
|                 return PixelFormat::R8UI; | ||||
|             } | ||||
|             LOG_CRITICAL(HW_GPU, "Unimplemented component_type={}", | ||||
|                          static_cast<u32>(component_type)); | ||||
|             UNREACHABLE(); | ||||
|         case Tegra::Texture::TextureFormat::G8R8: | ||||
|             return PixelFormat::G8R8; | ||||
|         case Tegra::Texture::TextureFormat::R16_G16_B16_A16: | ||||
| @ -435,6 +448,7 @@ struct SurfaceParams { | ||||
|             return ComponentType::Float; | ||||
|         case Tegra::RenderTargetFormat::RGBA32_UINT: | ||||
|         case Tegra::RenderTargetFormat::RG16_UINT: | ||||
|         case Tegra::RenderTargetFormat::R8_UINT: | ||||
|         case Tegra::RenderTargetFormat::R16_UINT: | ||||
|             return ComponentType::UInt; | ||||
|         case Tegra::RenderTargetFormat::RG16_SINT: | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 greggameplayer
						greggameplayer