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.
64 pass->end_barrier.src_stage_mask |= src_stage_mask;
65 pass->end_barrier.dst_stage_mask |= dst_stage_mask;
67 pass->end_barrier.src_access_mask |= src_access_mask;
68 pass->end_barrier.dst_access_mask |= dst_access_mask;
71 pass->subpasses[dst].start_barrier.src_stage_mask |= src_stage_mask;
72 pass->subpasses[dst].start_barrier.dst_stage_mask |= dst_stage_mask;
74 pass->subpasses[dst].start_barrier.src_access_mask |= src_access_mask;
75 pass->subpasses[dst].start_barrier.dst_access_mask |= dst_access_mask;
80 radv_render_pass_add_implicit_deps(struct radv_render_pass *pass)
128 for (uint32_t i = 0; i < pass->subpass_count; i++) {
129 struct radv_subpass *subpass = &pass->subpasses[i];
137 struct radv_render_pass_attachment *pass_att = &pass->attachments[subpass_att->attachment];
178 radv_render_pass_add_subpass_dep(pass, &implicit_ingoing_dep);
195 radv_render_pass_add_subpass_dep(pass, &implicit_outgoing_dep);
201 radv_render_pass_compile(struct radv_render_pass *pass)
203 for (uint32_t i = 0; i < pass->subpass_count; i++) {
204 struct radv_subpass *subpass = &pass->subpasses[i];
211 struct radv_render_pass_attachment *pass_att = &pass->attachments[subpass_att->attachment];
218 for (uint32_t i = 0; i < pass->subpass_count; i++) {
219 struct radv_subpass *subpass = &pass->subpasses[i];
243 struct radv_render_pass_attachment *pass_att = &pass->attachments[subpass_att->attachment];
256 struct radv_render_pass_attachment *pass_att = &pass->attachments[subpass_att->attachment];
263 struct radv_render_pass_attachment *pass_att = &pass->attachments[a];
307 struct radv_render_pass *pass)
309 vk_object_base_finish(&pass->base);
310 vk_free2(&device->vk.alloc, pAllocator, pass->subpass_attachments);
311 vk_free2(&device->vk.alloc, pAllocator, pass);
334 struct radv_render_pass *pass;
340 size = sizeof(*pass);
341 size += pCreateInfo->subpassCount * sizeof(pass->subpasses[0]);
343 size += pCreateInfo->attachmentCount * sizeof(pass->attachments[0]);
345 pass = vk_alloc2(&device->vk.alloc, pAllocator, size, 8, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
346 if (pass == NULL)
349 memset(pass, 0, size);
351 vk_object_base_init(&device->vk, &pass->base, VK_OBJECT_TYPE_RENDER_PASS);
353 pass->attachment_count = pCreateInfo->attachmentCount;
354 pass->subpass_count = pCreateInfo->subpassCount;
355 pass->attachments = (struct radv_render_pass_attachment *)((uint8_t *)pass + attachments_offset);
358 struct radv_render_pass_attachment *att = &pass->attachments[i];
378 pass->subpass_attachments =
382 if (pass->subpass_attachments == NULL) {
383 radv_destroy_render_pass(device, pAllocator, pass);
387 pass->subpass_attachments = NULL;
389 p = pass->subpass_attachments;
392 struct radv_subpass *subpass = &pass->subpasses[i];
482 radv_render_pass_add_subpass_dep(pass, &pCreateInfo->pDependencies[i]);
488 pass->subpasses[dep->dstSubpass].has_ingoing_dep = true;
492 pass->subpasses[dep->srcSubpass].has_outgoing_dep = true;
496 radv_render_pass_compile(pass);
498 radv_render_pass_add_implicit_deps(pass);
500 *pRenderPass = radv_render_pass_to_handle(pass);
510 RADV_FROM_HANDLE(radv_render_pass, pass, _pass);
515 radv_destroy_render_pass(device, pAllocator, pass);