From d08da4a54aaced705dc4119b749b86b7f9253b4d Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 6 Jul 2020 11:44:00 +0200 Subject: [PATCH] v3dv: handle VK_FORMAT_B8G8R8A8_UNORM vertex attributes This is the only mandatory vertex attribute format that requires a swizzle. Part-of: --- src/broadcom/vulkan/v3dv_pipeline.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c index df1f244..491f21e 100644 --- a/src/broadcom/vulkan/v3dv_pipeline.c +++ b/src/broadcom/vulkan/v3dv_pipeline.c @@ -1177,6 +1177,16 @@ pipeline_populate_v3d_vs_key(struct v3d_vs_key *key, memcpy(key->used_outputs, fs_variant->prog_data.fs->input_slots, sizeof(key->used_outputs)); } + + const VkPipelineVertexInputStateCreateInfo *vi_info = + pCreateInfo->pVertexInputState; + for (uint32_t i = 0; i < vi_info->vertexAttributeDescriptionCount; i++) { + const VkVertexInputAttributeDescription *desc = + &vi_info->pVertexAttributeDescriptions[i]; + assert(desc->location < MAX_VERTEX_ATTRIBS); + if (desc->format == VK_FORMAT_B8G8R8A8_UNORM) + key->va_swap_rb_mask |= 1 << desc->location; + } } /* FIXME: following hash/compare methods are C&P from v3d. Common place? */ -- 2.7.4