Lines Matching refs:subpass
312 struct v3dv_subpass *subpass = &state->pass->subpasses[subpass_idx];
314 if (subpass->ds_attachment.attachment !=
318 if (subpass->color_count != prev_subpass->color_count)
321 for (uint32_t i = 0; i < subpass->color_count; i++) {
322 if (subpass->color_attachments[i].attachment !=
332 if (subpass->view_mask != prev_subpass->view_mask)
337 * compatible with subpass merges. We could fix that by testing if any of
340 if (prev_subpass->resolve_attachments || subpass->resolve_attachments ||
342 subpass->resolve_depth || subpass->resolve_stencil) {
501 /* Typically, we have a single job for each subpass and we emit the job's RCL
502 * here when we are ending the frame for the subpass. However, some commands
504 * they emit their own RCL even if they execute inside a subpass. In this
505 * scenario, we don't want to emit subpass RCL when we end the frame for
506 * those jobs, so we only emit the subpass RCL if the job has not recorded
739 /* Keep track of the first subpass that we are recording in this new job.
759 /* Don't create a new job if we can merge the current subpass into
846 const struct v3dv_subpass *subpass =
849 if (!subpass->resolve_attachments)
852 /* At this point we have already ended the current subpass and now we are
854 * handle in the subpass RCL.
858 * that we are no longer in a subpass by finishing the current job and
872 for (uint32_t i = 0; i < subpass->color_count; i++) {
874 subpass->color_attachments[i].attachment;
887 subpass->resolve_attachments[i].attachment;
949 assert(inheritance_info->subpass < cmd_buffer->state.pass->subpass_count);
950 cmd_buffer->state.subpass_idx = inheritance_info->subpass;
959 v3dv_cmd_buffer_start_job(cmd_buffer, inheritance_info->subpass,
1036 /* We should only call this at the beginning of a subpass so we should
1047 perf_debug("Render area for subpass %d of render pass %p doesn't "
1057 * since it relies on up-to-date information about subpass tile alignment.
1061 const struct v3dv_subpass *subpass = &pass->subpasses[state->subpass_idx];
1063 for (uint32_t i = 0; i < subpass->color_count; i++) {
1064 const uint32_t attachment_idx = subpass->color_attachments[i].attachment;
1069 subpass->resolve_attachments &&
1070 subpass->resolve_attachments[i].attachment != VK_ATTACHMENT_UNUSED;
1078 uint32_t ds_attachment_idx = subpass->ds_attachment.attachment;
1081 subpass->ds_resolve_attachment.attachment;
1086 (subpass->resolve_depth || subpass->resolve_stencil));
1275 /* Setup for first subpass */
1289 /* Finish the previous subpass */
1293 /* Start the next subpass */
1306 const struct v3dv_subpass *subpass = &pass->subpasses[state->subpass_idx];
1308 /* We only need to emit subpass clears as draw calls when the render
1312 !subpass->do_depth_clear_with_draw &&
1313 !subpass->do_depth_clear_with_draw) {
1320 /* We only need to emit subpass clears as draw calls for color attachments
1324 for (uint32_t i = 0; i < subpass->color_count; i++) {
1325 const uint32_t att_idx = subpass->color_attachments[i].attachment;
1343 /* For D/S we may also need to emit a subpass clear for GFXH-1461 */
1344 const uint32_t ds_att_idx = subpass->ds_attachment.attachment;
1351 !subpass->do_depth_clear_with_draw)) {
1356 !subpass->do_stencil_clear_with_draw)) {
1376 } else if (subpass->do_depth_clear_with_draw ||
1377 subpass->do_stencil_clear_with_draw) {
1431 const struct v3dv_subpass *subpass =
1439 (framebuffer, state->attachments, subpass, &internal_bpp, &msaa);
1452 if (subpass->view_mask != 0) {
1454 layers = util_last_bit(subpass->view_mask);
1462 subpass->color_count,
1484 * this in each subpass because the subset of attachments used can change
1492 * LOAD_OP_CLEAR attachments in this subpass now. We might also need to emit
1497 * exception could be a secondary runnning inside a subpass that needs to
1537 * subpass already finished the job (for example a pipeline barrier). In
1552 /* Finalize last subpass */
2267 * incompatible with the current subpass), so resuming subpass execution
2268 * after it requires that we create a new job with the subpass RT setup.
2332 * current subpass
2336 /* Now start a new job in the same subpass and flag it as continuing
2337 * the current subpass.
2354 * "It is legal for a subpass to use no color or depth/stencil
2355 * attachments (...) This kind of subpass can use shader side effects such
2357 * subpass continues to use the width, height, and layers of the framebuffer
2364 * emit when we start a new frame at the begining of a subpass. At that point,
2378 * bound in the same subpass must have matching number of samples, so we
2525 * subpass.
3271 * in the view mask in the subpass the query is used in. How the
3283 struct v3dv_subpass *subpass = &pass->subpasses[state->subpass_idx];
3284 info->count = util_bitcount(subpass->view_mask);
3297 /* Multiview queries cannot cross subpass boundaries */
3501 * before the current job we are currently recording for the subpass, if any
3540 struct v3dv_subpass *subpass =
3542 job->cpu.query_timestamp.count = util_bitcount(subpass->view_mask);
3548 /* ...and resume the subpass after the timestamp */