Hi everyone.
I’m developing a custom application on AMD fusion platform, which shares GPU and CPU memory. I’ve discovered a weird quirk related to memory buffer access.
- initialise OpenGL buffer, and each frame render a scene from the buffer. Get 52 fps.
- initialise OpenGL buffer. Each frame, modify the buffer, then render it. Get 60 fps.
modify fVertices
glBindBuffer(fVerticesBuffer);
glBufferSubData(fVertices);
glDrawArray(..)
vs
glDrawArray()
Essentially, touching the buffer with the CPU seems to trigger a scenario where the GPU can access it faster. It is as if the memory caching/prefetching code favours CPU access compared to GPU access only.
Anyone discover anything similar?