When I call GetBufferSubData with my Shader Storage Buffer Object there is typically a 4ms delay. Is it possible for my application to do work during that time?
// start GetBufferSubData
// do client/app/CPU work
// (wait if needed)
// read results from GetBufferSubData
Or otherwise use some sort of API to asynchronously start copying buffer data from the GPU?
I was able to get an async readback working using glMapBufferRange
and GL_MAP_PERSISTENT_BIT
. However, when running a compute shader (multiple times back to back) on that buffer, this results in a massive performance degradation compared to no persistent mapping.