Lines Matching defs:subpass
37 /* Ignore subpass self-dependencies as they allow the app to call
44 /* Accumulate all ingoing external dependencies to the first subpass. */
66 * If there is no subpass dependency from VK_SUBPASS_EXTERNAL to the
67 * first subpass that uses an attachment, then an implicit subpass
68 * dependency exists from VK_SUBPASS_EXTERNAL to the first subpass it is
69 * used in. The implicit subpass dependency only exists if there
71 * The subpass dependency operates as if defined with the
76 * .dstSubpass = firstSubpass; // First subpass attachment is used in
88 * Similarly, if there is no subpass dependency from the last subpass
90 * subpass dependency exists from the last subpass it is used in to
91 * VK_SUBPASS_EXTERNAL. The implicit subpass dependency only exists
93 * The subpass dependency operates as if defined with the following
97 * .srcSubpass = lastSubpass; // Last subpass attachment is used in
111 struct radv_subpass *subpass = &pass->subpasses[i];
114 for (uint32_t j = 0; j < subpass->attachment_count; j++) {
115 struct radv_subpass_attachment *subpass_att = &subpass->attachments[j];
125 /* The implicit subpass dependency only exists if
129 if (pass_att->first_subpass_idx == i && !subpass->has_ingoing_dep &&
135 /* The implicit subpass dependency only exists if
139 if (pass_att->last_subpass_idx == i && !subpass->has_outgoing_dep &&
149 .dstSubpass = i, /* first subpass attachment is used in */
165 .srcSubpass = i, /* last subpass attachment is used in */
186 struct radv_subpass *subpass = &pass->subpasses[i];
188 for (uint32_t j = 0; j < subpass->attachment_count; j++) {
189 struct radv_subpass_attachment *subpass_att = &subpass->attachments[j];
201 struct radv_subpass *subpass = &pass->subpasses[i];
209 if (subpass->depth_stencil_attachment &&
210 subpass->depth_stencil_attachment->attachment == VK_ATTACHMENT_UNUSED)
211 subpass->depth_stencil_attachment = NULL;
213 if (subpass->ds_resolve_attachment &&
214 subpass->ds_resolve_attachment->attachment == VK_ATTACHMENT_UNUSED)
215 subpass->ds_resolve_attachment = NULL;
217 if (subpass->vrs_attachment && subpass->vrs_attachment->attachment == VK_ATTACHMENT_UNUSED)
218 subpass->vrs_attachment = NULL;
220 for (uint32_t j = 0; j < subpass->attachment_count; j++) {
221 struct radv_subpass_attachment *subpass_att = &subpass->attachments[j];
232 subpass->has_color_att = false;
233 for (uint32_t j = 0; j < subpass->color_count; j++) {
234 struct radv_subpass_attachment *subpass_att = &subpass->color_attachments[j];
238 subpass->has_color_att = true;
245 if (subpass->depth_stencil_attachment) {
246 const uint32_t a = subpass->depth_stencil_attachment->attachment;
251 subpass->max_sample_count = MAX2(color_sample_count, depth_sample_count);
252 subpass->color_sample_count = color_sample_count;
253 subpass->depth_sample_count = depth_sample_count;
256 subpass->has_color_resolve = false;
257 if (subpass->resolve_attachments) {
258 for (uint32_t j = 0; j < subpass->color_count; j++) {
259 struct radv_subpass_attachment *resolve_att = &subpass->resolve_attachments[j];
264 subpass->has_color_resolve = true;
268 for (uint32_t j = 0; j < subpass->input_count; ++j) {
269 if (subpass->input_attachments[j].attachment == VK_ATTACHMENT_UNUSED)
272 for (uint32_t k = 0; k < subpass->color_count; ++k) {
273 if (subpass->color_attachments[k].attachment ==
274 subpass->input_attachments[j].attachment) {
275 subpass->input_attachments[j].in_render_loop = true;
276 subpass->color_attachments[k].in_render_loop = true;
280 if (subpass->depth_stencil_attachment && subpass->depth_stencil_attachment->attachment ==
281 subpass->input_attachments[j].attachment) {
282 subpass->input_attachments[j].in_render_loop = true;
283 subpass->depth_stencil_attachment->in_render_loop = true;
440 struct radv_subpass *subpass = &pass->subpasses[i];
442 subpass->input_count = desc->inputAttachmentCount;
443 subpass->color_count = desc->colorAttachmentCount;
444 subpass->attachment_count = radv_num_subpass_attachments2(desc);
445 subpass->attachments = p;
446 subpass->view_mask = desc->viewMask;
449 subpass->input_attachments = p;
453 subpass->input_attachments[j] = (struct radv_subpass_attachment){
462 subpass->color_attachments = p;
466 subpass->color_attachments[j] = (struct radv_subpass_attachment){
474 subpass->resolve_attachments = p;
478 subpass->resolve_attachments[j] = (struct radv_subpass_attachment){
486 subpass->depth_stencil_attachment = p++;
488 *subpass->depth_stencil_attachment = (struct radv_subpass_attachment){
499 subpass->ds_resolve_attachment = p++;
501 *subpass->ds_resolve_attachment = (struct radv_subpass_attachment){
507 subpass->depth_resolve_mode = ds_resolve->depthResolveMode;
508 subpass->stencil_resolve_mode = ds_resolve->stencilResolveMode;
515 subpass->vrs_attachment = p++;
517 *subpass->vrs_attachment = (struct radv_subpass_attachment){
529 /* Determine if the subpass has explicit dependencies from/to