anv/gen8: Stall when needed in Cmd(Set|Reset)Event
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Chad Versace <chadversary@chromium.org> Cc: "13.0" <mesa-stable@lists.freedesktop.org>
This commit is contained in:
@@ -513,6 +513,25 @@ genX(cmd_buffer_emit_hz_op)(struct anv_cmd_buffer *cmd_buffer,
|
||||
}
|
||||
}
|
||||
|
||||
/* Set of stage bits for which are pipelined, i.e. they get queued by the
|
||||
* command streamer for later execution.
|
||||
*/
|
||||
#define ANV_PIPELINE_STAGE_PIPELINED_BITS \
|
||||
(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT | \
|
||||
VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | \
|
||||
VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT | \
|
||||
VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT | \
|
||||
VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT | \
|
||||
VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT | \
|
||||
VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT | \
|
||||
VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT | \
|
||||
VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT | \
|
||||
VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT | \
|
||||
VK_PIPELINE_STAGE_TRANSFER_BIT | \
|
||||
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT | \
|
||||
VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT | \
|
||||
VK_PIPELINE_STAGE_ALL_COMMANDS_BIT)
|
||||
|
||||
void genX(CmdSetEvent)(
|
||||
VkCommandBuffer commandBuffer,
|
||||
VkEvent _event,
|
||||
@@ -522,6 +541,11 @@ void genX(CmdSetEvent)(
|
||||
ANV_FROM_HANDLE(anv_event, event, _event);
|
||||
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
|
||||
if (stageMask & ANV_PIPELINE_STAGE_PIPELINED_BITS) {
|
||||
pc.StallAtPixelScoreboard = true;
|
||||
pc.CommandStreamerStallEnable = true;
|
||||
}
|
||||
|
||||
pc.DestinationAddressType = DAT_PPGTT,
|
||||
pc.PostSyncOperation = WriteImmediateData,
|
||||
pc.Address = (struct anv_address) {
|
||||
@@ -541,6 +565,11 @@ void genX(CmdResetEvent)(
|
||||
ANV_FROM_HANDLE(anv_event, event, _event);
|
||||
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
|
||||
if (stageMask & ANV_PIPELINE_STAGE_PIPELINED_BITS) {
|
||||
pc.StallAtPixelScoreboard = true;
|
||||
pc.CommandStreamerStallEnable = true;
|
||||
}
|
||||
|
||||
pc.DestinationAddressType = DAT_PPGTT;
|
||||
pc.PostSyncOperation = WriteImmediateData;
|
||||
pc.Address = (struct anv_address) {
|
||||
|
Reference in New Issue
Block a user