Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> On Wed, Jan 4, 2017 at 12:33 PM, Chad Versace <chadvers...@chromium.org> wrote:
> Fixes crash in piglit > `egl_khr_gl_renderbuffer_image-clear-shared-image GL_DEPTH_COMPONENT24` > on Skylake. > > The crash happened because blorp attempted to execute a pending hiz > clear after the hiz buffer was deleted. Deleting the pending hiz ops > when the hiz buffer gets deleted fixes the crash. > > For good measure, this patch also deletes all pending CCS/MCS ops when > the CCS/MCS buffer gets deleted. I'm now aware of any bugs > caused by the dangling ops, but deleting them is clearly the right thing > to do. > > Cc: Ben Widawsky <b...@bwidawsk.net> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99265 > --- > src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > index 31fb71e196..f2c94b7a04 100644 > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > @@ -2337,12 +2337,28 @@ intel_miptree_make_shareable(struct brw_context > *brw, > drm_intel_bo_unreference(mt->mcs_buf->bo); > free(mt->mcs_buf); > mt->mcs_buf = NULL; > + > + /* Any pending MCS/CCS operations are no longer needed. Trying to > + * execute any will likely crash due to the missing aux buffer. So > let's > + * delete all pending ops. > + */ > + exec_list_make_empty(&mt->color_resolve_map); > } > > if (mt->hiz_buf) { > intel_miptree_all_slices_resolve_depth(brw, mt); > intel_miptree_hiz_buffer_free(mt->hiz_buf); > mt->hiz_buf = NULL; > + > + for (uint32_t l = mt->first_level; l <= mt->last_level; ++l) { > + mt->level[l].has_hiz = false; > + } > + > + /* Any pending HiZ operations are no longer needed. Trying to > execute > + * any will likely crash due to the missing aux buffer. So let's > delete > + * all pending ops. > + */ > + exec_list_make_empty(&mt->hiz_map); > } > > mt->aux_disable = INTEL_AUX_DISABLE_ALL; > -- > 2.11.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev