diff options
Diffstat (limited to 'firmware/export')
-rw-r--r-- | firmware/export/lcd-remote.h | 6 | ||||
-rw-r--r-- | firmware/export/lcd.h | 14 |
2 files changed, 10 insertions, 10 deletions
diff --git a/firmware/export/lcd-remote.h b/firmware/export/lcd-remote.h index 030b01c736..93ca1fac7e 100644 --- a/firmware/export/lcd-remote.h +++ b/firmware/export/lcd-remote.h | |||
@@ -63,13 +63,13 @@ | |||
63 | #define LCD_REMOTE_STRIDE(w, h) (h) | 63 | #define LCD_REMOTE_STRIDE(w, h) (h) |
64 | #define LCD_REMOTE_FBSTRIDE(w, h) ((h+7)/8) | 64 | #define LCD_REMOTE_FBSTRIDE(w, h) ((h+7)/8) |
65 | #define LCD_REMOTE_FBHEIGHT LCD_REMOTE_FBSTRIDE(LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT) | 65 | #define LCD_REMOTE_FBHEIGHT LCD_REMOTE_FBSTRIDE(LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT) |
66 | #define LCD_REMOTE_NBELEMS(w, h) (((w*LCD_REMOTE_FBSTRIDE(w, h)) + h) / sizeof(fb_remote_data)) | 66 | #define LCD_REMOTE_NBELEMS(w, h) ((((w-1)*LCD_REMOTE_FBSTRIDE(w, h)) + h) / sizeof(fb_remote_data)) |
67 | #elif LCD_REMOTE_DEPTH == 2 | 67 | #elif LCD_REMOTE_DEPTH == 2 |
68 | #if LCD_REMOTE_PIXELFORMAT == VERTICAL_INTERLEAVED | 68 | #if LCD_REMOTE_PIXELFORMAT == VERTICAL_INTERLEAVED |
69 | #define LCD_REMOTE_STRIDE(w, h) (h) | 69 | #define LCD_REMOTE_STRIDE(w, h) (h) |
70 | #define LCD_REMOTE_FBSTRIDE(w, h) ((h+7)/8) | 70 | #define LCD_REMOTE_FBSTRIDE(w, h) ((h+7)/8) |
71 | #define LCD_REMOTE_FBHEIGHT LCD_REMOTE_FBSTRIDE(LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT) | 71 | #define LCD_REMOTE_FBHEIGHT LCD_REMOTE_FBSTRIDE(LCD_REMOTE_WIDTH, LCD_REMOTE_HEIGHT) |
72 | #define LCD_REMOTE_NBELEMS(w, h) (((w*LCD_REMOTE_FBSTRIDE(w, h)) + h) / sizeof(fb_remote_data)) | 72 | #define LCD_REMOTE_NBELEMS(w, h) ((((w-1)*LCD_REMOTE_FBSTRIDE(w, h)) + h) / sizeof(fb_remote_data)) |
73 | #endif | 73 | #endif |
74 | #endif /* LCD_REMOTE_DEPTH */ | 74 | #endif /* LCD_REMOTE_DEPTH */ |
75 | 75 | ||
@@ -84,7 +84,7 @@ | |||
84 | 84 | ||
85 | #ifndef LCD_REMOTE_NBELEMS | 85 | #ifndef LCD_REMOTE_NBELEMS |
86 | /* At this time (2020) known remote screens only have vertical stride */ | 86 | /* At this time (2020) known remote screens only have vertical stride */ |
87 | #define LCD_REMOTE_NBELEMS(w, h) ((w*STRIDE_REMOTE(w, h)) + h) / sizeof(fb_remote_data)) | 87 | #define LCD_REMOTE_NBELEMS(w, h) (((w-1)*STRIDE_REMOTE(w, h)) + h) / sizeof(fb_remote_data)) |
88 | #define LCD_REMOTE_STRIDE(w, h) STRIDE_REMOTE(w, h) | 88 | #define LCD_REMOTE_STRIDE(w, h) STRIDE_REMOTE(w, h) |
89 | #define LCD_REMOTE_FBSTRIDE(w, h) STRIDE_REMOTE(w, h) | 89 | #define LCD_REMOTE_FBSTRIDE(w, h) STRIDE_REMOTE(w, h) |
90 | #endif | 90 | #endif |
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index f5a3b3f1f4..ffaf1a63d2 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h | |||
@@ -456,26 +456,26 @@ typedef void lcd_blockfunc_type(fb_data *address, unsigned mask, unsigned bits); | |||
456 | #if LCD_PIXELFORMAT == HORIZONTAL_PACKING | 456 | #if LCD_PIXELFORMAT == HORIZONTAL_PACKING |
457 | #define LCD_FBSTRIDE(w, h) ((w+7)/8) | 457 | #define LCD_FBSTRIDE(w, h) ((w+7)/8) |
458 | #define LCD_FBWIDTH LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) | 458 | #define LCD_FBWIDTH LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) |
459 | #define LCD_NBELEMS(w, h) (((h*LCD_FBSTRIDE(w, h)) + w) / sizeof(fb_data)) | 459 | #define LCD_NBELEMS(w, h) ((((h-1)*LCD_FBSTRIDE(w, h)) + w) / sizeof(fb_data)) |
460 | #else /* LCD_PIXELFORMAT == VERTICAL_PACKING */ | 460 | #else /* LCD_PIXELFORMAT == VERTICAL_PACKING */ |
461 | #define LCD_FBSTRIDE(w, h) ((h+7)/8) | 461 | #define LCD_FBSTRIDE(w, h) ((h+7)/8) |
462 | #define LCD_FBHEIGHT LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) | 462 | #define LCD_FBHEIGHT LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) |
463 | #define LCD_NBELEMS(w, h) (((w*LCD_FBSTRIDE(w, h)) + h) / sizeof(fb_data)) | 463 | #define LCD_NBELEMS(w, h) ((((w-1)*LCD_FBSTRIDE(w, h)) + h) / sizeof(fb_data)) |
464 | #endif /* LCD_PIXELFORMAT */ | 464 | #endif /* LCD_PIXELFORMAT */ |
465 | #elif LCD_DEPTH == 2 | 465 | #elif LCD_DEPTH == 2 |
466 | #if LCD_PIXELFORMAT == HORIZONTAL_PACKING | 466 | #if LCD_PIXELFORMAT == HORIZONTAL_PACKING |
467 | #define LCD_FBSTRIDE(w, h) ((w+3)>>2) | 467 | #define LCD_FBSTRIDE(w, h) ((w+3)>>2) |
468 | #define LCD_NATIVE_STRIDE(s) LCD_FBSTRIDE(s, s) | 468 | #define LCD_NATIVE_STRIDE(s) LCD_FBSTRIDE(s, s) |
469 | #define LCD_FBWIDTH LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) | 469 | #define LCD_FBWIDTH LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) |
470 | #define LCD_NBELEMS(w, h) (((h*LCD_FBSTRIDE(w, h)) + w) / sizeof(fb_data)) | 470 | #define LCD_NBELEMS(w, h) ((((h-1)*LCD_FBSTRIDE(w, h)) + w) / sizeof(fb_data)) |
471 | #elif LCD_PIXELFORMAT == VERTICAL_PACKING | 471 | #elif LCD_PIXELFORMAT == VERTICAL_PACKING |
472 | #define LCD_FBSTRIDE(w, h) ((h+3)/4) | 472 | #define LCD_FBSTRIDE(w, h) ((h+3)/4) |
473 | #define LCD_FBHEIGHT LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) | 473 | #define LCD_FBHEIGHT LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) |
474 | #define LCD_NBELEMS(w, h) (((w*LCD_FBSTRIDE(w, h)) + h) / sizeof(fb_data)) | 474 | #define LCD_NBELEMS(w, h) ((((w-1)*LCD_FBSTRIDE(w, h)) + h) / sizeof(fb_data)) |
475 | #elif LCD_PIXELFORMAT == VERTICAL_INTERLEAVED | 475 | #elif LCD_PIXELFORMAT == VERTICAL_INTERLEAVED |
476 | #define LCD_FBSTRIDE(w, h) ((h+7)/8) | 476 | #define LCD_FBSTRIDE(w, h) ((h+7)/8) |
477 | #define LCD_FBHEIGHT LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) | 477 | #define LCD_FBHEIGHT LCD_FBSTRIDE(LCD_WIDTH, LCD_HEIGHT) |
478 | #define LCD_NBELEMS(w, h) (((w*LCD_FBSTRIDE(w, h)) + h) / sizeof(fb_data)) | 478 | #define LCD_NBELEMS(w, h) ((((w-1)*LCD_FBSTRIDE(w, h)) + h) / sizeof(fb_data)) |
479 | #endif /* LCD_PIXELFORMAT */ | 479 | #endif /* LCD_PIXELFORMAT */ |
480 | #endif /* LCD_DEPTH */ | 480 | #endif /* LCD_DEPTH */ |
481 | /* Set defaults if not defined different yet. The defaults apply to both | 481 | /* Set defaults if not defined different yet. The defaults apply to both |
@@ -494,9 +494,9 @@ typedef void lcd_blockfunc_type(fb_data *address, unsigned mask, unsigned bits); | |||
494 | 494 | ||
495 | #ifndef LCD_NBELEMS | 495 | #ifndef LCD_NBELEMS |
496 | #if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE | 496 | #if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE |
497 | #define LCD_NBELEMS(w, h) ((w*STRIDE_MAIN(w, h)) + h) | 497 | #define LCD_NBELEMS(w, h) (((w-1)*STRIDE_MAIN(w, h)) + h) |
498 | #else | 498 | #else |
499 | #define LCD_NBELEMS(w, h) ((h*STRIDE_MAIN(w, h)) + w) | 499 | #define LCD_NBELEMS(w, h) (((h-1)*STRIDE_MAIN(w, h)) + w) |
500 | #endif | 500 | #endif |
501 | #define LCD_FBSTRIDE(w, h) STRIDE_MAIN(w, h) | 501 | #define LCD_FBSTRIDE(w, h) STRIDE_MAIN(w, h) |
502 | #endif | 502 | #endif |