On Wed 31 May 2017, Pohjolainen, Topi wrote: > On Wed, May 31, 2017 at 10:22:09AM -0700, Jason Ekstrand wrote: > > On Tue, May 30, 2017 at 7:29 AM, Pohjolainen, Topi < > > topi.pohjolai...@gmail.com> wrote:
> > > > On Fri, May 26, 2017 at 04:30:05PM -0700, Jason Ekstrand wrote: > > > > > Cc: "17.0 17.1" <mesa-sta...@lists.freedesktop.org> > > > > > --- > > > > > src/mesa/drivers/dri/i965/intel_blit.c | 2 ++ > > > > > 1 file changed, 2 insertions(+) > > > > > > > > > > diff --git a/src/mesa/drivers/dri/i965/intel_blit.c > > > b/src/mesa/drivers/dri/i965/intel_blit.c > > > > > index 2925fc2..b1e1eaa 100644 > > > > > --- a/src/mesa/drivers/dri/i965/intel_blit.c > > > > > +++ b/src/mesa/drivers/dri/i965/intel_blit.c > > > > > @@ -329,6 +329,7 @@ intel_miptree_blit(struct brw_context *brw, > > > > > intel_miptree_slice_resolve_depth(brw, dst_mt, dst_level, > > > dst_slice); > > > > > intel_miptree_resolve_color(brw, src_mt, src_level, src_slice, 1, > > > 0); > > > > > intel_miptree_resolve_color(brw, dst_mt, dst_level, dst_slice, 1, > > > 0); > > > > > + intel_miptree_slice_set_needs_hiz_resolve(dst_mt, dst_level, > > > dst_slice); Something feels wrong. Suppose that, before the blit, the HiZ buffer contains significant data. Here, we schedule an op to invalidate the HiZ data. Also, suppose the the below call to emit_miptree_blit() rejects the blit (maybe because the pitch is too big) and returns false. The failed blit will likely emit a GL error or, in some cases, i965 will fallback to to doing the blit with the 3D engine. In either case, there is a likely bug waiting because the HiZ buffer is scheduled to have its HiZ data invalidated before its next use, but the HiZ data is still significant. The intel_miptree_slice_set_needs_hiz_resolve() needs to happen *after* the successfull call to emit_miptree_blit(). > > > > > > > > > > if (src_flip) > > > > > src_y = minify(src_mt->physical_height0, src_level - > > > src_mt->first_level) - src_y - height; > > > > > @@ -387,6 +388,7 @@ intel_miptree_copy(struct brw_context *brw, > > > > > intel_miptree_slice_resolve_depth(brw, dst_mt, dst_level, > > > dst_slice); > > > > > intel_miptree_resolve_color(brw, src_mt, src_level, src_slice, 1, > > > 0); > > > > > intel_miptree_resolve_color(brw, dst_mt, dst_level, dst_slice, 1, > > > 0); > > > > > + intel_miptree_slice_set_needs_hiz_resolve(dst_mt, dst_level, > > > dst_slice); Same problem again. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev