Module: Mesa Branch: master Commit: 5d8fa880d6c47c79026799c7bdd95ed7bd1dfa1a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5d8fa880d6c47c79026799c7bdd95ed7bd1dfa1a
Author: Jason Ekstrand <[email protected]> Date: Tue Mar 9 21:59:53 2021 -0600 radv: Drop CreateRenderPass We can use the generic fall-back which calls CreateRenderPass2 instead. Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8857> --- src/amd/vulkan/radv_pass.c | 182 --------------------------------------------- 1 file changed, 182 deletions(-) diff --git a/src/amd/vulkan/radv_pass.c b/src/amd/vulkan/radv_pass.c index b9de5d8285e..bdc12638f67 100644 --- a/src/amd/vulkan/radv_pass.c +++ b/src/amd/vulkan/radv_pass.c @@ -291,15 +291,6 @@ radv_render_pass_compile(struct radv_render_pass *pass) } } -static unsigned -radv_num_subpass_attachments(const VkSubpassDescription *desc) -{ - return desc->inputAttachmentCount + - desc->colorAttachmentCount + - (desc->pResolveAttachments ? desc->colorAttachmentCount : 0) + - (desc->pDepthStencilAttachment != NULL); -} - static void radv_destroy_render_pass(struct radv_device *device, const VkAllocationCallbacks *pAllocator, @@ -310,179 +301,6 @@ radv_destroy_render_pass(struct radv_device *device, vk_free2(&device->vk.alloc, pAllocator, pass); } -VkResult radv_CreateRenderPass( - VkDevice _device, - const VkRenderPassCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkRenderPass* pRenderPass) -{ - RADV_FROM_HANDLE(radv_device, device, _device); - struct radv_render_pass *pass; - size_t size; - size_t attachments_offset; - VkRenderPassMultiviewCreateInfo *multiview_info = NULL; - - assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO); - - size = sizeof(*pass); - size += pCreateInfo->subpassCount * sizeof(pass->subpasses[0]); - attachments_offset = size; - size += pCreateInfo->attachmentCount * sizeof(pass->attachments[0]); - - pass = vk_alloc2(&device->vk.alloc, pAllocator, size, 8, - VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); - if (pass == NULL) - return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); - - memset(pass, 0, size); - - vk_object_base_init(&device->vk, &pass->base, - VK_OBJECT_TYPE_RENDER_PASS); - - pass->attachment_count = pCreateInfo->attachmentCount; - pass->subpass_count = pCreateInfo->subpassCount; - pass->attachments = (struct radv_render_pass_attachment *)((uint8_t *) pass + attachments_offset); - - vk_foreach_struct(ext, pCreateInfo->pNext) { - switch(ext->sType) { - case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO: - multiview_info = (VkRenderPassMultiviewCreateInfo*)ext; - break; - default: - break; - } - } - - for (uint32_t i = 0; i < pCreateInfo->attachmentCount; i++) { - struct radv_render_pass_attachment *att = &pass->attachments[i]; - - 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; - att->initial_layout = pCreateInfo->pAttachments[i].initialLayout; - att->final_layout = pCreateInfo->pAttachments[i].finalLayout; - att->stencil_initial_layout = pCreateInfo->pAttachments[i].initialLayout; - att->stencil_final_layout = pCreateInfo->pAttachments[i].finalLayout; - // att->store_op = pCreateInfo->pAttachments[i].storeOp; - // att->stencil_store_op = pCreateInfo->pAttachments[i].stencilStoreOp; - } - uint32_t subpass_attachment_count = 0; - struct radv_subpass_attachment *p; - for (uint32_t i = 0; i < pCreateInfo->subpassCount; i++) { - subpass_attachment_count += - radv_num_subpass_attachments(&pCreateInfo->pSubpasses[i]); - } - - if (subpass_attachment_count) { - pass->subpass_attachments = - vk_alloc2(&device->vk.alloc, pAllocator, - subpass_attachment_count * sizeof(struct radv_subpass_attachment), 8, - VK_SYSTEM_ALLOCATION_SCOPE_OBJECT); - if (pass->subpass_attachments == NULL) { - radv_destroy_render_pass(device, pAllocator, pass); - return vk_error(device->instance, VK_ERROR_OUT_OF_HOST_MEMORY); - } - } else - pass->subpass_attachments = NULL; - - p = pass->subpass_attachments; - for (uint32_t i = 0; i < pCreateInfo->subpassCount; i++) { - const VkSubpassDescription *desc = &pCreateInfo->pSubpasses[i]; - struct radv_subpass *subpass = &pass->subpasses[i]; - - subpass->input_count = desc->inputAttachmentCount; - subpass->color_count = desc->colorAttachmentCount; - subpass->attachment_count = radv_num_subpass_attachments(desc); - subpass->attachments = p; - - if (multiview_info) - subpass->view_mask = multiview_info->pViewMasks[i]; - - if (desc->inputAttachmentCount > 0) { - subpass->input_attachments = p; - p += desc->inputAttachmentCount; - - for (uint32_t j = 0; j < desc->inputAttachmentCount; j++) { - subpass->input_attachments[j] = (struct radv_subpass_attachment) { - .attachment = desc->pInputAttachments[j].attachment, - .layout = desc->pInputAttachments[j].layout, - .stencil_layout = desc->pInputAttachments[j].layout, - }; - } - } - - if (desc->colorAttachmentCount > 0) { - subpass->color_attachments = p; - p += desc->colorAttachmentCount; - - for (uint32_t j = 0; j < desc->colorAttachmentCount; j++) { - subpass->color_attachments[j] = (struct radv_subpass_attachment) { - .attachment = desc->pColorAttachments[j].attachment, - .layout = desc->pColorAttachments[j].layout, - }; - } - } - - if (desc->pResolveAttachments) { - subpass->resolve_attachments = p; - p += desc->colorAttachmentCount; - - for (uint32_t j = 0; j < desc->colorAttachmentCount; j++) { - subpass->resolve_attachments[j] = (struct radv_subpass_attachment) { - .attachment = desc->pResolveAttachments[j].attachment, - .layout = desc->pResolveAttachments[j].layout, - .stencil_layout = desc->pResolveAttachments[j].layout, - }; - } - } - - if (desc->pDepthStencilAttachment) { - subpass->depth_stencil_attachment = p++; - - *subpass->depth_stencil_attachment = (struct radv_subpass_attachment) { - .attachment = desc->pDepthStencilAttachment->attachment, - .layout = desc->pDepthStencilAttachment->layout, - .stencil_layout = desc->pDepthStencilAttachment->layout, - }; - } - } - - bool has_ingoing_dep = false; - bool has_outgoing_dep = false; - - for (unsigned i = 0; i < pCreateInfo->dependencyCount; ++i) { - /* Convert to a Dependency2 */ - struct VkSubpassDependency2 dep2 = { - .srcSubpass = pCreateInfo->pDependencies[i].srcSubpass, - .dstSubpass = pCreateInfo->pDependencies[i].dstSubpass, - .srcStageMask = pCreateInfo->pDependencies[i].srcStageMask, - .dstStageMask = pCreateInfo->pDependencies[i].dstStageMask, - .srcAccessMask = pCreateInfo->pDependencies[i].srcAccessMask, - .dstAccessMask = pCreateInfo->pDependencies[i].dstAccessMask, - .dependencyFlags = pCreateInfo->pDependencies[i].dependencyFlags, - }; - radv_render_pass_add_subpass_dep(pass, &dep2); - - /* Determine if the subpass has explicit dependencies from/to - * VK_SUBPASS_EXTERNAL. - */ - if (pCreateInfo->pDependencies[i].srcSubpass == VK_SUBPASS_EXTERNAL) - has_ingoing_dep = true; - if (pCreateInfo->pDependencies[i].dstSubpass == VK_SUBPASS_EXTERNAL) - has_outgoing_dep = true; - } - - radv_render_pass_add_implicit_deps(pass, - has_ingoing_dep, has_outgoing_dep); - - radv_render_pass_compile(pass); - - *pRenderPass = radv_render_pass_to_handle(pass); - - return VK_SUCCESS; -} - static unsigned radv_num_subpass_attachments2(const VkSubpassDescription2 *desc) { _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
