codemonkey76
05-11-2005, 09:06 AM
when using immediate mode calls (i.e. glNormal* glTexCoord* glVertex*) i am working under the assumption that the call is non-blocking unless the GPU has not finished with the previous call. is this a correct assumption for modern drivers?
i know that the various buffered calls (VBO, VAR, display lists, etc) are effectively asynchronous until certain other gl calls are made, but i don't know how this applies to immediate mode calls.
for example, in a fill-bound application (e.g. volume rendering) where the geometry count is low, is it better to spend a little CPU time computing expensive vertices (transforming, interpolating, clipping, etc) and drawing them immediately, knowing that you can compute the next vertex while a triangle is rasterizing, or is it better to compute the few 100-1000 verts at once, dispatch them all at once with VBO, VAR, etc and while all that drawing occurs in the background, compute the next set of verts?
it is ultimately a question of maximizing CPU/GPU utilization, so they are both balanced in their load. i can't tell though whether the CPU is fast enough to finish the next polygon and is blocking waiting for the last one to draw, or whether the GPU finishes drawing and is waiting for the CPU to issue the next polygon.
i know that the various buffered calls (VBO, VAR, display lists, etc) are effectively asynchronous until certain other gl calls are made, but i don't know how this applies to immediate mode calls.
for example, in a fill-bound application (e.g. volume rendering) where the geometry count is low, is it better to spend a little CPU time computing expensive vertices (transforming, interpolating, clipping, etc) and drawing them immediately, knowing that you can compute the next vertex while a triangle is rasterizing, or is it better to compute the few 100-1000 verts at once, dispatch them all at once with VBO, VAR, etc and while all that drawing occurs in the background, compute the next set of verts?
it is ultimately a question of maximizing CPU/GPU utilization, so they are both balanced in their load. i can't tell though whether the CPU is fast enough to finish the next polygon and is blocking waiting for the last one to draw, or whether the GPU finishes drawing and is waiting for the CPU to issue the next polygon.