cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_POST_SYNC_BIT;
genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer);
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.DestinationAddressType = DAT_PPGTT;
- pc.PostSyncOperation = WritePSDepthCount;
- pc.DepthStallEnable = true;
- pc.Address = addr;
-
- if (GFX_VER == 9 && cmd_buffer->device->info->gt == 4)
- pc.CommandStreamerStallEnable = true;
- }
+ bool cs_stall_needed = (GFX_VER == 9 && cmd_buffer->device->info->gt == 4);
+ genX(batch_emit_pipe_control_write)
+ (&cmd_buffer->batch, cmd_buffer->device->info, WritePSDepthCount, addr, 0,
+ ANV_PIPE_DEPTH_STALL_BIT | (cs_stall_needed ? ANV_PIPE_CS_STALL_BIT : 0));
}
static void
cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_POST_SYNC_BIT;
genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer);
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.DestinationAddressType = DAT_PPGTT;
- pc.PostSyncOperation = WriteImmediateData;
- pc.Address = addr;
- pc.ImmediateData = available;
- }
+ genX(batch_emit_pipe_control_write)
+ (&cmd_buffer->batch, cmd_buffer->device->info, WriteImmediateData, addr,
+ available, ANV_PIPE_CS_STALL_BIT);
}
/**
break;
case VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT:
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
mi_store(&b, mi_mem64(anv_address_add(query_addr, 8)),
mi_reg64(GENX(CL_INVOCATION_COUNT_num)));
break;
case VK_QUERY_TYPE_PIPELINE_STATISTICS: {
/* TODO: This might only be necessary for certain stats */
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
uint32_t statistics = pool->pipeline_statistics;
uint32_t offset = 8;
}
case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT:
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
emit_xfb_query(&b, index, anv_address_add(query_addr, 8));
break;
const enum intel_engine_class engine_class = cmd_buffer->queue_family->engine_class;
mi_self_mod_barrier(&b, devinfo->engine_class_prefetch[engine_class]);
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
cmd_buffer->perf_query_pool = pool;
cmd_buffer->perf_reloc_idx = 0;
}
case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL: {
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
emit_perf_intel_query(cmd_buffer, pool, &b, query_addr, false);
break;
}
/* Ensure previous commands have completed before capturing the register
* value.
*/
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
mi_store(&b, mi_mem64(anv_address_add(query_addr, 16)),
mi_reg64(GENX(CL_INVOCATION_COUNT_num)));
case VK_QUERY_TYPE_PIPELINE_STATISTICS: {
/* TODO: This might only be necessary for certain stats */
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
uint32_t statistics = pool->pipeline_statistics;
uint32_t offset = 16;
}
case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT:
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
-
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
emit_xfb_query(&b, index, anv_address_add(query_addr, 16));
emit_query_mi_availability(&b, query_addr, true);
break;
case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: {
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
cmd_buffer->perf_query_pool = pool;
if (!khr_perf_query_ensure_relocs(cmd_buffer))
}
case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL: {
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.CommandStreamerStallEnable = true;
- pc.StallAtPixelScoreboard = true;
- }
+ genX(batch_emit_pipe_control)(&cmd_buffer->batch,
+ cmd_buffer->device->info,
+ ANV_PIPE_CS_STALL_BIT |
+ ANV_PIPE_STALL_AT_SCOREBOARD_BIT);
uint32_t marker_offset = intel_perf_marker_offset();
mi_store(&b, mi_mem64(anv_address_add(query_addr, marker_offset)),
mi_imm(cmd_buffer->intel_perf_marker));
cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_POST_SYNC_BIT;
genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer);
- anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
- pc.DestinationAddressType = DAT_PPGTT;
- pc.PostSyncOperation = WriteTimestamp;
- pc.Address = anv_address_add(query_addr, 8);
+ bool cs_stall_needed =
+ (GFX_VER == 9 && cmd_buffer->device->info->gt == 4);
+ genX(batch_emit_pipe_control_write)
+ (&cmd_buffer->batch, cmd_buffer->device->info, WriteTimestamp,
+ anv_address_add(query_addr, 8), 0,
+ cs_stall_needed ? ANV_PIPE_CS_STALL_BIT : 0);
- if (GFX_VER == 9 && cmd_buffer->device->info->gt == 4)
- pc.CommandStreamerStallEnable = true;
- }
emit_query_pc_availability(cmd_buffer, query_addr, true);
}