[Mesa-dev] [PATCH] i965: Call intel_prepare_render() from intel_update_state()

Tapani Pälli tapani.palli at intel.com
Mon Jun 12 05:39:40 UTC 2017


This fixes also the crashes seen on Android;

Tested-by: Tapani Pälli <tapani.palli at intel.com>

On 06/10/2017 12:11 AM, Kenneth Graunke wrote:
> The resolve code looks at the current color draw buffers.  These are not
> valid until intel_prepare_render() is called.  You can end up with one
> color buffer bound, but where the renderbuffer has zero width/height and
> no miptree allocated.
> 
> You can get a call chain like: _mesa_Clear -> _mesa_update_state ->
> intel_update_state, where no brw driver hooks were called, so there is
> no other point at which we could have called this.
> 
> Fixes crashes in KWin where Clear was causing intel_disable_rb_aux_buffer
> to crash on irb != NULL but irb->mt == NULL.
> 
> Tested-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>
> Cc: Jason Ekstrand <jason at jlekstrand.net>
> ---
>   src/mesa/drivers/dri/i965/brw_context.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index 6d27866fcea..5433f9080ee 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -201,6 +201,8 @@ intel_update_state(struct gl_context * ctx)
>   
>      _mesa_unlock_context_textures(ctx);
>   
> +   intel_prepare_render(brw);
> +
>      /* Resolve the depth buffer's HiZ buffer. */
>      depth_irb = intel_get_renderbuffer(ctx->DrawBuffer, BUFFER_DEPTH);
>      if (depth_irb && depth_irb->mt) {
> 


More information about the mesa-dev mailing list