This fixes also the crashes seen on Android;

Tested-by: Tapani Pälli <tapani.pa...@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.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) {

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to