GPU/SW: Use new 5-to-8 converters for RGBA8 display
This commit is contained in:
@ -115,30 +115,16 @@ ALWAYS_INLINE u16 VRAM16ToOutput<HostDisplayPixelFormat::RGB565, u16>(u16 value)
|
||||
template<>
|
||||
ALWAYS_INLINE u32 VRAM16ToOutput<HostDisplayPixelFormat::RGBA8, u32>(u16 value)
|
||||
{
|
||||
u8 r = Truncate8(value & 31);
|
||||
u8 g = Truncate8((value >> 5) & 31);
|
||||
u8 b = Truncate8((value >> 10) & 31);
|
||||
|
||||
// 00012345 -> 1234545
|
||||
b = (b << 3) | (b & 0b111);
|
||||
g = (g << 3) | (g & 0b111);
|
||||
r = (r << 3) | (r & 0b111);
|
||||
|
||||
return ZeroExtend32(r) | (ZeroExtend32(g) << 8) | (ZeroExtend32(b) << 16) | (0xFF000000u);
|
||||
return VRAMRGBA5551ToRGBA8888(value);
|
||||
}
|
||||
|
||||
template<>
|
||||
ALWAYS_INLINE u32 VRAM16ToOutput<HostDisplayPixelFormat::BGRA8, u32>(u16 value)
|
||||
{
|
||||
u8 r = Truncate8(value & 31);
|
||||
u8 g = Truncate8((value >> 5) & 31);
|
||||
u8 b = Truncate8((value >> 10) & 31);
|
||||
|
||||
// 00012345 -> 1234545
|
||||
b = (b << 3) | (b & 0b111);
|
||||
g = (g << 3) | (g & 0b111);
|
||||
r = (r << 3) | (r & 0b111);
|
||||
|
||||
const u32 value32 = ZeroExtend32(value);
|
||||
const u32 r = VRAMConvert5To8(value32 & 31u);
|
||||
const u32 g = VRAMConvert5To8((value32 >> 5) & 31u);
|
||||
const u32 b = VRAMConvert5To8((value32 >> 10) & 31u);
|
||||
return ZeroExtend32(b) | (ZeroExtend32(g) << 8) | (ZeroExtend32(r) << 16) | (0xFF000000u);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user