mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-30 15:39:02 -05:00 
			
		
		
		
	Merge pull request #1488 from Hexagon12/astc-types
video_core: Added ASTC 5x4; 8x5 types
This commit is contained in:
		| @@ -231,6 +231,8 @@ static constexpr std::array<FormatTuple, SurfaceParams::MaxPixelFormat> tex_form | ||||
|     {GL_RG32UI, GL_RG_INTEGER, GL_UNSIGNED_INT, ComponentType::UInt, false},              // RG32UI | ||||
|     {GL_R32UI, GL_RED_INTEGER, GL_UNSIGNED_INT, ComponentType::UInt, false},              // R32UI | ||||
|     {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_8X8 | ||||
|     {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_8X5 | ||||
|     {GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, ComponentType::UNorm, false}, // ASTC_2D_5X4 | ||||
|  | ||||
|     // Depth formats | ||||
|     {GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, ComponentType::Float, false}, // Z32F | ||||
| @@ -277,7 +279,9 @@ static const FormatTuple& GetFormatTuple(PixelFormat pixel_format, ComponentType | ||||
| static bool IsPixelFormatASTC(PixelFormat format) { | ||||
|     switch (format) { | ||||
|     case PixelFormat::ASTC_2D_4X4: | ||||
|     case PixelFormat::ASTC_2D_5X4: | ||||
|     case PixelFormat::ASTC_2D_8X8: | ||||
|     case PixelFormat::ASTC_2D_8X5: | ||||
|         return true; | ||||
|     default: | ||||
|         return false; | ||||
| @@ -288,8 +292,12 @@ static std::pair<u32, u32> GetASTCBlockSize(PixelFormat format) { | ||||
|     switch (format) { | ||||
|     case PixelFormat::ASTC_2D_4X4: | ||||
|         return {4, 4}; | ||||
|     case PixelFormat::ASTC_2D_5X4: | ||||
|         return {5, 4}; | ||||
|     case PixelFormat::ASTC_2D_8X8: | ||||
|         return {8, 8}; | ||||
|     case PixelFormat::ASTC_2D_8X5: | ||||
|         return {8, 5}; | ||||
|     default: | ||||
|         LOG_CRITICAL(HW_GPU, "Unhandled format: {}", static_cast<u32>(format)); | ||||
|         UNREACHABLE(); | ||||
| @@ -395,6 +403,8 @@ static constexpr std::array<void (*)(u32, u32, u32, u32, u32, u8*, std::size_t, | ||||
|         MortonCopy<true, PixelFormat::RG32UI>, | ||||
|         MortonCopy<true, PixelFormat::R32UI>, | ||||
|         MortonCopy<true, PixelFormat::ASTC_2D_8X8>, | ||||
|         MortonCopy<true, PixelFormat::ASTC_2D_8X5>, | ||||
|         MortonCopy<true, PixelFormat::ASTC_2D_5X4>, | ||||
|         MortonCopy<true, PixelFormat::Z32F>, | ||||
|         MortonCopy<true, PixelFormat::Z16>, | ||||
|         MortonCopy<true, PixelFormat::Z24S8>, | ||||
| @@ -455,6 +465,8 @@ static constexpr std::array<void (*)(u32, u32, u32, u32, u32, u8*, std::size_t, | ||||
|         MortonCopy<false, PixelFormat::RG32UI>, | ||||
|         MortonCopy<false, PixelFormat::R32UI>, | ||||
|         nullptr, | ||||
|         nullptr, | ||||
|         nullptr, | ||||
|         MortonCopy<false, PixelFormat::Z32F>, | ||||
|         MortonCopy<false, PixelFormat::Z16>, | ||||
|         MortonCopy<false, PixelFormat::Z24S8>, | ||||
| @@ -790,7 +802,9 @@ static void ConvertFormatAsNeeded_LoadGLBuffer(std::vector<u8>& data, PixelForma | ||||
|                                                u32 width, u32 height) { | ||||
|     switch (pixel_format) { | ||||
|     case PixelFormat::ASTC_2D_4X4: | ||||
|     case PixelFormat::ASTC_2D_8X8: { | ||||
|     case PixelFormat::ASTC_2D_8X8: | ||||
|     case PixelFormat::ASTC_2D_8X5: | ||||
|     case PixelFormat::ASTC_2D_5X4: { | ||||
|         // Convert ASTC pixel formats to RGBA8, as most desktop GPUs do not support ASTC. | ||||
|         u32 block_width{}; | ||||
|         u32 block_height{}; | ||||
|   | ||||
| @@ -74,19 +74,21 @@ struct SurfaceParams { | ||||
|         RG32UI = 43, | ||||
|         R32UI = 44, | ||||
|         ASTC_2D_8X8 = 45, | ||||
|         ASTC_2D_8X5 = 46, | ||||
|         ASTC_2D_5X4 = 47, | ||||
|  | ||||
|         MaxColorFormat, | ||||
|  | ||||
|         // Depth formats | ||||
|         Z32F = 46, | ||||
|         Z16 = 47, | ||||
|         Z32F = 48, | ||||
|         Z16 = 49, | ||||
|  | ||||
|         MaxDepthFormat, | ||||
|  | ||||
|         // DepthStencil formats | ||||
|         Z24S8 = 48, | ||||
|         S8Z24 = 49, | ||||
|         Z32FS8 = 50, | ||||
|         Z24S8 = 50, | ||||
|         S8Z24 = 51, | ||||
|         Z32FS8 = 52, | ||||
|  | ||||
|         MaxDepthStencilFormat, | ||||
|  | ||||
| @@ -220,6 +222,8 @@ struct SurfaceParams { | ||||
|             1, // RG32UI | ||||
|             1, // R32UI | ||||
|             4, // ASTC_2D_8X8 | ||||
|             4, // ASTC_2D_8X5 | ||||
|             4, // ASTC_2D_5X4 | ||||
|             1, // Z32F | ||||
|             1, // Z16 | ||||
|             1, // Z24S8 | ||||
| @@ -282,6 +286,8 @@ struct SurfaceParams { | ||||
|             64,  // RG32UI | ||||
|             32,  // R32UI | ||||
|             16,  // ASTC_2D_8X8 | ||||
|             32,  // ASTC_2D_8X5 | ||||
|             32,  // ASTC_2D_5X4 | ||||
|             32,  // Z32F | ||||
|             16,  // Z16 | ||||
|             32,  // Z24S8 | ||||
| @@ -553,8 +559,12 @@ struct SurfaceParams { | ||||
|             return PixelFormat::BC6H_SF16; | ||||
|         case Tegra::Texture::TextureFormat::ASTC_2D_4X4: | ||||
|             return PixelFormat::ASTC_2D_4X4; | ||||
|         case Tegra::Texture::TextureFormat::ASTC_2D_5X4: | ||||
|             return PixelFormat::ASTC_2D_5X4; | ||||
|         case Tegra::Texture::TextureFormat::ASTC_2D_8X8: | ||||
|             return PixelFormat::ASTC_2D_8X8; | ||||
|         case Tegra::Texture::TextureFormat::ASTC_2D_8X5: | ||||
|             return PixelFormat::ASTC_2D_8X5; | ||||
|         case Tegra::Texture::TextureFormat::R16_G16: | ||||
|             switch (component_type) { | ||||
|             case Tegra::Texture::ComponentType::FLOAT: | ||||
|   | ||||
| @@ -200,7 +200,9 @@ u32 BytesPerPixel(TextureFormat format) { | ||||
|     case TextureFormat::R32_G32_B32: | ||||
|         return 12; | ||||
|     case TextureFormat::ASTC_2D_4X4: | ||||
|     case TextureFormat::ASTC_2D_5X4: | ||||
|     case TextureFormat::ASTC_2D_8X8: | ||||
|     case TextureFormat::ASTC_2D_8X5: | ||||
|     case TextureFormat::A8R8G8B8: | ||||
|     case TextureFormat::A2B10G10R10: | ||||
|     case TextureFormat::BF10GF11RF11: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bunnei
					bunnei