From 02c1eb4be35559c127368d1419ebb79e9f23f3c3 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 5 Sep 2023 10:12:15 +1000 Subject: Tweak display DMA buffer size --- src/drivers/display.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/drivers/display.cpp') diff --git a/src/drivers/display.cpp b/src/drivers/display.cpp index 0664638b..7ab7b3e8 100644 --- a/src/drivers/display.cpp +++ b/src/drivers/display.cpp @@ -14,6 +14,7 @@ #include "assert.h" #include "driver/gpio.h" #include "driver/ledc.h" +#include "driver/spi_common.h" #include "driver/spi_master.h" #include "esp_attr.h" #include "esp_err.h" @@ -47,16 +48,16 @@ static const gpio_num_t kDisplayCs = GPIO_NUM_22; /* * The size of each of our two display buffers. This is fundamentally a balance * between performance and memory usage. LVGL docs recommend a buffer 1/10th the - * size of the screen is the best tradeoff. + * size of the screen is the best tradeoff, but we instead just use the max DMA + * buffer size. * We use two buffers so that one can be flushed to the screen at the same time * as the other is being drawn. */ -static const int kDisplayBufferSize = (kDisplayWidth * kDisplayHeight) / 10; +static const int kDisplayBufferSize = SPI_MAX_DMA_LEN; // Allocate both buffers in static memory to ensure that they're in DRAM, with // minimal fragmentation. We most cases we always need these buffers anyway, so // it's not a memory hit we can avoid. -// Note: 128 * 160 / 10 * 2 bpp * 2 buffers = 8 KiB DMA_ATTR static lv_color_t sBuffer1[kDisplayBufferSize]; DMA_ATTR static lv_color_t sBuffer2[kDisplayBufferSize]; -- cgit v1.2.3