Sorry, I was interrupted and didn't get back to this. Yes, I do have a question about it.
If we select "Single Buffer" in Framebuffer Strategy in the TouchGFX section of CubeMX, do we still need to manually register the TaskDelayFunction() and call setFrameRefreshStrategy(REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL) ?
I am using Stm32CubeIDE v 1.17 and TouchGFX v4.17.
I am seeing some performance issues on one of my designs that is using a Single buffer because the TFT has a command interface instead of using the TFT.
One of the things I am seeing is that the method TouchGFXHAL::flushFrameBuffer() is called more than it needs to be per frame, which is causing us issues. I found that if AbstractShape::updateAngle() is called often, the following code is causing more flushes of the frame buffer than it should be:
Rect rectBefore = getMinimalRect();
invalidateRect(rectBefore);
shapeAngle = angleQ5;
updateAbstractShapeCache();
Rect rectAfter = getMinimalRect();
invalidateRect(rectAfter);
It was my understanding that invalidates are queued up and draws and flushes of the framebuffer would only happen on a tick. Is this not the case?
I am seeing multiple flushes per tick (as in sometimes 3). This causes adverse screen rendering (tearing on the screen).