> Each of the following changes individually fixes the problem:
> 
> 1) Do not overwrite the same region of the framebuffer in every iteration; 
> instead, use a different framebuffer region for every iteration.
> 
> 2) Add a sleep(1) before glReadPixels.
> 
> 3) Add a sleep(1) after glReadPixels.
> 
> 4) Call wbinvd() in the DRM at the end of radeon_cp_idle() (after the call to 
> radeon_do_cp_idle), so that radeon_span.c ends up triggering a wbinvd before 
> the actual read takes place.

It sounds like a GPU cache flush is missing, the pixels are probably 
sitting in the texture cache, and may not have hit the framebuffer when 
you read, the wbinvd is only acting like a sleep in this case.

Dave.

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
--
_______________________________________________
Dri-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to