Lines Matching refs:subpass
37 /* Ignore subpass self-dependencies as they allow the app to call
44 /* Accumulate all ingoing external dependencies to the first subpass. */
84 * If there is no subpass dependency from VK_SUBPASS_EXTERNAL to the
85 * first subpass that uses an attachment, then an implicit subpass
86 * dependency exists from VK_SUBPASS_EXTERNAL to the first subpass it is
87 * used in. The implicit subpass dependency only exists if there
89 * The subpass dependency operates as if defined with the
94 * .dstSubpass = firstSubpass; // First subpass attachment is used in
106 * Similarly, if there is no subpass dependency from the last subpass
108 * subpass dependency exists from the last subpass it is used in to
109 * VK_SUBPASS_EXTERNAL. The implicit subpass dependency only exists
111 * The subpass dependency operates as if defined with the following
115 * .srcSubpass = lastSubpass; // Last subpass attachment is used in
129 struct radv_subpass *subpass = &pass->subpasses[i];
132 for (uint32_t j = 0; j < subpass->attachment_count; j++) {
133 struct radv_subpass_attachment *subpass_att = &subpass->attachments[j];
143 /* The implicit subpass dependency only exists if
147 if (pass_att->first_subpass_idx == i && !subpass->has_ingoing_dep &&
153 /* The implicit subpass dependency only exists if
157 if (pass_att->last_subpass_idx == i && !subpass->has_outgoing_dep &&
167 .dstSubpass = i, /* first subpass attachment is used in */
183 .srcSubpass = i, /* last subpass attachment is used in */
204 struct radv_subpass *subpass = &pass->subpasses[i];
206 for (uint32_t j = 0; j < subpass->attachment_count; j++) {
207 struct radv_subpass_attachment *subpass_att = &subpass->attachments[j];
219 struct radv_subpass *subpass = &pass->subpasses[i];
227 if (subpass->depth_stencil_attachment &&
228 subpass->depth_stencil_attachment->attachment == VK_ATTACHMENT_UNUSED)
229 subpass->depth_stencil_attachment = NULL;
231 if (subpass->ds_resolve_attachment &&
232 subpass->ds_resolve_attachment->attachment == VK_ATTACHMENT_UNUSED)
233 subpass->ds_resolve_attachment = NULL;
235 if (subpass->vrs_attachment && subpass->vrs_attachment->attachment == VK_ATTACHMENT_UNUSED)
236 subpass->vrs_attachment = NULL;
238 for (uint32_t j = 0; j < subpass->attachment_count; j++) {
239 struct radv_subpass_attachment *subpass_att = &subpass->attachments[j];
250 for (uint32_t j = 0; j < subpass->color_count; j++) {
251 struct radv_subpass_attachment *subpass_att = &subpass->color_attachments[j];
261 if (subpass->depth_stencil_attachment) {
262 const uint32_t a = subpass->depth_stencil_attachment->attachment;
267 subpass->max_sample_count = MAX2(color_sample_count, depth_sample_count);
268 subpass->color_sample_count = color_sample_count;
269 subpass->depth_sample_count = depth_sample_count;
272 subpass->has_color_resolve = false;
273 if (subpass->resolve_attachments) {
274 for (uint32_t j = 0; j < subpass->color_count; j++) {
275 struct radv_subpass_attachment *resolve_att = &subpass->resolve_attachments[j];
280 subpass->has_color_resolve = true;
284 for (uint32_t j = 0; j < subpass->input_count; ++j) {
285 if (subpass->input_attachments[j].attachment == VK_ATTACHMENT_UNUSED)
288 for (uint32_t k = 0; k < subpass->color_count; ++k) {
289 if (subpass->color_attachments[k].attachment ==
290 subpass->input_attachments[j].attachment) {
291 subpass->input_attachments[j].in_render_loop = true;
292 subpass->color_attachments[k].in_render_loop = true;
296 if (subpass->depth_stencil_attachment && subpass->depth_stencil_attachment->attachment ==
297 subpass->input_attachments[j].attachment) {
298 subpass->input_attachments[j].in_render_loop = true;
299 subpass->depth_stencil_attachment->in_render_loop = true;
392 struct radv_subpass *subpass = &pass->subpasses[i];
394 subpass->input_count = desc->inputAttachmentCount;
395 subpass->color_count = desc->colorAttachmentCount;
396 subpass->attachment_count = radv_num_subpass_attachments2(desc);
397 subpass->attachments = p;
398 subpass->view_mask = desc->viewMask;
401 subpass->input_attachments = p;
405 subpass->input_attachments[j] = (struct radv_subpass_attachment){
415 subpass->color_attachments = p;
419 subpass->color_attachments[j] = (struct radv_subpass_attachment){
427 subpass->resolve_attachments = p;
431 subpass->resolve_attachments[j] = (struct radv_subpass_attachment){
439 subpass->depth_stencil_attachment = p++;
441 *subpass->depth_stencil_attachment = (struct radv_subpass_attachment){
453 subpass->ds_resolve_attachment = p++;
455 *subpass->ds_resolve_attachment = (struct radv_subpass_attachment){
462 subpass->depth_resolve_mode = ds_resolve->depthResolveMode;
463 subpass->stencil_resolve_mode = ds_resolve->stencilResolveMode;
470 subpass->vrs_attachment = p++;
472 *subpass->vrs_attachment = (struct radv_subpass_attachment){
484 /* Determine if the subpass has explicit dependencies from/to