Fix RGB565 for certain resolutions
This commit is contained in:
parent
58dba1f0bf
commit
d67479563f
1 changed files with 25 additions and 8 deletions
|
|
@ -160,17 +160,34 @@ void __scratch_x("display") DVHSTX::gfx_dma_handler() {
|
||||||
|
|
||||||
if (line_bytes_per_pixel == 2) {
|
if (line_bytes_per_pixel == 2) {
|
||||||
uint16_t* src_ptr = (uint16_t*)&frame_buffer_display[y * 2 * (timing_mode->h_active_pixels >> h_repeat_shift)];
|
uint16_t* src_ptr = (uint16_t*)&frame_buffer_display[y * 2 * (timing_mode->h_active_pixels >> h_repeat_shift)];
|
||||||
for (int i = 0; i < timing_mode->h_active_pixels >> 1; i += 2) {
|
if (h_repeat_shift == 2) {
|
||||||
uint32_t val = (uint32_t)(*src_ptr++) * 0x10001;
|
for (int i = 0; i < timing_mode->h_active_pixels >> 1; i += 2) {
|
||||||
*dst_ptr++ = val;
|
uint32_t val = (uint32_t)(*src_ptr++) * 0x10001;
|
||||||
*dst_ptr++ = val;
|
*dst_ptr++ = val;
|
||||||
|
*dst_ptr++ = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < timing_mode->h_active_pixels >> 1; ++i) {
|
||||||
|
uint32_t val = (uint32_t)(*src_ptr++) * 0x10001;
|
||||||
|
*dst_ptr++ = val;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (line_bytes_per_pixel == 1) {
|
else if (line_bytes_per_pixel == 1) {
|
||||||
uint8_t* src_ptr = &frame_buffer_display[y * (timing_mode->h_active_pixels >> h_repeat_shift)];
|
uint8_t* src_ptr = &frame_buffer_display[y * (timing_mode->h_active_pixels >> h_repeat_shift)];
|
||||||
for (int i = 0; i < timing_mode->h_active_pixels >> 2; ++i) {
|
if (h_repeat_shift == 2) {
|
||||||
uint32_t val = (uint32_t)(*src_ptr++) * 0x01010101;
|
for (int i = 0; i < timing_mode->h_active_pixels >> 2; ++i) {
|
||||||
*dst_ptr++ = val;
|
uint32_t val = (uint32_t)(*src_ptr++) * 0x01010101;
|
||||||
|
*dst_ptr++ = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (int i = 0; i < timing_mode->h_active_pixels >> 2; ++i) {
|
||||||
|
uint32_t val = ((uint32_t)(*src_ptr++) * 0x0101);
|
||||||
|
val |= ((uint32_t)(*src_ptr++) * 0x01010000);
|
||||||
|
*dst_ptr++ = val;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (line_bytes_per_pixel == 4) {
|
else if (line_bytes_per_pixel == 4) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue