i965: Call intel_prepare_render() from intel_update_state()
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 9 Jun 2017 19:57:09 +0000 (12:57 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 12 Jun 2017 08:10:36 +0000 (01:10 -0700)
commitb7153c3e9f9d2d430b0338313587a00e531e4800
tree19ca5082731f2c7809c00d14e47677515f0f3c47
parentfae3b139055f32c4d076c170726393995be96d1b
i965: Call intel_prepare_render() from intel_update_state()

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.

According to Tapani, this also fixes crashes seen on Android.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Tested-by: Tapani Pälli <tapani.palli@intel.com>
src/mesa/drivers/dri/i965/brw_context.c