cancel
Showing results for 
Search instead for 
Did you mean: 

TouchGFX 4.21.0 rendering problem

CRich.4
Associate III

since i Updated to TouchGFX 4.21.0 (from 4.20.0) the LCD shows a visual artifact

it happens when rendering images in the L8_565 format (plain RBG_565 works) or text

i'm using a STM32 nucleo board with a STM32H7A3 processor

when i generated the code with CubeMX 6.6.1 and TouchGFX 4.20.0 it worked without artifacts

but after i updated to CubeMX 6.7.0 and TouchGFX 4.21.0 it started showing these artifacts:

example 1: this full screen image should have a solid yellow background, it is revealed using a wipe transition from black to the image. The wipe transition leaves black artifacts on the right edge (transition goes from left to right)

0693W00000Y85hHQAR.jpg 

Example 2: the text on the last menu tile is sometimes cut in half, it should say "Sprache"

0693W00000Y85hvQAB.jpg 

-Clemens

13 REPLIES 13

Hello CRich.4,

If you don't need DCache that's fine to disable it, but having DCache shouldn't cause the issue I would expect.

And concerning the SCB_CleanInvalidateDCache funtion, there's no reason to call SCB_CleanInvalidateDCache() function in flushFrameBuffer(), we changed that because it was a mistake in first place. The SCB_CleanInvalidateDCache() function is useful only if we do software and hardware rendering, and it should be called only when we need to synchronize the data from the cache and RAM. We have on our support website an article talking about this subject, maybe you'll be interested to have a look at it.

/Osman

Osman SOYKURT
ST Software Developer | TouchGFX

thanks for linking the article

the statemachine described there seems to be not working correctly.

The call to invalidate the cache in flushFrameBuffer might have masked that problem in earlier versions (4.20 and earlier).

In the TouchGFX versions since 4.21 the UI shows the artifacts mentioned above, if DCache is enabled.

our current workaround is to use the MPU to set the RAM to non-cacheable

EDIT: i think the problem occurs, because the DCache is set to write-back by default, but should be configured as write-through since the LTDC is always directly reading from RAM and might miss updated data that the CPU rendered into the DCache.

NGune.1
Associate II

Hi,

I have the same rendering problem with STM32H743ZIT6 and TouchGFX v4.22.1. I had the same problem with 4.21.4, as well. I am using a 480x272 display in RGB565 configuration. It doesn't matter if it is a plaint text or it is a label on a button, issue exists. In addition, the problem appears in different locations on the screen sporadically.  

Disabling DCache solves the rendering issue but brings other problems with LWIP. So, it may be, I think, a workaround for the ones who don't need LWIP.

 

 IMG20231120202848m.jpgIMG20231120202914m.jpg

 

 

 

 

 

 

 

 

 

 

hi @NGune.1 

You could try the following workaround:

1. put the frame buffer into a separate memory region

2. define a matching region in the MPU that disables the DCache for only that region

This will let you keep the DCache for other data (like the data used by LWIP) and still avoid rendering issues