Lines Matching refs:subpass

185          assert(ref->subpass < pCreateInfo->subpassCount);
186 VkSubpassDescription2 *subpass = &subpasses[ref->subpass];
188 assert(ref->inputAttachmentIndex < subpass->inputAttachmentCount);
190 &subpass->pInputAttachments[ref->inputAttachmentIndex];
401 unreachable("Invalid subpass attachment usage");
472 struct vk_subpass *subpass = &pass->subpasses[s];
478 subpass->attachment_count = num_subpass_attachments2(desc);
479 subpass->attachments = next_subpass_attachment;
495 subpass->view_mask = desc->viewMask ? desc->viewMask : 1;
496 pass->view_mask |= subpass->view_mask;
498 subpass->input_count = desc->inputAttachmentCount;
500 subpass->input_attachments = next_subpass_attachment;
504 vk_subpass_attachment_init(&subpass->input_attachments[a],
512 subpass->color_count = desc->colorAttachmentCount;
514 subpass->color_attachments = next_subpass_attachment;
518 vk_subpass_attachment_init(&subpass->color_attachments[a],
527 subpass->color_resolve_count = desc->colorAttachmentCount;
528 subpass->color_resolve_attachments = next_subpass_attachment;
532 vk_subpass_attachment_init(&subpass->color_resolve_attachments[a],
537 vk_subpass_attachment_link_resolve(&subpass->color_attachments[a],
538 &subpass->color_resolve_attachments[a],
545 subpass->depth_stencil_attachment = next_subpass_attachment++;
547 vk_subpass_attachment_init(subpass->depth_stencil_attachment,
561 subpass->depth_stencil_resolve_attachment = next_subpass_attachment++;
563 vk_subpass_attachment_init(subpass->depth_stencil_resolve_attachment,
568 vk_subpass_attachment_link_resolve(subpass->depth_stencil_attachment,
569 subpass->depth_stencil_resolve_attachment,
572 if (subpass->depth_stencil_resolve_attachment || mrtss) {
584 subpass->depth_resolve_mode = ds_resolve->depthResolveMode;
585 subpass->stencil_resolve_mode = ds_resolve->stencilResolveMode;
595 subpass->fragment_shading_rate_attachment = next_subpass_attachment++;
596 vk_subpass_attachment_init(subpass->fragment_shading_rate_attachment,
601 subpass->fragment_shading_rate_attachment_texel_size =
617 subpass->input_attachments[a].layout =
619 subpass->color_attachments[c].layout =
629 subpass->input_attachments[a].aspects;
631 subpass->input_attachments[a].layout =
633 subpass->depth_stencil_attachment->layout =
638 subpass->input_attachments[a].stencil_layout =
640 subpass->depth_stencil_attachment->stencil_layout =
692 subpass->self_dep_info = (VkRenderingSelfDependencyInfoMESA) {
699 subpass->sample_count_info_amd = (VkAttachmentSampleCountInfoAMD) {
701 .pNext = &subpass->self_dep_info,
707 subpass->pipeline_info = (VkPipelineRenderingCreateInfo) {
709 .pNext = &subpass->sample_count_info_amd,
717 subpass->inheritance_info = (VkCommandBufferInheritanceRenderingInfo) {
719 .pNext = &subpass->sample_count_info_amd,
732 subpass->mrtss = (VkMultisampledRenderToSingleSampledInfoEXT) {
737 subpass->self_dep_info.pNext = &subpass->mrtss;
751 struct vk_subpass *subpass =
755 for (uint32_t a = 0; a < subpass->attachment_count; a++) {
756 struct vk_subpass_attachment *att = &subpass->attachments[a];
764 att->last_subpass = subpass->view_mask & ~pass_att->view_mask;
769 * used twice within a subpass.
771 for (uint32_t a = 0; a < subpass->attachment_count; a++) {
772 const struct vk_subpass_attachment *att = &subpass->attachments[a];
780 pass_att->view_mask |= subpass->view_mask;
826 assert(info->subpass < render_pass->subpass_count);
827 return &render_pass->subpasses[info->subpass].pipeline_info;
838 assert(info->subpass < render_pass->subpass_count);
839 return &render_pass->subpasses[info->subpass].sample_count_info_amd;
881 assert(inheritance->subpass < render_pass->subpass_count);
882 return &render_pass->subpasses[inheritance->subpass].inheritance_info;
919 assert(inheritance->subpass < pass->subpass_count);
920 const struct vk_subpass *subpass = &pass->subpasses[inheritance->subpass];
934 .viewMask = pass->is_multiview ? subpass->view_mask : 0,
939 for (unsigned i = 0; i < subpass->color_count; i++) {
941 &subpass->color_attachments[i];
958 data->rendering.colorAttachmentCount = subpass->color_count;
960 attachments += subpass->color_count;
962 if (subpass->depth_stencil_attachment) {
964 subpass->depth_stencil_attachment;
991 if (subpass->fragment_shading_rate_attachment) {
993 subpass->fragment_shading_rate_attachment;
1001 subpass->fragment_shading_rate_attachment_texel_size,
1006 /* Append this one last because it lives in the subpass and we don't want
1009 __vk_append_struct(&data->rendering, (void *)&subpass->self_dep_info);
1451 * views which are used by some subpass in the render pass, even if
1452 * that subpass does not reference the given attachment. If the
1564 const struct vk_subpass *subpass = &pass->subpasses[subpass_idx];
1575 subpass->color_count);
1578 subpass->color_count);
1580 for (uint32_t i = 0; i < subpass->color_count; i++) {
1582 &subpass->color_attachments[i];
1605 if (!(subpass->view_mask & att_state->views_loaded)) {
1609 att_state->views_loaded |= subpass->view_mask;
1614 subpass->view_mask,
1628 subpass->view_mask,
1638 if (!(subpass->view_mask & ~sp_att->last_subpass)) {
1639 /* This is the last subpass for every view */
1642 /* For at least one of our views, this isn't the last subpass
1661 res_att_state->views_loaded |= subpass->view_mask;
1671 } else if (subpass->mrtss.multisampledRenderToSingleSampledEnable &&
1694 if (subpass->depth_stencil_attachment != NULL) {
1696 subpass->depth_stencil_attachment;
1717 if (!(subpass->view_mask & att_state->views_loaded)) {
1723 att_state->views_loaded |= subpass->view_mask;
1728 subpass->view_mask,
1748 subpass->view_mask,
1759 if (!(subpass->view_mask & ~sp_att->last_subpass)) {
1760 /* This is the last subpass for every view */
1764 /* For at least one of our views, this isn't the last subpass
1778 * depth/stencil attachment in any subpass that happens-before, the
1788 * subpass that last used the attachment as a depth/stencil
1802 u_foreach_bit(view, subpass->view_mask)
1807 (subpass->mrtss.multisampledRenderToSingleSampledEnable &&
1832 depth_resolve_mode = subpass->depth_resolve_mode;
1836 stencil_resolve_mode = subpass->stencil_resolve_mode;
1869 res_att_state->views_loaded |= subpass->view_mask;
1875 * VkMemoryBarrier for subpass dependencies and it may include some
1902 /* Figure out the set of views in the source subpass affected by this
1905 uint32_t src_dep_view_mask = subpass->view_mask;
1914 * the destination subpass depends on the view dstView +
1915 * pViewOffsets[dependency] in the source subpass. If there is not
1916 * such a view in the source subpass, then this dependency does
1917 * not affect that view in the destination subpass."
1933 * "If there is no subpass dependency from VK_SUBPASS_EXTERNAL to the
1934 * first subpass that uses an attachment, then an implicit subpass
1935 * dependency exists from VK_SUBPASS_EXTERNAL to the first subpass it
1936 * is used in. The implicit subpass dependency only exists if there
1938 * subpass dependency operates as if defined with the following
1943 * .dstSubpass = firstSubpass; // First subpass attachment is used in
1957 * However, this is only going to happen for the first subpass and
1972 for (uint32_t a = 0; a < subpass->attachment_count; a++) {
1973 const struct vk_subpass_attachment *sp_att = &subpass->attachments[a];
1981 max_image_barrier_count += util_bitcount(subpass->view_mask) *
1987 for (uint32_t a = 0; a < subpass->attachment_count; a++) {
1988 const struct vk_subpass_attachment *sp_att = &subpass->attachments[a];
1996 subpass->view_mask,
2023 for (uint32_t a = 0; a < subpass->attachment_count; a++) {
2024 const struct vk_subpass_attachment *sp_att = &subpass->attachments[a];
2028 load_attachment(cmd_buffer, sp_att->attachment, subpass->view_mask,
2044 .viewMask = pass->is_multiview ? subpass->view_mask : 0,
2045 .colorAttachmentCount = subpass->color_count,
2052 if (subpass->fragment_shading_rate_attachment) {
2054 subpass->fragment_shading_rate_attachment;
2063 load_attachment(cmd_buffer, sp_att->attachment, subpass->view_mask,
2071 subpass->fragment_shading_rate_attachment_texel_size,
2082 /* Append this one last because it lives in the subpass and we don't want
2085 __vk_append_struct(&rendering, (void *)&subpass->self_dep_info);
2127 * "Similarly, if there is no subpass dependency from the last
2128 * subpass that uses an attachment to VK_SUBPASS_EXTERNAL, then an
2129 * implicit subpass dependency exists from the last subpass it is
2130 * used in to VK_SUBPASS_EXTERNAL. The implicit subpass dependency
2132 * finalLayout. The subpass dependency operates as if defined with
2136 * .srcSubpass = lastSubpass; // Last subpass attachment is used in
2148 * However, this is only going to happen for the last subpass and