[Mesa-dev] [PATCH v4 14/18] anv: Add a helper to extract clear color from the attachment.

Rafael Antognolli rafael.antognolli at intel.com
Thu Mar 15 15:08:44 UTC 2018


On Thu, Mar 15, 2018 at 12:20:19AM -0700, Jordan Justen wrote:
> On 2018-03-08 08:49:07, Rafael Antognolli wrote:
> > Extract the code from color_attachment_compute_aux_usage, so we can
> > later reuse it to update the clear color state buffer.
> > 
> > Signed-off-by: Rafael Antognolli <rafael.antognolli at intel.com>
> > ---
> >  src/intel/vulkan/anv_private.h     | 20 ++++++++++++++++++++
> >  src/intel/vulkan/genX_cmd_buffer.c | 14 +-------------
> >  2 files changed, 21 insertions(+), 13 deletions(-)
> > 
> > diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
> > index 3af81e16025..497c61fab14 100644
> > --- a/src/intel/vulkan/anv_private.h
> > +++ b/src/intel/vulkan/anv_private.h
> > @@ -2894,6 +2894,26 @@ void anv_fill_buffer_surface_state(struct anv_device *device,
> >                                     uint32_t offset, uint32_t range,
> >                                     uint32_t stride);
> >  
> > +static inline void
> > +anv_clear_color_from_att_state(union isl_color_value *clear_color,
> > +                               const struct anv_attachment_state *att_state,
> > +                               const struct anv_image_view *iview)
> > +{
> > +   const struct isl_format_layout *view_fmtl =
> > +      isl_format_get_layout(iview->planes[0].isl.format);
> > +
> > +#define COPY_CLEAR_COLOR_CHANNEL(c, i) \
> > +   if (view_fmtl->channels.c.bits) \
> > +      clear_color->u32[i] = att_state->clear_value.color.uint32[i]
> 
> I see that you moved this from below, but it doesn't seem like this
> macro is helping much. Not a big deal though.

It gets used again in patch 17, but I guess it's too far away.  I'll
move this patch closer to that one, so it is not just a random patch
with not much use. Thanks.

> 13 - 14 Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
> 
> > +
> > +   COPY_CLEAR_COLOR_CHANNEL(r, 0);
> > +   COPY_CLEAR_COLOR_CHANNEL(g, 1);
> > +   COPY_CLEAR_COLOR_CHANNEL(b, 2);
> > +   COPY_CLEAR_COLOR_CHANNEL(a, 3);
> > +
> > +#undef COPY_CLEAR_COLOR_CHANNEL
> > +}
> > +
> >  
> >  struct anv_ycbcr_conversion {
> >     const struct anv_format *        format;
> > diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
> > index 53d095a6ee2..aa995014144 100644
> > --- a/src/intel/vulkan/genX_cmd_buffer.c
> > +++ b/src/intel/vulkan/genX_cmd_buffer.c
> > @@ -272,20 +272,8 @@ color_attachment_compute_aux_usage(struct anv_device * device,
> >     assert(iview->image->planes[0].aux_surface.isl.usage &
> >            (ISL_SURF_USAGE_CCS_BIT | ISL_SURF_USAGE_MCS_BIT));
> >  
> > -   const struct isl_format_layout *view_fmtl =
> > -      isl_format_get_layout(iview->planes[0].isl.format);
> >     union isl_color_value clear_color = {};
> > -
> > -#define COPY_CLEAR_COLOR_CHANNEL(c, i) \
> > -   if (view_fmtl->channels.c.bits) \
> > -      clear_color.u32[i] = att_state->clear_value.color.uint32[i]
> > -
> > -   COPY_CLEAR_COLOR_CHANNEL(r, 0);
> > -   COPY_CLEAR_COLOR_CHANNEL(g, 1);
> > -   COPY_CLEAR_COLOR_CHANNEL(b, 2);
> > -   COPY_CLEAR_COLOR_CHANNEL(a, 3);
> > -
> > -#undef COPY_CLEAR_COLOR_CHANNEL
> > +   anv_clear_color_from_att_state(&clear_color, att_state, iview);
> >  
> >     att_state->clear_color_is_zero_one =
> >        isl_color_value_is_zero_one(clear_color, iview->planes[0].isl.format);
> > -- 
> > 2.14.3
> > 
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list