Switch to the new functions.

This commit is contained in:
Henrik Rydgård committed 2024-06-04 10:28:13 +02:00
1 parent f2b4ad04c6
commit 5b14cf9a3d
2 files changed
+31 -31

No files matched your search

+14 -11
View File
@@ -69,20 +69,23 @@ inline u32 RGBA4444ToRGBA8888(u16 src) {
}
inline u32 RGBA5551ToRGBA8888(u16 src) {
u8 r = Convert5To8((src >> 0) & 0x1F);
u8 g = Convert5To8((src >> 5) & 0x1F);
u8 b = Convert5To8((src >> 10) & 0x1F);
u8 a = (src >> 15) & 0x1;
a = (a) ? 0xff : 0;
return (a << 24) | (b << 16) | (g << 8) | r;
u32 dark = ((src & 0x1F) << 3) | ((src & 0x3E0) << 6) | ((src & 0x7C00) << 9);
// Replicate the top 3 upper bits into the missing lower bits.
u32 full = (dark | (dark >> 5) & 0x070707);
if (src >> 15) {
full |= 0xFF000000;
}
return full;
}
inline u32 RGB565ToRGBA8888(u16 src) {
u8 r = Convert5To8((src >> 0) & 0x1F);
u8 g = Convert6To8((src >> 5) & 0x3F);
u8 b = Convert5To8((src >> 11) & 0x1F);
u8 a = 0xFF;
return (a << 24) | (b << 16) | (g << 8) | r;
u32 dark_rb = ((src & 0x1F) << 3) | ((src & 0xF800) << 8);
// Replicate the top 3 upper bits into the missing lower bits.
u32 full_rb = (dark_rb | (dark_rb >> 5) & 0x070007);
// Add in green (6 bits instead of 5).
u32 dark_g = ((src & 0x7E0) << 5);
u32 full_g = dark_g | ((dark_g >> 6) & 0x300);
return full_rb | full_g | 0xFF000000;
}
inline u16 RGBA8888ToRGB565(u32 value) {
+17 -20
View File
@@ -998,24 +998,21 @@ bool TestIniFile() {
return true;
}
inline u32 FastRGBA5551ToRGBA8888(u16 src) {
u32 dark = ((src & 0x1F) << 3) | ((src & 0x3E0) << 6) | ((src & 0x7C00) << 9);
// Replicate the top 3 upper bits into the missing lower bits.
u32 full = (dark | (dark >> 5) & 0x070707);
if (src >> 15) {
full |= 0xFF000000;
}
return full;
inline u32 ReferenceRGBA5551ToRGBA8888(u16 src) {
u8 r = Convert5To8((src >> 0) & 0x1F);
u8 g = Convert5To8((src >> 5) & 0x1F);
u8 b = Convert5To8((src >> 10) & 0x1F);
u8 a = (src >> 15) & 0x1;
a = (a) ? 0xff : 0;
return (a << 24) | (b << 16) | (g << 8) | r;
}
inline u32 FastRGB565ToRGBA8888(u16 src) {
u32 dark_rb = ((src & 0x1F) << 3) | ((src & 0xF800) << 8);
// Replicate the top 3 upper bits into the missing lower bits.
u32 full_rb = (dark_rb | (dark_rb >> 5) & 0x070007);
// Add in green (6 bits instead of 5).
u32 dark_g = ((src & 0x7E0) << 5);
u32 full_g = dark_g | ((dark_g >> 6) & 0x300);
return full_rb | full_g | 0xFF000000;
inline u32 ReferenceRGB565ToRGBA8888(u16 src) {
u8 r = Convert5To8((src >> 0) & 0x1F);
u8 g = Convert6To8((src >> 5) & 0x3F);
u8 b = Convert5To8((src >> 11) & 0x1F);
u8 a = 0xFF;
return (a << 24) | (b << 16) | (g << 8) | r;
}
bool TestColorConv() {
@@ -1023,12 +1020,12 @@ bool TestColorConv() {
for (int i = 0; i < 65536; i++) {
u16 col16 = i;
u32 reference = RGBA5551ToRGBA8888(col16);
u32 value = FastRGBA5551ToRGBA8888(col16);
u32 reference = ReferenceRGBA5551ToRGBA8888(col16);
u32 value = RGBA5551ToRGBA8888(col16);
EXPECT_EQ_INT(reference, value);
reference = RGB565ToRGBA8888(col16);
value = FastRGB565ToRGBA8888(col16);
reference = ReferenceRGB565ToRGBA8888(col16);
value = RGB565ToRGBA8888(col16);
EXPECT_EQ_INT(reference, value);
}