Lines Matching refs:pass

32 radv_render_pass_add_subpass_dep(struct radv_render_pass *pass, const VkSubpassDependency2 *dep)
38 * vkCmdPipelineBarrier() inside the render pass and the driver should
39 * only do the barrier when called, not when starting the render pass.
50 pass->end_barrier.src_stage_mask |= dep->srcStageMask;
51 pass->end_barrier.src_access_mask |= dep->srcAccessMask;
52 pass->end_barrier.dst_access_mask |= dep->dstAccessMask;
55 pass->subpasses[dst].start_barrier.src_stage_mask |= dep->srcStageMask;
56 pass->subpasses[dst].start_barrier.src_access_mask |= dep->srcAccessMask;
57 pass->subpasses[dst].start_barrier.dst_access_mask |= dep->dstAccessMask;
62 radv_render_pass_add_implicit_deps(struct radv_render_pass *pass)
110 for (uint32_t i = 0; i < pass->subpass_count; i++) {
111 struct radv_subpass *subpass = &pass->subpasses[i];
119 struct radv_render_pass_attachment *pass_att = &pass->attachments[subpass_att->attachment];
160 radv_render_pass_add_subpass_dep(pass, &implicit_ingoing_dep);
177 radv_render_pass_add_subpass_dep(pass, &implicit_outgoing_dep);
183 radv_render_pass_compile(struct radv_render_pass *pass)
185 for (uint32_t i = 0; i < pass->subpass_count; i++) {
186 struct radv_subpass *subpass = &pass->subpasses[i];
193 struct radv_render_pass_attachment *pass_att = &pass->attachments[subpass_att->attachment];
200 for (uint32_t i = 0; i < pass->subpass_count; i++) {
201 struct radv_subpass *subpass = &pass->subpasses[i];
225 struct radv_render_pass_attachment *pass_att = &pass->attachments[subpass_att->attachment];
240 struct radv_render_pass_attachment *pass_att = &pass->attachments[subpass_att->attachment];
247 struct radv_render_pass_attachment *pass_att = &pass->attachments[a];
291 struct radv_render_pass *pass)
293 vk_object_base_finish(&pass->base);
294 vk_free2(&device->vk.alloc, pAllocator, pass->subpass_attachments);
295 vk_free2(&device->vk.alloc, pAllocator, pass);
382 struct radv_render_pass *pass;
388 size = sizeof(*pass);
389 size += pCreateInfo->subpassCount * sizeof(pass->subpasses[0]);
391 size += pCreateInfo->attachmentCount * sizeof(pass->attachments[0]);
393 pass = vk_alloc2(&device->vk.alloc, pAllocator, size, 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
394 if (pass == NULL)
397 memset(pass, 0, size);
399 vk_object_base_init(&device->vk, &pass->base, VK_OBJECT_TYPE_RENDER_PASS);
401 pass->attachment_count = pCreateInfo->attachmentCount;
402 pass->subpass_count = pCreateInfo->subpassCount;
403 pass->attachments = (struct radv_render_pass_attachment *)((uint8_t *)pass + attachments_offset);
406 struct radv_render_pass_attachment *att = &pass->attachments[i];
426 pass->subpass_attachments =
430 if (pass->subpass_attachments == NULL) {
431 radv_destroy_render_pass(device, pAllocator, pass);
435 pass->subpass_attachments = NULL;
437 p = pass->subpass_attachments;
440 struct radv_subpass *subpass = &pass->subpasses[i];
527 radv_render_pass_add_subpass_dep(pass, &pCreateInfo->pDependencies[i]);
533 pass->subpasses[dep->dstSubpass].has_ingoing_dep = true;
537 pass->subpasses[dep->srcSubpass].has_outgoing_dep = true;
541 radv_render_pass_compile(pass);
543 radv_render_pass_add_implicit_deps(pass);
545 *pRenderPass = radv_render_pass_to_handle(pass);
555 RADV_FROM_HANDLE(radv_render_pass, pass, _pass);
560 radv_destroy_render_pass(device, pAllocator, pass);