Ugh... Yeah, this is probably needed.  I've got another patch in my tree
(I'll probably send that series tomorrow) which moves all of the resolve
stuff back to brw_draw.c and not intel_update_state.

Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net>

On Fri, Jun 9, 2017 at 2:11 PM, Kenneth Graunke <kenn...@whitecape.org>
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.klausm...@mni.thm.de>
> Cc: Jason Ekstrand <ja...@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) {
> --
> 2.13.0
>
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to