Fix thumbnail generation for eSpecial_R5G6B5 & eSpecial_R5G5B5A1.

This commit is contained in:
Michael Rennie
2017-01-04 12:49:27 +00:00
committed by Baldur Karlsson
parent b088b21757
commit aa5ec25270
+34 -3
View File
@@ -1277,12 +1277,27 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd)
uint32_t stride = fmt.compByteWidth * fmt.compCount;
bool buf1010102 = false;
bool buf565 = false, buf5551 = false;
bool bufBGRA = (fmt.bgraOrder != false);
if(fmt.special && fmt.specialFormat == eSpecial_R10G10B10A2)
if(fmt.special)
{
stride = 4;
buf1010102 = true;
switch(fmt.specialFormat)
{
case eSpecial_R10G10B10A2:
stride = 4;
buf1010102 = true;
break;
case eSpecial_R5G6B5:
stride = 2;
buf565 = true;
break;
case eSpecial_R5G5B5A1:
stride = 2;
buf5551 = true;
break;
default: break;
}
}
byte *dst = thpixels;
@@ -1305,6 +1320,22 @@ bool WrappedVulkan::EndFrameCapture(void *dev, void *wnd)
dst[1] = (byte)(unorm.y * 255.0f);
dst[2] = (byte)(unorm.z * 255.0f);
}
else if(buf565)
{
uint16_t *src565 = (uint16_t *)src;
Vec3f unorm = ConvertFromB5G6R5(*src565);
dst[0] = (byte)(unorm.z * 255.0f);
dst[1] = (byte)(unorm.y * 255.0f);
dst[2] = (byte)(unorm.x * 255.0f);
}
else if(buf5551)
{
uint16_t *src5551 = (uint16_t *)src;
Vec4f unorm = ConvertFromB5G5R5A1(*src5551);
dst[0] = (byte)(unorm.z * 255.0f);
dst[1] = (byte)(unorm.y * 255.0f);
dst[2] = (byte)(unorm.x * 255.0f);
}
else if(bufBGRA)
{
dst[0] = src[2];