anv: Avoid emitting PIPE_CONTROL command for copy/video queue
Avoid emitting PIPE_CONTROL instruction since Copy/Video doesn't support it. Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26121>
This commit is contained in:
@@ -90,6 +90,10 @@ convert_pc_to_bits(struct GENX(PIPE_CONTROL) *pc) {
|
||||
void
|
||||
genX(cmd_buffer_emit_state_base_address)(struct anv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
if (anv_cmd_buffer_is_blitter_queue(cmd_buffer) ||
|
||||
anv_cmd_buffer_is_video_queue(cmd_buffer))
|
||||
return;
|
||||
|
||||
struct anv_device *device = cmd_buffer->device;
|
||||
uint32_t mocs = isl_mocs(&device->isl_dev, 0, false);
|
||||
|
||||
@@ -2849,6 +2853,10 @@ genX(batch_emit_pipe_control_write)(struct anv_batch *batch,
|
||||
enum anv_pipe_bits bits,
|
||||
const char *reason)
|
||||
{
|
||||
if ((batch->engine_class == INTEL_ENGINE_CLASS_COPY) ||
|
||||
(batch->engine_class == INTEL_ENGINE_CLASS_VIDEO))
|
||||
unreachable("Trying to emit unsupported PIPE_CONTROL command.");
|
||||
|
||||
/* XXX - insert all workarounds and GFX specific things below. */
|
||||
|
||||
/* Wa_14014966230: For COMPUTE Workload - Any PIPE_CONTROL command with
|
||||
@@ -3698,7 +3706,8 @@ genX(CmdExecuteCommands)(
|
||||
}
|
||||
|
||||
#if INTEL_NEEDS_WA_16014538804
|
||||
if (intel_needs_workaround(device->info, 16014538804))
|
||||
if (anv_cmd_buffer_is_render_queue(container) &&
|
||||
intel_needs_workaround(device->info, 16014538804))
|
||||
anv_batch_emit(&container->batch, GENX(PIPE_CONTROL), pc);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -622,6 +622,9 @@ genX(cmd_buffer_emit_indirect_generated_draws)(struct anv_cmd_buffer *cmd_buffer
|
||||
static void
|
||||
genX(cmd_buffer_flush_generated_draws)(struct anv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
if (!anv_cmd_buffer_is_render_queue(cmd_buffer))
|
||||
return;
|
||||
|
||||
/* No return address setup means we don't have to do anything */
|
||||
if (anv_address_is_null(cmd_buffer->generation.return_addr))
|
||||
return;
|
||||
|
||||
@@ -1906,6 +1906,9 @@ genX(cmd_buffer_flush_gfx_hw_state)(struct anv_cmd_buffer *cmd_buffer)
|
||||
void
|
||||
genX(cmd_buffer_enable_pma_fix)(struct anv_cmd_buffer *cmd_buffer, bool enable)
|
||||
{
|
||||
if (!anv_cmd_buffer_is_render_queue(cmd_buffer))
|
||||
return;
|
||||
|
||||
if (cmd_buffer->state.pma_fix_enabled == enable)
|
||||
return;
|
||||
|
||||
|
||||
@@ -1166,6 +1166,9 @@ VkResult genX(CreateSampler)(
|
||||
void
|
||||
genX(apply_task_urb_workaround)(struct anv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
if (!anv_cmd_buffer_is_render_queue(cmd_buffer))
|
||||
return;
|
||||
|
||||
#if GFX_VERx10 >= 125
|
||||
const struct intel_device_info *devinfo = &cmd_buffer->device->physical->info;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user