On Thu, Apr 27, 2017 at 11:32 AM, Nanley Chery <nanleych...@gmail.com> wrote:
> Signed-off-by: Nanley Chery <nanley.g.ch...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev