[Mesa-dev] [PATCH 09/14] anv/cmd_buffer: Add a concept of pending load aspects
Nanley Chery
nanleychery at gmail.com
Wed Feb 14 00:27:01 UTC 2018
On Mon, Feb 05, 2018 at 02:34:58PM -0800, Jason Ekstrand wrote:
> These are the same as pending clear aspects only for the "load"
> operation.
> ---
> src/intel/vulkan/anv_private.h | 1 +
> src/intel/vulkan/genX_cmd_buffer.c | 22 ++++++++++++++++------
> 2 files changed, 17 insertions(+), 6 deletions(-)
>
This patch is
Reviewed-by: Nanley Chery <nanley.g.chery at intel.com>
> diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
> index 906c6f3..d424498 100644
> --- a/src/intel/vulkan/anv_private.h
> +++ b/src/intel/vulkan/anv_private.h
> @@ -1678,6 +1678,7 @@ struct anv_attachment_state {
>
> VkImageLayout current_layout;
> VkImageAspectFlags pending_clear_aspects;
> + VkImageAspectFlags pending_load_aspects;
> bool fast_clear;
> VkClearValue clear_value;
> bool clear_color_is_zero_one;
> diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
> index 608f5ee..2590ea3 100644
> --- a/src/intel/vulkan/genX_cmd_buffer.c
> +++ b/src/intel/vulkan/genX_cmd_buffer.c
> @@ -1123,26 +1123,36 @@ genX(cmd_buffer_setup_attachments)(struct anv_cmd_buffer *cmd_buffer,
> struct anv_render_pass_attachment *att = &pass->attachments[i];
> VkImageAspectFlags att_aspects = vk_format_aspects(att->format);
> VkImageAspectFlags clear_aspects = 0;
> + VkImageAspectFlags load_aspects = 0;
>
> if (att_aspects & VK_IMAGE_ASPECT_ANY_COLOR_BIT_ANV) {
> /* color attachment */
> if (att->load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
> clear_aspects |= VK_IMAGE_ASPECT_COLOR_BIT;
> + } else if (att->load_op == VK_ATTACHMENT_LOAD_OP_LOAD) {
> + load_aspects |= VK_IMAGE_ASPECT_COLOR_BIT;
> }
> } else {
> /* depthstencil attachment */
> - if ((att_aspects & VK_IMAGE_ASPECT_DEPTH_BIT) &&
> - att->load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
> - clear_aspects |= VK_IMAGE_ASPECT_DEPTH_BIT;
> + if (att_aspects & VK_IMAGE_ASPECT_DEPTH_BIT) {
> + if (att->load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
> + clear_aspects |= VK_IMAGE_ASPECT_DEPTH_BIT;
> + } else if (att->load_op == VK_ATTACHMENT_LOAD_OP_LOAD) {
> + load_aspects |= VK_IMAGE_ASPECT_DEPTH_BIT;
> + }
> }
> - if ((att_aspects & VK_IMAGE_ASPECT_STENCIL_BIT) &&
> - att->stencil_load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
> - clear_aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
> + if (att_aspects & VK_IMAGE_ASPECT_STENCIL_BIT) {
> + if (att->stencil_load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) {
> + clear_aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
> + } else if (att->stencil_load_op == VK_ATTACHMENT_LOAD_OP_LOAD) {
> + load_aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
> + }
> }
> }
>
> state->attachments[i].current_layout = att->initial_layout;
> state->attachments[i].pending_clear_aspects = clear_aspects;
> + state->attachments[i].pending_load_aspects = load_aspects;
> if (clear_aspects)
> state->attachments[i].clear_value = begin->pClearValues[i];
>
> --
> 2.5.0.400.gff86faf
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list