[Mesa-dev] [PATCH] anv/cmd_buffer: Disable CCS on BDW input attachments

Jason Ekstrand jason at jlekstrand.net
Fri Apr 14 19:34:09 UTC 2017


Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

On Fri, Apr 14, 2017 at 12:18 PM, Nanley Chery <nanleychery at gmail.com>
wrote:

> The description under RENDER_SURFACE_STATE::RedClearColor says,
>
>    For Sampling Engine Multisampled Surfaces and Render Targets:
>     Specifies the clear value for the red channel.
>    For Other Surfaces:
>     This field is ignored.
>
> This means that the sampler on BDW doesn't support CCS.
>
> Cc: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
> Cc: Jordan Justen <jordan.l.justen at intel.com>
> Cc: Jason Ekstrand <jason at jlekstrand.net>
> Cc: <mesa-stable at lists.freedesktop.org>
> Signed-off-by: Nanley Chery <nanley.g.chery at intel.com>
> ---
>  src/intel/vulkan/anv_blorp.c       | 11 -----------
>  src/intel/vulkan/genX_cmd_buffer.c | 32 +++++++++++++-------------------
>  2 files changed, 13 insertions(+), 30 deletions(-)
>
> diff --git a/src/intel/vulkan/anv_blorp.c b/src/intel/vulkan/anv_blorp.c
> index 4904ee3a5f..8a3c4deed3 100644
> --- a/src/intel/vulkan/anv_blorp.c
> +++ b/src/intel/vulkan/anv_blorp.c
> @@ -1381,7 +1381,6 @@ ccs_resolve_attachment(struct anv_cmd_buffer
> *cmd_buffer,
>      * still hot in the cache.
>      */
>     bool found_draw = false;
> -   bool self_dep = false;
>     enum anv_subpass_usage usage = 0;
>     for (uint32_t s = subpass_idx + 1; s < pass->subpass_count; s++) {
>        usage |= pass->attachments[att].subpass_usage[s];
> @@ -1391,8 +1390,6 @@ ccs_resolve_attachment(struct anv_cmd_buffer
> *cmd_buffer,
>            * wait to resolve until then.
>            */
>           found_draw = true;
> -         if (pass->attachments[att].subpass_usage[s] &
> ANV_SUBPASS_USAGE_INPUT)
> -            self_dep = true;
>           break;
>        }
>     }
> @@ -1451,14 +1448,6 @@ ccs_resolve_attachment(struct anv_cmd_buffer
> *cmd_buffer,
>            *    binding this surface to Sampler."
>            */
>           resolve_op = BLORP_FAST_CLEAR_OP_RESOLVE_PARTIAL;
> -      } else if (cmd_buffer->device->info.gen == 8 && self_dep &&
> -                 att_state->input_aux_usage == ISL_AUX_USAGE_CCS_D) {
> -         /* On Broadwell we still need to do resolves when there is a
> -          * self-dependency because HW could not see fast-clears and works
> -          * on the render cache as if there was regular non-fast-clear
> surface.
> -          * To avoid any inconsistency, we force the resolve.
> -          */
> -         resolve_op = BLORP_FAST_CLEAR_OP_RESOLVE_FULL;
>        }
>     }
>
> diff --git a/src/intel/vulkan/genX_cmd_buffer.c
> b/src/intel/vulkan/genX_cmd_buffer.c
> index b78b13d88e..2e0108d3f5 100644
> --- a/src/intel/vulkan/genX_cmd_buffer.c
> +++ b/src/intel/vulkan/genX_cmd_buffer.c
> @@ -291,27 +291,21 @@ color_attachment_compute_aux_usage(struct
> anv_device *device,
>        att_state->input_aux_usage = ISL_AUX_USAGE_CCS_E;
>     } else if (att_state->fast_clear) {
>        att_state->aux_usage = ISL_AUX_USAGE_CCS_D;
> -      if (GEN_GEN >= 9 &&
> -          !isl_format_supports_ccs_e(&device->info, iview->isl.format)) {
> -         /* From the Sky Lake PRM, RENDER_SURFACE_STATE::
> AuxiliarySurfaceMode:
> -          *
> -          *    "If Number of Multisamples is MULTISAMPLECOUNT_1, AUX_CCS_D
> -          *    setting is only allowed if Surface Format supported for
> Fast
> -          *    Clear. In addition, if the surface is bound to the sampling
> -          *    engine, Surface Format must be supported for Render Target
> -          *    Compression for surfaces bound to the sampling engine."
> -          *
> -          * In other words, we can't sample from a fast-cleared image if
> it
> -          * doesn't also support color compression.
> -          */
> -         att_state->input_aux_usage = ISL_AUX_USAGE_NONE;
> -      } else if (GEN_GEN >= 8) {
> -         /* Broadwell/Skylake can sample from fast-cleared images */
> +      /* From the Sky Lake PRM, RENDER_SURFACE_STATE::
> AuxiliarySurfaceMode:
> +       *
> +       *    "If Number of Multisamples is MULTISAMPLECOUNT_1, AUX_CCS_D
> +       *    setting is only allowed if Surface Format supported for Fast
> +       *    Clear. In addition, if the surface is bound to the sampling
> +       *    engine, Surface Format must be supported for Render Target
> +       *    Compression for surfaces bound to the sampling engine."
> +       *
> +       * In other words, we can only sample from a fast-cleared image if
> it
> +       * also supports color compression.
> +       */
> +      if (isl_format_supports_ccs_e(&device->info, iview->isl.format))
>           att_state->input_aux_usage = ISL_AUX_USAGE_CCS_D;
> -      } else {
> -         /* Ivy Bridge and Haswell cannot */
> +      else
>           att_state->input_aux_usage = ISL_AUX_USAGE_NONE;
> -      }
>     } else {
>        att_state->aux_usage = ISL_AUX_USAGE_NONE;
>        att_state->input_aux_usage = ISL_AUX_USAGE_NONE;
> --
> 2.12.2
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170414/5b3a505b/attachment-0001.html>


More information about the mesa-dev mailing list