This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: GPU and asynchronous VX nodes processing

Part Number: TDA4VM
Other Parts Discussed in Thread: TDA2

Hi,

When I was working with TDA2 SoCs in System Link API there was possibility to process buffers asynchronously. It heled to utilize better GPU without GPU-stalling calls like glFinish(). With old Vision SDK it was supported by default as GBM framework and PVR backend implementation hides from you handling of framebuffers with eglSwapBuffer() and you can just get the current buffer by the call gbm_surface_lock_front_buffer(). This call will give you access to recent ready framebuffer. (could be previous frame if GPU has high workload). In the latest PSDK for TDA4 there is no such functionality and in SRV test sample there is explicit glFinish() which affects PVR GPU performance (tiler and renderer works only sequentially without overlapping in pipeline for two subsequent output framebuffers).

Are there any design guides or sample on how to implement similar asynchronous pipeline?

  • Hello Grigory,

    We are aware of the limitation and do intend to implement asynchronous processing to better utilize the GPU. As you guessed this will require some changes to the way GPU and OpenVX display nodes work. And this is because the display is being handled by R5F and not by A72.

    I presume your end goal is to have OpenVX based R5F display node support asynchronous buffer processing so that Tiler and Renderer can run in parallel. Or are you looking for A72 directly interacting with the display using Wayland/GBM.

    Regards

    Hemant

  • Hi Hemant,

    Thank you for the reply.

    Yes, the goal is to utilize TI OVX display node on R5F and have pipeline with parallel Tiler/Renderer parts (without explicit synchronization calls like glFinish()).

    We have one suggestion that it can be done by using GPU outside of TI VX node. At the level of control application (that maintains VX graph) we can use glFence()/glClientWaitSync() in separate threads and submit rendered output buffer to vxGraph with display node when it is ready.

    But I was wondering how can we do that by using only TI VX API. When do you think it could be avaialble as a part of PSDK?

    --

    Grigory

  • Hello Grigory,

    Thank you very much for the suggestion. We will certainly look into this and try it out. We are also looking at VX API and how to handle this in the context of the API.

    Regarding the PSDK, we do not have a date that I can give you yet - but it is being looked into. I will update you as soon as this is integrated.

    If it is okay with you, can we close this E2E ticket with the action on us to work this out in the SDK context?

    Regards

    Hemant