@@ -197,9 +197,12 @@ uint32_t displayio_colorconverter_convert_pixel(displayio_colorspace_t colorspac
197
197
pixel = __builtin_bswap16 (pixel );
198
198
MP_FALLTHROUGH ;
199
199
case DISPLAYIO_COLORSPACE_RGB555 : {
200
- uint32_t r8 = (pixel >> 10 ) << 3 ;
201
- uint32_t g8 = ((pixel >> 5 ) << 3 ) & 0xff ;
202
- uint32_t b8 = (pixel << 3 ) & 0xff ;
200
+ uint32_t r8 = (pixel >> 10 ) & 0x1f ;
201
+ uint32_t g8 = (pixel >> 5 ) & 0x1f ;
202
+ uint32_t b8 = pixel & 0x1f ;
203
+ r8 = (r8 << 3 ) | ((r8 >> 2 ) & 0b111 );
204
+ g8 = (g8 << 3 ) | ((g8 >> 2 ) & 0b111 );
205
+ b8 = (b8 << 3 ) | ((b8 >> 2 ) & 0b111 );
203
206
pixel = (r8 << 16 ) | (g8 << 8 ) | b8 ;
204
207
}
205
208
break ;
@@ -219,9 +222,12 @@ uint32_t displayio_colorconverter_convert_pixel(displayio_colorspace_t colorspac
219
222
pixel = __builtin_bswap16 (pixel );
220
223
MP_FALLTHROUGH ;
221
224
case DISPLAYIO_COLORSPACE_BGR555 : {
222
- uint32_t b8 = (pixel >> 10 ) << 3 ;
223
- uint32_t g8 = ((pixel >> 5 ) << 3 ) & 0xff ;
224
- uint32_t r8 = (pixel << 3 ) & 0xff ;
225
+ uint32_t b8 = (pixel >> 10 ) & 0x1f ;
226
+ uint32_t g8 = (pixel >> 5 ) & 0x1f ;
227
+ uint32_t r8 = pixel & 0x1f ;
228
+ r8 = (r8 << 3 ) | ((r8 >> 2 ) & 0b111 );
229
+ g8 = (g8 << 3 ) | ((g8 >> 2 ) & 0b111 );
230
+ b8 = (b8 << 3 ) | ((b8 >> 2 ) & 0b111 );
225
231
pixel = (r8 << 16 ) | (g8 << 8 ) | b8 ;
226
232
}
227
233
break ;
0 commit comments