I would like to use my gpu to perform transform large sets of vertices that are supposed to be read on the cpu in the same frame the compute commands are issued. Problem is that in OpenGL frames are rendered asynchronously and I might have to wait for floating frames to be rendered before I get my result.
I haven’t followed OpenGL development intensively in the last years. Is there a mechanism in the meantime that allows cpu synchronous computation while asynchronous rendering work is done?
If you want the vertices transformed synchronous with CPU, just transform the vertices on the CPU. That satisfies your requirements.
If you absolutely need the GPU to perform the vertex transforms for some reason, use Transform Feedback and capture the results in a Persistently-mapped Buffer Object. Then the CPU is ready to access those results as soon as the transform feedback operation completes. However, you’re forcing the CPU and GPU to run in lockstep, so you’re forgoing some of the potential advantages of having a separate set of processors performing this work.
Yeah, I wanted to move that work to the GPU because I need to transform thousands of float64 vertices per frame and this causes a two digit cpu range on my embedded target. Therefore I hoped that there was some possibility to bypass the usual way the gpu processes the work for some synchronous computing.