Lines Matching refs:needs
4355 const struct radv_queue_ring_info *needs)
4372 const bool add_sample_positions = !queue->ring_info.sample_positions && needs->sample_positions;
4373 const uint32_t scratch_size = needs->scratch_size_per_wave * needs->scratch_waves;
4385 needs->compute_scratch_size_per_wave * needs->compute_scratch_waves;
4395 if (needs->esgs_ring_size > queue->ring_info.esgs_ring_size) {
4396 result = ws->buffer_create(ws, needs->esgs_ring_size, 4096, RADEON_DOMAIN_VRAM, ring_bo_flags,
4402 if (needs->gsvs_ring_size > queue->ring_info.gsvs_ring_size) {
4403 result = ws->buffer_create(ws, needs->gsvs_ring_size, 4096, RADEON_DOMAIN_VRAM, ring_bo_flags,
4409 if (!queue->ring_info.tess_rings && needs->tess_rings) {
4417 if (!queue->ring_info.task_rings && needs->task_rings) {
4421 * The draw ring needs to be zero-initialized otherwise the ready bits will be incorrect.
4437 if (!queue->ring_info.mesh_scratch_ring && needs->mesh_scratch_ring) {
4447 if (!queue->ring_info.gds && needs->gds) {
4459 if (!queue->ring_info.gds_oa && needs->gds_oa) {
4515 radv_fill_shader_rings(device, map, add_sample_positions, needs->esgs_ring_size,
4516 esgs_ring_bo, needs->gsvs_ring_size, gsvs_ring_bo, tess_rings_bo,
4530 if (!needs->scratch_size_per_wave && !needs->compute_scratch_size_per_wave &&
4531 !needs->esgs_ring_size && !needs->gsvs_ring_size && !needs->tess_rings &&
4532 !needs->task_rings && !needs->mesh_scratch_ring && !needs->gds && !needs->gds_oa && !needs->sample_positions)
4562 radv_emit_gs_ring_sizes(device, cs, esgs_ring_bo, needs->esgs_ring_size, gsvs_ring_bo,
4563 needs->gsvs_ring_size);
4567 radv_emit_compute_scratch(device, cs, needs->compute_scratch_size_per_wave,
4568 needs->compute_scratch_waves, compute_scratch_bo);
4569 radv_emit_graphics_scratch(device, cs, needs->scratch_size_per_wave, needs->scratch_waves,
4582 radv_emit_compute_scratch(device, cs, needs->compute_scratch_size_per_wave,
4583 needs->compute_scratch_waves, compute_scratch_bo);
4665 queue->ring_info = *needs;
4892 /* Figure out the needs of the current submission.
4898 struct radv_queue_ring_info needs = queue->ring_info;
4903 needs.scratch_size_per_wave =
4904 MAX2(needs.scratch_size_per_wave, cmd_buffer->scratch_size_per_wave_needed);
4905 needs.scratch_waves = MAX2(needs.scratch_waves, cmd_buffer->scratch_waves_wanted);
4906 needs.compute_scratch_size_per_wave = MAX2(needs.compute_scratch_size_per_wave,
4908 needs.compute_scratch_waves =
4909 MAX2(needs.compute_scratch_waves, cmd_buffer->compute_scratch_waves_wanted);
4910 needs.esgs_ring_size = MAX2(needs.esgs_ring_size, cmd_buffer->esgs_ring_size_needed);
4911 needs.gsvs_ring_size = MAX2(needs.gsvs_ring_size, cmd_buffer->gsvs_ring_size_needed);
4912 needs.tess_rings |= cmd_buffer->tess_rings_needed;
4913 needs.task_rings |= cmd_buffer->task_rings_needed;
4914 needs.mesh_scratch_ring |= cmd_buffer->mesh_scratch_ring_needed;
4915 needs.gds |= cmd_buffer->gds_needed;
4916 needs.gds_oa |= cmd_buffer->gds_oa_needed;
4917 needs.sample_positions |= cmd_buffer->sample_positions_needed;
4922 needs.scratch_waves = needs.scratch_size_per_wave
4923 ? MIN2(needs.scratch_waves, UINT32_MAX / needs.scratch_size_per_wave)
4925 needs.compute_scratch_waves =
4926 needs.compute_scratch_size_per_wave
4927 ? MIN2(needs.compute_scratch_waves, UINT32_MAX / needs.compute_scratch_size_per_wave)
4930 /* Return early if we already match these needs.
4935 queue->ring_info.scratch_size_per_wave == needs.scratch_size_per_wave &&
4936 queue->ring_info.scratch_waves == needs.scratch_waves &&
4937 queue->ring_info.compute_scratch_size_per_wave == needs.compute_scratch_size_per_wave &&
4938 queue->ring_info.compute_scratch_waves == needs.compute_scratch_waves &&
4939 queue->ring_info.esgs_ring_size == needs.esgs_ring_size &&
4940 queue->ring_info.gsvs_ring_size == needs.gsvs_ring_size &&
4941 queue->ring_info.tess_rings == needs.tess_rings &&
4942 queue->ring_info.task_rings == needs.task_rings &&
4943 queue->ring_info.mesh_scratch_ring == needs.mesh_scratch_ring &&
4944 queue->ring_info.gds == needs.gds &&
4945 queue->ring_info.gds_oa == needs.gds_oa &&
4946 queue->ring_info.sample_positions == needs.sample_positions)
4949 return radv_update_preamble_cs(queue, device, &needs);
4969 struct radv_queue_ring_info needs = queue->ace_internal_state->ring_info;
4970 needs.compute_scratch_size_per_wave = queue->state.ring_info.scratch_size_per_wave;
4971 needs.compute_scratch_waves = queue->state.ring_info.scratch_waves;
4972 needs.task_rings = queue->state.ring_info.task_rings;
4974 return radv_update_preamble_cs(queue->ace_internal_state, queue->device, &needs);
5729 * the root ids of instances. The hardware also needs bvh nodes to