I think this should be removed entirely. I added it in 2005 because Mesa back 
then choked on our protected memory(X server freeze or kernel panic). Around 
2008 I checked if this bug still exists, and it seems to be fixed.

If anyone still runs into this bug he should seriously consider upgrading his 
Mesa installation...

Am 07.05.2010 um 23:20 schrieb Gerald Pfeifer:

> Looking at the current code in flush_to_framebuffer_drawpixels it occurs 
> to me that we really need to mark the memory we want to _read_ volatile, 
> not the local variable that is used to "force" reading said memory.
> 
> That is more direct, more logical, and even more efficient.
> 
> Looking at the generated code of all of dlls/wined3d/surface.c the
> only material difference is
> 
>  movb    %al, -25(%ebp)
> 
> which is saving the byte we are trying to read onto the stack and into
> the local variable.  And that is the part that indeed is not necessary.
> 
> Gerald
> 
> ---
> dlls/wined3d/surface.c |    3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
> 
> diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
> index bb18b95..199a1bd 100644
> --- a/dlls/wined3d/surface.c
> +++ b/dlls/wined3d/surface.c
> @@ -1839,8 +1839,7 @@ static void 
> flush_to_framebuffer_drawpixels(IWineD3DSurfaceImpl *This, GLenum fm
>      * ReleaseDC, and the app won't use the dc any more afterwards.
>      */
>     if((This->Flags & SFLAG_DIBSECTION) && !(This->Flags & SFLAG_PBO)) {
> -        volatile BYTE read;
> -        read = This->resource.allocatedMemory[0];
> +        *(volatile BYTE*)This->resource.allocatedMemory;
>     }
> 
>     if(This->Flags & SFLAG_PBO) {
> -- 
> 1.6.6.2
> 



Reply via email to