[Mesa-dev] [PATCH 09/22] anv/cmd_buffer: Don't partially fast-clear image layers
Jason Ekstrand
jason at jlekstrand.net
Tue May 2 23:25:42 UTC 2017
On Thu, Apr 27, 2017 at 11:32 AM, Nanley Chery <nanleychery at gmail.com>
wrote:
> Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
> ---
> src/intel/vulkan/genX_cmd_buffer.c | 18 +++++++++++++++---
> 1 file changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/src/intel/vulkan/genX_cmd_buffer.c
> b/src/intel/vulkan/genX_cmd_buffer.c
> index 0ea378fde2..a981b00f67 100644
> --- a/src/intel/vulkan/genX_cmd_buffer.c
> +++ b/src/intel/vulkan/genX_cmd_buffer.c
> @@ -216,7 +216,7 @@ color_is_zero_one(VkClearColorValue value, enum
> isl_format format)
> }
>
> static void
> -color_attachment_compute_aux_usage(struct anv_device *device,
> +color_attachment_compute_aux_usage(struct anv_cmd_buffer * const
> cmd_buffer,
>
I t may be better to just pass in the framebuffer and attachment index
rather than the whole command buffer. Slso, I think you're getting a bit
over-excited with the constness. :-)
> struct anv_attachment_state *att_state,
> struct anv_image_view *iview,
> VkRect2D render_area,
> @@ -249,7 +249,8 @@ color_attachment_compute_aux_usage(struct anv_device
> *device,
> att_state->input_aux_usage = ISL_AUX_USAGE_CCS_E;
> } else {
> att_state->aux_usage = ISL_AUX_USAGE_CCS_D;
> - if (isl_format_supports_ccs_e(&device->info, iview->isl.format)) {
> + if (isl_format_supports_ccs_e(&cmd_buffer->device->info,
> + iview->isl.format)) {
> /* SKL can sample from CCS with one restriction.
> *
> * From the Sky Lake PRM, RENDER_SURFACE_STATE::
> AuxiliarySurfaceMode:
> @@ -305,6 +306,17 @@ color_attachment_compute_aux_usage(struct anv_device
> *device,
> if (GEN_GEN <= 8 && !att_state->clear_color_is_zero_one)
> att_state->fast_clear = false;
>
> + /* We can't fast clear a proper subset of a layered image. See
> + * add_clear_values() for more information.
> + */
> + const uint32_t fb_layers = cmd_buffer->state.framebuffer->layers;
> + const uint32_t aux_layers = anv_color_aux_layers(iview->image,
> +
> iview->isl.base_level);
> + if (fb_layers != aux_layers) {
> + assert(fb_layers < aux_layers);
> + att_state->fast_clear = false;
> + }
> +
> if (att_state->fast_clear) {
> memcpy(fast_clear_color->u32, att_state->clear_value.color.
> uint32,
> sizeof(fast_clear_color->u32));
> @@ -498,7 +510,7 @@ genX(cmd_buffer_setup_attachments)(struct
> anv_cmd_buffer *cmd_buffer,
>
> union isl_color_value clear_color = { .u32 = { 0, } };
> if (att_aspects == VK_IMAGE_ASPECT_COLOR_BIT) {
> - color_attachment_compute_aux_usage(cmd_buffer->device,
> + color_attachment_compute_aux_usage(cmd_buffer,
> &state->attachments[i],
> iview, begin->renderArea,
> &clear_color);
> --
> 2.12.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170502/6eb9fd32/attachment.html>
More information about the mesa-dev
mailing list