mirror of
https://github.com/stenzek/duckstation.git
synced 2026-02-14 02:14:35 +00:00
GPUDevice: Add SRGBA8 texture format
This commit is contained in:
@@ -831,6 +831,7 @@ static constexpr std::array<D3DCommon::DXGIFormatMapping, static_cast<int>(GPUTe
|
||||
{DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_R16G16B16A16_FLOAT, DXGI_FORMAT_UNKNOWN }, // RGBA16F
|
||||
{DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_R32G32B32A32_FLOAT, DXGI_FORMAT_UNKNOWN }, // RGBA32F
|
||||
{DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_UNKNOWN }, // RGB10A2
|
||||
{DXGI_FORMAT_R8G8B8A8_UNORM_SRGB,DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB, DXGI_FORMAT_UNKNOWN }, // SRGBA8
|
||||
{DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BC1
|
||||
{DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BC2
|
||||
{DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BC3
|
||||
|
||||
@@ -52,6 +52,7 @@ const char* GPUTexture::GetFormatName(Format format)
|
||||
"RGBA16F", // RGBA16F
|
||||
"RGBA32F", // RGBA32F
|
||||
"RGB10A2", // RGB10A2
|
||||
"SRGBA8", // SRGBA8
|
||||
"BC1", // BC1
|
||||
"BC2", // BC2
|
||||
"BC3", // BC3
|
||||
@@ -194,6 +195,7 @@ ImageFormat GPUTexture::GetImageFormatForTextureFormat(Format format)
|
||||
ImageFormat::None, // RGBA16F
|
||||
ImageFormat::None, // RGBA32F
|
||||
ImageFormat::None, // RGB10A2
|
||||
ImageFormat::None, // SRGBA8
|
||||
ImageFormat::BC1, // BC1
|
||||
ImageFormat::BC2, // BC2
|
||||
ImageFormat::BC3, // BC3
|
||||
@@ -277,6 +279,7 @@ u32 GPUTexture::GetPixelSize(GPUTexture::Format format)
|
||||
8, // RGBA16F
|
||||
16, // RGBA32F
|
||||
4, // RGB10A2
|
||||
4, // SRGBA8
|
||||
8, // BC1 - 16 pixels in 64 bits
|
||||
16, // BC2 - 16 pixels in 128 bits
|
||||
16, // BC3 - 16 pixels in 128 bits
|
||||
|
||||
@@ -65,6 +65,7 @@ public:
|
||||
RGBA16F,
|
||||
RGBA32F,
|
||||
RGB10A2,
|
||||
SRGBA8,
|
||||
BC1, ///< BC1, aka DXT1 compressed texture
|
||||
BC2, ///< BC2, aka DXT2/3 compressed texture
|
||||
BC3, ///< BC3, aka DXT4/5 compressed texture
|
||||
|
||||
@@ -72,6 +72,7 @@ static constexpr std::array<MTLPixelFormat, static_cast<u32>(GPUTexture::Format:
|
||||
MTLPixelFormatRGBA16Float, // RGBA16F
|
||||
MTLPixelFormatRGBA32Float, // RGBA32F
|
||||
MTLPixelFormatBGR10A2Unorm, // RGB10A2
|
||||
MTLPixelFormatRGBA8Unorm_sRGB, // SRGBA8
|
||||
MTLPixelFormatBC1_RGBA, // BC1
|
||||
MTLPixelFormatBC2_RGBA, // BC2
|
||||
MTLPixelFormatBC3_RGBA, // BC3
|
||||
|
||||
@@ -59,6 +59,7 @@ const std::tuple<GLenum, GLenum, GLenum>& OpenGLTexture::GetPixelFormatMapping(G
|
||||
{GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT}, // RGBA16F
|
||||
{GL_RGBA32F, GL_RGBA, GL_FLOAT}, // RGBA32F
|
||||
{GL_RGB10_A2, GL_BGRA, GL_UNSIGNED_INT_2_10_10_10_REV}, // RGB10A2
|
||||
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE}, // SRGBA8
|
||||
{GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, GL_UNSIGNED_BYTE}, // BC1
|
||||
{GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_UNSIGNED_BYTE}, // BC2
|
||||
{GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_UNSIGNED_BYTE}, // BC3
|
||||
@@ -94,6 +95,7 @@ const std::tuple<GLenum, GLenum, GLenum>& OpenGLTexture::GetPixelFormatMapping(G
|
||||
{GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT}, // RGBA16F
|
||||
{GL_RGBA32F, GL_RGBA, GL_FLOAT}, // RGBA32F
|
||||
{GL_RGB10_A2, GL_BGRA, GL_UNSIGNED_INT_2_10_10_10_REV}, // RGB10A2
|
||||
{GL_SRGB8_ALPHA8, GL_RGBA, GL_UNSIGNED_BYTE}, // SRGBA8
|
||||
{GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, GL_UNSIGNED_BYTE}, // BC1
|
||||
{GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_UNSIGNED_BYTE}, // BC2
|
||||
{GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_UNSIGNED_BYTE}, // BC3
|
||||
|
||||
@@ -103,6 +103,7 @@ const std::array<VkFormat, static_cast<u32>(GPUTexture::Format::MaxCount)> Vulka
|
||||
VK_FORMAT_R16G16B16A16_SFLOAT, // RGBA16F
|
||||
VK_FORMAT_R32G32B32A32_SFLOAT, // RGBA32F
|
||||
VK_FORMAT_A2R10G10B10_UNORM_PACK32, // RGB10A2
|
||||
VK_FORMAT_R8G8B8A8_SRGB, // SRGBA8
|
||||
VK_FORMAT_BC1_RGBA_UNORM_BLOCK, // BC1
|
||||
VK_FORMAT_BC2_UNORM_BLOCK, // BC2
|
||||
VK_FORMAT_BC3_UNORM_BLOCK, // BC3
|
||||
|
||||
Reference in New Issue
Block a user