DMA2D: invalidate cache only if enabled
This commit is contained in:
@@ -41,6 +41,7 @@
|
|||||||
/**********************
|
/**********************
|
||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
|
static void invalidate_cache(void);
|
||||||
static void dma2d_wait(void);
|
static void dma2d_wait(void);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
@@ -67,9 +68,8 @@ static DMA2D_HandleTypeDef hdma2d;
|
|||||||
*/
|
*/
|
||||||
void lv_gpu_stm32_dma2d_fill(lv_color_t * buf, lv_coord_t buf_w, lv_color_t color, lv_coord_t fill_w, lv_coord_t fill_h)
|
void lv_gpu_stm32_dma2d_fill(lv_color_t * buf, lv_coord_t buf_w, lv_color_t color, lv_coord_t fill_w, lv_coord_t fill_h)
|
||||||
{
|
{
|
||||||
#if __DCACHE_PRESENT
|
invalidate_cache();
|
||||||
SCB_CleanInvalidateDCache();
|
|
||||||
#endif
|
|
||||||
hdma2d.Instance = DMA2D;
|
hdma2d.Instance = DMA2D;
|
||||||
hdma2d.Init.Mode = DMA2D_R2M;
|
hdma2d.Init.Mode = DMA2D_R2M;
|
||||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_FORMAT;
|
hdma2d.Init.ColorMode = DMA2D_OUTPUT_FORMAT;
|
||||||
@@ -98,9 +98,8 @@ void lv_gpu_stm32_dma2d_fill(lv_color_t * buf, lv_coord_t buf_w, lv_color_t colo
|
|||||||
*/
|
*/
|
||||||
void lv_gpu_stm32_dma2d_fill_mask(lv_color_t * buf, lv_coord_t buf_w, lv_color_t color, const lv_opa_t * mask, lv_opa_t opa, lv_coord_t fill_w, lv_coord_t fill_h)
|
void lv_gpu_stm32_dma2d_fill_mask(lv_color_t * buf, lv_coord_t buf_w, lv_color_t color, const lv_opa_t * mask, lv_opa_t opa, lv_coord_t fill_w, lv_coord_t fill_h)
|
||||||
{
|
{
|
||||||
#if __DCACHE_PRESENT
|
invalidate_cache();
|
||||||
SCB_CleanInvalidateDCache();
|
|
||||||
#endif
|
|
||||||
/* Configure the DMA2D Mode, Color Mode and line output offset */
|
/* Configure the DMA2D Mode, Color Mode and line output offset */
|
||||||
hdma2d.Init.Mode = DMA2D_M2M_BLEND;
|
hdma2d.Init.Mode = DMA2D_M2M_BLEND;
|
||||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_FORMAT;
|
hdma2d.Init.ColorMode = DMA2D_OUTPUT_FORMAT;
|
||||||
@@ -141,9 +140,8 @@ void lv_gpu_stm32_dma2d_fill_mask(lv_color_t * buf, lv_coord_t buf_w, lv_color_t
|
|||||||
*/
|
*/
|
||||||
void lv_gpu_stm32_dma2d_copy(lv_color_t * buf, lv_coord_t buf_w, const lv_color_t * map, lv_coord_t map_w, lv_coord_t copy_w, lv_coord_t copy_h)
|
void lv_gpu_stm32_dma2d_copy(lv_color_t * buf, lv_coord_t buf_w, const lv_color_t * map, lv_coord_t map_w, lv_coord_t copy_w, lv_coord_t copy_h)
|
||||||
{
|
{
|
||||||
#if __DCACHE_PRESENT
|
invalidate_cache();
|
||||||
SCB_CleanInvalidateDCache();
|
|
||||||
#endif
|
|
||||||
hdma2d.Instance = DMA2D;
|
hdma2d.Instance = DMA2D;
|
||||||
hdma2d.Init.Mode = DMA2D_M2M;
|
hdma2d.Init.Mode = DMA2D_M2M;
|
||||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_FORMAT;
|
hdma2d.Init.ColorMode = DMA2D_OUTPUT_FORMAT;
|
||||||
@@ -177,9 +175,8 @@ void lv_gpu_stm32_dma2d_copy(lv_color_t * buf, lv_coord_t buf_w, const lv_color_
|
|||||||
*/
|
*/
|
||||||
void lv_gpu_stm32_dma2d_blend(lv_color_t * buf, lv_coord_t buf_w, const lv_color_t * map, lv_opa_t opa, lv_coord_t map_w, lv_coord_t copy_w, lv_coord_t copy_h)
|
void lv_gpu_stm32_dma2d_blend(lv_color_t * buf, lv_coord_t buf_w, const lv_color_t * map, lv_opa_t opa, lv_coord_t map_w, lv_coord_t copy_w, lv_coord_t copy_h)
|
||||||
{
|
{
|
||||||
#if __DCACHE_PRESENT
|
invalidate_cache();
|
||||||
SCB_CleanInvalidateDCache();
|
|
||||||
#endif
|
|
||||||
hdma2d.Instance = DMA2D;
|
hdma2d.Instance = DMA2D;
|
||||||
hdma2d.Init.Mode = DMA2D_M2M_BLEND;
|
hdma2d.Init.Mode = DMA2D_M2M_BLEND;
|
||||||
hdma2d.Init.ColorMode = DMA2D_OUTPUT_FORMAT;
|
hdma2d.Init.ColorMode = DMA2D_OUTPUT_FORMAT;
|
||||||
@@ -210,6 +207,15 @@ void lv_gpu_stm32_dma2d_blend(lv_color_t * buf, lv_coord_t buf_w, const lv_color
|
|||||||
* STATIC FUNCTIONS
|
* STATIC FUNCTIONS
|
||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
|
static void invalidate_cache(void)
|
||||||
|
{
|
||||||
|
#if __DCACHE_PRESENT
|
||||||
|
if(SCB->CCR & (uint32_t)SCB_CCR_DC_Msk) {
|
||||||
|
SCB_CleanInvalidateDCache();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
static void dma2d_wait(void)
|
static void dma2d_wait(void)
|
||||||
{
|
{
|
||||||
lv_disp_t * disp = lv_refr_get_disp_refreshing();
|
lv_disp_t * disp = lv_refr_get_disp_refreshing();
|
||||||
|
|||||||
Reference in New Issue
Block a user