https://bugs.freedesktop.org/show_bug.cgi?id=102856
Tested-by: Mark Janes <mark.a.ja...@intel.com> Jason Ekstrand <ja...@jlekstrand.net> writes: > On gen7-8 where we use CCS_D, we were setting AUX_STATE_AUX_INVALID > because that's the obvious aux state when there is no modifier. > However, this doesn't work because that aux state isn't compatible with > CCS_D. > > Cc: Chad Versace <chadvers...@chromium.org> > --- > src/intel/isl/isl.h | 4 +++- > src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 17 +++++++++++++++-- > 2 files changed, 18 insertions(+), 3 deletions(-) > > diff --git a/src/intel/isl/isl.h b/src/intel/isl/isl.h > index df275f8..c01c983 100644 > --- a/src/intel/isl/isl.h > +++ b/src/intel/isl/isl.h > @@ -1555,7 +1555,9 @@ isl_drm_modifier_get_info(uint64_t modifier); > static inline bool > isl_drm_modifier_has_aux(uint64_t modifier) > { > - return isl_drm_modifier_get_info(modifier)->aux_usage != > ISL_AUX_USAGE_NONE; > + const struct isl_drm_modifier_info *mod_info = > + isl_drm_modifier_get_info(modifier); > + return mod_info && mod_info->aux_usage != ISL_AUX_USAGE_NONE; > } > > /** Returns the default isl_aux_state for the given modifier. > diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > index 5740f03..9e3dd45 100644 > --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c > @@ -2829,8 +2829,21 @@ intel_miptree_finish_external(struct brw_context *brw, > > /* We just got this image in from the window system via glxBindTexImageEXT > * or similar and have no idea what the actual aux state is other than > that > - * we aren't in AUX_INVALID. Reset the aux state to the default for the > - * image's modifier. > + * we aren't in AUX_INVALID. If the modifier has no aux then any aux > + * buffer we may have is provided by us and we had better have resolved it > + * in intel_miptree_prepare_external. > + * > + * TODO: It is possible to get here with unresolved AUX because the dri2 > + * stamp can get updated without intel_miptree_prepare_external getting > + * called. For example, glReadBuffers calls dri2InvalidateDrawable. We > + * then land here on the next draw call. > + */ > + if (!isl_drm_modifier_has_aux(mt->drm_modifier)) > + return; > + > + /* Otherwise, reset the aux state to the least common denominator for the > + * image's modifier because we don't know how it's been edited prior to > our > + * seeing it here. > */ > enum isl_aux_state default_aux_state = > isl_drm_modifier_get_default_aux_state(mt->drm_modifier); > -- > 2.5.0.400.gff86faf > > _______________________________________________ > 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