mirror of
https://github.com/love2d/love.git
synced 2026-08-16 00:02:12 +02:00
Improve detection of sRGB texture formats in dds files (doesn't currently affect any exposed API).
This commit is contained in:
@@ -82,19 +82,25 @@ static Format parseDX10Format(DXGIFormat fmt)
|
||||
{
|
||||
case DXGI_FORMAT_BC1_TYPELESS:
|
||||
case DXGI_FORMAT_BC1_UNORM:
|
||||
case DXGI_FORMAT_BC1_UNORM_SRGB:
|
||||
f = FORMAT_DXT1;
|
||||
break;
|
||||
case DXGI_FORMAT_BC1_UNORM_SRGB:
|
||||
f = FORMAT_DXT1srgb;
|
||||
break;
|
||||
case DXGI_FORMAT_BC2_TYPELESS:
|
||||
case DXGI_FORMAT_BC2_UNORM:
|
||||
case DXGI_FORMAT_BC2_UNORM_SRGB:
|
||||
f = FORMAT_DXT3;
|
||||
break;
|
||||
case DXGI_FORMAT_BC2_UNORM_SRGB:
|
||||
f = FORMAT_DXT3srgb;
|
||||
break;
|
||||
case DXGI_FORMAT_BC3_TYPELESS:
|
||||
case DXGI_FORMAT_BC3_UNORM:
|
||||
case DXGI_FORMAT_BC3_UNORM_SRGB:
|
||||
f = FORMAT_DXT5;
|
||||
break;
|
||||
case DXGI_FORMAT_BC3_UNORM_SRGB:
|
||||
f = FORMAT_DXT5srgb;
|
||||
break;
|
||||
case DXGI_FORMAT_BC4_TYPELESS:
|
||||
case DXGI_FORMAT_BC4_UNORM:
|
||||
f = FORMAT_BC4;
|
||||
@@ -126,7 +132,7 @@ static Format parseDX10Format(DXGIFormat fmt)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
@@ -147,7 +153,6 @@ bool isDDS(const void *data, size_t dataSize)
|
||||
|
||||
DDSHeader *header = (DDSHeader *) &readData[offset];
|
||||
|
||||
|
||||
// Verify header to validate DDS data.
|
||||
if (header->size != sizeof(DDSHeader) || header->format.size != sizeof(DDSPixelFormat))
|
||||
return false;
|
||||
@@ -242,12 +247,15 @@ size_t Parser::parseImageSize(Format fmt, int width, int height) const
|
||||
switch (fmt)
|
||||
{
|
||||
case FORMAT_DXT1:
|
||||
case FORMAT_DXT1srgb:
|
||||
case FORMAT_BC4:
|
||||
case FORMAT_BC4s:
|
||||
numBytesPerBlock = 8;
|
||||
break;
|
||||
case FORMAT_DXT3:
|
||||
case FORMAT_DXT3srgb:
|
||||
case FORMAT_DXT5:
|
||||
case FORMAT_DXT5srgb:
|
||||
case FORMAT_BC5s:
|
||||
case FORMAT_BC5:
|
||||
case FORMAT_BC6H:
|
||||
|
||||
Reference in New Issue
Block a user