2019-09-30 02:26 AM
Reposting here what i wrote in "Known Issues": https://touchgfx.zendesk.com/hc/en-us/articles/207507415
TextArea and ChromART (DMA2D)
Rendering of TextAreas with ChromART (when TextArea is the top most element / last to be drawn) causes a premature unlocking of the framebuffer and subsequently a premature completion/transfer of the current frame to the display.
Once endFrame() is called by TouchGFX all drawing operations, including DMA operations, should already be completed. Due to a breach of contract by TextArea in how to appropriately protect the framebuffer, DMA operations are allowed to continue even after returning from endFrame().
The contract for a widget is to either:
Or to use DMA operations, in which case syncronization of the framebuffer is handled automatically.
TextArea, in 4.10.0, mixes the two procedures which can cause glitches if it is the top most element (last to be drawn) of the current screen. The bug can be fixed by manually guarding endFrame() with the following override of endFrame() (based on F4 HAL). It ensures that endFrame() does not return if ChromART operations are still being processed.
void STM32F4HAL::endFrame()
{
if (dma.isDMARunning())
{
OSWrappers::tryTakeFrameBufferSemaphore();
}
HAL::endFrame();
}
/Martin
2021-06-28 01:58 AM
@Martin KJELDSEN
Could you check the video? You can see some pixels around the TextArea "5" are blinking. These pixels also happen randomly and can be everywhere around the numbers. Is it related to this known issue? I'm using 4.13.0. Is the issue still remained?
https://drive.google.com/file/d/1KbVwsV9UsbBB2MxYsR6UH7YXY0IubCRC/view?usp=sharing
STM32H750 with external flash and SDRAM
TouchGFX version: 4.13.0
CubeIDE version: 1.3.0
display size: 480x272(landscape), but I config the display orientation in portrait in TouchGFX
color depth: 24bits