[Mesa-dev] [PATCH] r200: revalidate after radeon_update_renderbuffers

Mario Kleiner mario.kleiner at tuebingen.mpg.de
Sat Oct 9 05:08:10 PDT 2010


> On Oct 8, 2010, at 10:35 PM, Daniel Vetter wrote:
>
>> This seems to mitigate a crash in glxgears when I resize the window
>> like crazy. libdrm complains that the depthbuffer is not validated
>> (frontbuffer rendering, so the frontbuffer doesn't change). Problem
>> not fully solved, though: After a while of constantly resizing the
>> window the kernel cs checker complains:
>>
>> [drm:r100_cs_track_check] *ERROR* [drm] Buffer too small for z  
>> buffer (need 1302400 have 1257472) !
>> [drm:r100_cs_track_check] *ERROR* [drm] zbuffer (592 4 0 550)
>> [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !
>>
>> So this is probably just a gross hack. Comments from people with
>> more clue than me higly welcome ;)
>>

This is a pure hunch, but can you check if this helps:

Edit radeon_prepare_render() in radeon_common_context.c to uncomment  
the commented out statement...

radeon_draw_buffer(radeon->glCtx, &(drawable->driverPrivate)->base);

in this comment:

         /* Intel driver does the equivalent of this, no clue if it  
is needed:
          * radeon_draw_buffer(radeon->glCtx, &(drawable- 
 >driverPrivate)->base);
          */

I was the guy who wrote that patch and had no clue if it is needed.  
Maybe this bug provides an answer?

thanks,
-mario

> Patch not tested on anything else than my rv270. Oh, and this is
> on a Mac Mini G4 ppc machine.
>
> Yours, Daniel
>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
>  src/mesa/drivers/dri/r200/r200_tcl.c               |    2 ++
>  .../drivers/dri/radeon/radeon_common_context.c     |    2 ++
>  2 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c b/src/mesa/ 
> drivers/dri/r200/r200_tcl.c
> index 4ae0f30..b1fd9d1 100644
> --- a/src/mesa/drivers/dri/r200/r200_tcl.c
> +++ b/src/mesa/drivers/dri/r200/r200_tcl.c
> @@ -265,6 +265,8 @@ void r200TclPrimitive( GLcontext *ctx,
>     GLuint newprim = hw_prim | R200_VF_TCL_OUTPUT_VTX_ENABLE;
>
>     radeon_prepare_render(&rmesa->radeon);
> +   if (rmesa->radeon.NewGLState)
> +      if (!r200ValidateState( ctx ))
>
>     if (newprim != rmesa->tcl.hw_primitive ||
>         !discrete_prim[hw_prim&0xf]) {
> diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/ 
> src/mesa/drivers/dri/radeon/radeon_common_context.c
> index 85e4988..e6cbfc2 100644
> --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c
> +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c
> @@ -780,6 +780,8 @@ radeon_update_renderbuffers(__DRIcontext  
> *context, __DRIdrawable *drawable,
>  		}
>  	}
>
> +	radeon->NewGLState |= _NEW_BUFFERS;
> +
>  	driUpdateFramebufferSize(radeon->glCtx, drawable);
>  }
>
> -- 
> 1.7.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev

*********************************************************************
Mario Kleiner
Max Planck Institute for Biological Cybernetics
Spemannstr. 38
72076 Tuebingen
Germany

e-mail: mario.kleiner at tuebingen.mpg.de
office: +49 (0)7071/601-1623
fax:    +49 (0)7071/601-616
www:    http://www.kyb.tuebingen.mpg.de/~kleinerm
*********************************************************************
"For a successful technology, reality must take precedence
over public relations, for Nature cannot be fooled."
(Richard Feynman)



More information about the mesa-dev mailing list