mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 12:40:09 +01:00
anv: Add a helper to extract clear color from the attachment.
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@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
7987d041fd
commit
3f96b459f4
2 changed files with 21 additions and 13 deletions
|
|
@ -2902,6 +2902,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]
|
||||
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue