diff --git a/src/util/d3d_common.cpp b/src/util/d3d_common.cpp index 54359d85b..269ebb482 100644 --- a/src/util/d3d_common.cpp +++ b/src/util/d3d_common.cpp @@ -831,6 +831,7 @@ static constexpr std::array(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 diff --git a/src/util/gpu_texture.cpp b/src/util/gpu_texture.cpp index 99f5623fc..26cd75161 100644 --- a/src/util/gpu_texture.cpp +++ b/src/util/gpu_texture.cpp @@ -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 diff --git a/src/util/gpu_texture.h b/src/util/gpu_texture.h index 40e4be872..b36dbc7e0 100644 --- a/src/util/gpu_texture.h +++ b/src/util/gpu_texture.h @@ -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 diff --git a/src/util/metal_device.mm b/src/util/metal_device.mm index 7940be90e..e8d0dea6e 100644 --- a/src/util/metal_device.mm +++ b/src/util/metal_device.mm @@ -72,6 +72,7 @@ static constexpr std::array(GPUTexture::Format: MTLPixelFormatRGBA16Float, // RGBA16F MTLPixelFormatRGBA32Float, // RGBA32F MTLPixelFormatBGR10A2Unorm, // RGB10A2 + MTLPixelFormatRGBA8Unorm_sRGB, // SRGBA8 MTLPixelFormatBC1_RGBA, // BC1 MTLPixelFormatBC2_RGBA, // BC2 MTLPixelFormatBC3_RGBA, // BC3 diff --git a/src/util/opengl_texture.cpp b/src/util/opengl_texture.cpp index 45e837352..aa5adfd0c 100644 --- a/src/util/opengl_texture.cpp +++ b/src/util/opengl_texture.cpp @@ -59,6 +59,7 @@ const std::tuple& 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& 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 diff --git a/src/util/vulkan_device.cpp b/src/util/vulkan_device.cpp index 4cce2627e..40aeb4957 100644 --- a/src/util/vulkan_device.cpp +++ b/src/util/vulkan_device.cpp @@ -103,6 +103,7 @@ const std::array(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