diff --git a/src/intel/vulkan/anv_genX.h b/src/intel/vulkan/anv_genX.h index 10a72fff399..1dfbf3c2989 100644 --- a/src/intel/vulkan/anv_genX.h +++ b/src/intel/vulkan/anv_genX.h @@ -81,6 +81,7 @@ void genX(cmd_buffer_emit_hashing_mode)(struct anv_cmd_buffer *cmd_buffer, void genX(flush_pipeline_select_3d)(struct anv_cmd_buffer *cmd_buffer); void genX(flush_pipeline_select_gpgpu)(struct anv_cmd_buffer *cmd_buffer); +void genX(emit_pipeline_select)(struct anv_batch *batch, uint32_t pipeline); enum anv_pipe_bits genX(emit_apply_pipe_flushes)(struct anv_batch *batch, diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index de3e6f3c57a..5753bca7992 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -6274,6 +6274,19 @@ genX(CmdTraceRaysIndirect2KHR)( #endif /* GFX_VERx10 >= 125 */ +/* Only emit PIPELINE_SELECT, for the whole mode switch and flushing use + * flush_pipeline_select() + */ +void +genX(emit_pipeline_select)(struct anv_batch *batch, uint32_t pipeline) +{ + anv_batch_emit(batch, GENX(PIPELINE_SELECT), ps) { + ps.MaskBits = GFX_VER >= 12 ? 0x13 : 3; + ps.MediaSamplerDOPClockGateEnable = GFX_VER >= 12; + ps.PipelineSelection = pipeline; + } +} + static void genX(flush_pipeline_select)(struct anv_cmd_buffer *cmd_buffer, uint32_t pipeline) @@ -6345,11 +6358,7 @@ genX(flush_pipeline_select)(struct anv_cmd_buffer *cmd_buffer, "flush and invalidate for PIPELINE_SELECT"); genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer); - anv_batch_emit(&cmd_buffer->batch, GENX(PIPELINE_SELECT), ps) { - ps.MaskBits = GFX_VER >= 12 ? 0x13 : 3; - ps.MediaSamplerDOPClockGateEnable = GFX_VER >= 12; - ps.PipelineSelection = pipeline; - } + genX(emit_pipeline_select)(&cmd_buffer->batch, pipeline); #if GFX_VER == 9 if (devinfo->platform == INTEL_PLATFORM_GLK) { diff --git a/src/intel/vulkan/genX_gpu_memcpy.c b/src/intel/vulkan/genX_gpu_memcpy.c index 15bc0dd2a2d..5108d9d9747 100644 --- a/src/intel/vulkan/genX_gpu_memcpy.c +++ b/src/intel/vulkan/genX_gpu_memcpy.c @@ -243,12 +243,7 @@ genX(emit_so_memcpy_init)(struct anv_memcpy_state *state, const struct intel_l3_config *cfg = intel_get_default_l3_config(device->info); genX(emit_l3_config)(batch, device, cfg); - - anv_batch_emit(batch, GENX(PIPELINE_SELECT), ps) { - ps.MaskBits = GFX_VER >= 12 ? 0x13 : 3; - ps.MediaSamplerDOPClockGateEnable = GFX_VER >= 12; - ps.PipelineSelection = _3D; - } + genX(emit_pipeline_select)(batch, _3D); emit_common_so_memcpy(batch, device, cfg); } diff --git a/src/intel/vulkan/genX_state.c b/src/intel/vulkan/genX_state.c index 554b0f21654..21bff0c34b4 100644 --- a/src/intel/vulkan/genX_state.c +++ b/src/intel/vulkan/genX_state.c @@ -274,11 +274,7 @@ init_render_queue_state(struct anv_queue *queue) .end = (void *) cmds + sizeof(cmds), }; - anv_batch_emit(&batch, GENX(PIPELINE_SELECT), ps) { - ps.MaskBits = GFX_VER >= 12 ? 0x13 : 3; - ps.MediaSamplerDOPClockGateEnable = GFX_VER >= 12; - ps.PipelineSelection = _3D; - } + genX(emit_pipeline_select)(&batch, _3D); #if GFX_VER == 9 anv_batch_write_reg(&batch, GENX(CACHE_MODE_1), cm1) { @@ -490,14 +486,7 @@ init_compute_queue_state(struct anv_queue *queue) batch.start = batch.next = cmds; batch.end = (void *) cmds + sizeof(cmds); - anv_batch_emit(&batch, GENX(PIPELINE_SELECT), ps) { - ps.MaskBits = 3; -#if GFX_VER >= 11 - ps.MaskBits |= 0x10; - ps.MediaSamplerDOPClockGateEnable = true; -#endif - ps.PipelineSelection = GPGPU; - } + genX(emit_pipeline_select)(&batch, GPGPU); init_common_queue_state(queue, &batch);