[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 8 16:49:07 UTC 2018
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]
+
+ 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
More information about the mesa-dev
mailing list