From 9102e88364a7e6a5c66f5b0eb5869ab029cddf92 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Fri, 13 May 2016 14:07:21 -0700 Subject: [PATCH] anv: Change render_pass_attachment.format to a VkFormat --- src/intel/vulkan/anv_cmd_buffer.c | 9 ++++++--- src/intel/vulkan/anv_pass.c | 2 +- src/intel/vulkan/anv_private.h | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/intel/vulkan/anv_cmd_buffer.c b/src/intel/vulkan/anv_cmd_buffer.c index 77f4283f77a..bba24e82337 100644 --- a/src/intel/vulkan/anv_cmd_buffer.c +++ b/src/intel/vulkan/anv_cmd_buffer.c @@ -29,6 +29,8 @@ #include "anv_private.h" +#include "vk_format_info.h" + /** \file anv_cmd_buffer.c * * This file contains all of the stuff for emitting commands into a command @@ -168,20 +170,21 @@ anv_cmd_state_setup_attachments(struct anv_cmd_buffer *cmd_buffer, for (uint32_t i = 0; i < pass->attachment_count; ++i) { struct anv_render_pass_attachment *att = &pass->attachments[i]; + VkImageAspectFlags att_aspects = vk_format_aspects(att->format); VkImageAspectFlags clear_aspects = 0; - if (anv_format_is_color(att->format)) { + if (att_aspects == VK_IMAGE_ASPECT_COLOR_BIT) { /* color attachment */ if (att->load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) { clear_aspects |= VK_IMAGE_ASPECT_COLOR_BIT; } } else { /* depthstencil attachment */ - if (att->format->has_depth && + 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->format->has_stencil && + if ((att_aspects & VK_IMAGE_ASPECT_STENCIL_BIT) && att->stencil_load_op == VK_ATTACHMENT_LOAD_OP_CLEAR) { clear_aspects |= VK_IMAGE_ASPECT_STENCIL_BIT; } diff --git a/src/intel/vulkan/anv_pass.c b/src/intel/vulkan/anv_pass.c index d07e9fec6cc..b7407548779 100644 --- a/src/intel/vulkan/anv_pass.c +++ b/src/intel/vulkan/anv_pass.c @@ -57,7 +57,7 @@ VkResult anv_CreateRenderPass( for (uint32_t i = 0; i < pCreateInfo->attachmentCount; i++) { struct anv_render_pass_attachment *att = &pass->attachments[i]; - att->format = anv_format_for_vk_format(pCreateInfo->pAttachments[i].format); + att->format = pCreateInfo->pAttachments[i].format; att->samples = pCreateInfo->pAttachments[i].samples; att->load_op = pCreateInfo->pAttachments[i].loadOp; att->stencil_load_op = pCreateInfo->pAttachments[i].stencilLoadOp; diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index c3b31e612f4..6284be92f6d 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1751,7 +1751,7 @@ struct anv_subpass { }; struct anv_render_pass_attachment { - const struct anv_format *format; + VkFormat format; uint32_t samples; VkAttachmentLoadOp load_op; VkAttachmentLoadOp stencil_load_op; -- 2.30.2