I would like to better understand the programatic behaviour of DRV_frameCopy() & DRV_displaySwitchBuf(), and have the following specific questions:
1) Is DRV_frameCopy() blocking, or does it initiate the DMA copy and then return control to the calling thread, leaving the copy to happen in the background?
2) If DRV_frameCopy() is non-blocking, how is the completion of the DMA synchronized to DRV_displaySwitchBuf()?
3) Can the completion of DRV_frameCopy() be determined through an API/flag setting?
4) A call to DRV_displaySwitchBuf() seems to act as an enqueueing command, meaning 'I am copying to this frame'; it does not seem to mean 'display this frame now'. Is this correct?
5) I must assume that DRV_displaySwitchBuf() is internally synchronized to the display timing, such that the switch of frames does not happen part-way through the output of a frame to the screen. Please can you confirm this?
6) When DRV_displaySwitchBuf() returns, it modifies the bufId passed to it to signify 'this frame has been displayed, you can re-use the buffer'. Is this correct? Is the buffer immediately free when DRV_displaySwitchBuf() has returned, or is it in the process of being output to screen?
7) What is the blocking behaviour of DRV_displaySwitchBuf()? Is it always non-blocking, or can it block in any circumstance?
If you were able to make the source code for DRV_frameCopy() & DRV_displaySwitchBuf() available, it may help me to get to the bottom of these questions by myself.
Regards
Dave