Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> On Fri, Apr 14, 2017 at 12:18 PM, Nanley Chery <nanleych...@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 <sigles...@igalia.com> > Cc: Jordan Justen <jordan.l.jus...@intel.com> > Cc: Jason Ekstrand <ja...@jlekstrand.net> > Cc: <mesa-sta...@lists.freedesktop.org> > Signed-off-by: Nanley Chery <nanley.g.ch...@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 > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev