mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-11 17:50:32 +01:00
anv/genX: Add flush_pipeline_select_gpgpu
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
41af9b2e51
commit
1b126305de
4 changed files with 30 additions and 27 deletions
|
|
@ -40,6 +40,7 @@ void genX(cmd_buffer_set_subpass)(struct anv_cmd_buffer *cmd_buffer,
|
|||
struct anv_subpass *subpass);
|
||||
|
||||
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(cmd_buffer_config_l3)(struct anv_cmd_buffer *cmd_buffer,
|
||||
bool enable_slm);
|
||||
|
|
|
|||
|
|
@ -365,11 +365,7 @@ genX(cmd_buffer_flush_compute_state)(struct anv_cmd_buffer *cmd_buffer)
|
|||
bool needs_slm = cs_prog_data->base.total_shared > 0;
|
||||
genX(cmd_buffer_config_l3)(cmd_buffer, needs_slm);
|
||||
|
||||
if (cmd_buffer->state.current_pipeline != GPGPU) {
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(PIPELINE_SELECT),
|
||||
.PipelineSelection = GPGPU);
|
||||
cmd_buffer->state.current_pipeline = GPGPU;
|
||||
}
|
||||
genX(flush_pipeline_select_gpgpu)(cmd_buffer);
|
||||
|
||||
if (cmd_buffer->state.compute_dirty & ANV_CMD_DIRTY_PIPELINE)
|
||||
anv_batch_emit_batch(&cmd_buffer->batch, &pipeline->batch);
|
||||
|
|
|
|||
|
|
@ -446,28 +446,7 @@ genX(cmd_buffer_flush_compute_state)(struct anv_cmd_buffer *cmd_buffer)
|
|||
bool needs_slm = cs_prog_data->base.total_shared > 0;
|
||||
genX(cmd_buffer_config_l3)(cmd_buffer, needs_slm);
|
||||
|
||||
if (cmd_buffer->state.current_pipeline != GPGPU) {
|
||||
#if GEN_GEN < 10
|
||||
/* From the Broadwell PRM, Volume 2a: Instructions, PIPELINE_SELECT:
|
||||
*
|
||||
* Software must clear the COLOR_CALC_STATE Valid field in
|
||||
* 3DSTATE_CC_STATE_POINTERS command prior to send a PIPELINE_SELECT
|
||||
* with Pipeline Select set to GPGPU.
|
||||
*
|
||||
* The internal hardware docs recommend the same workaround for Gen9
|
||||
* hardware too.
|
||||
*/
|
||||
anv_batch_emit(&cmd_buffer->batch,
|
||||
GENX(3DSTATE_CC_STATE_POINTERS));
|
||||
#endif
|
||||
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(PIPELINE_SELECT),
|
||||
#if GEN_GEN >= 9
|
||||
.MaskBits = 3,
|
||||
#endif
|
||||
.PipelineSelection = GPGPU);
|
||||
cmd_buffer->state.current_pipeline = GPGPU;
|
||||
}
|
||||
genX(flush_pipeline_select_gpgpu)(cmd_buffer);
|
||||
|
||||
if (cmd_buffer->state.compute_dirty & ANV_CMD_DIRTY_PIPELINE)
|
||||
anv_batch_emit_batch(&cmd_buffer->batch, &pipeline->batch);
|
||||
|
|
|
|||
|
|
@ -777,6 +777,33 @@ genX(flush_pipeline_select_3d)(struct anv_cmd_buffer *cmd_buffer)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
genX(flush_pipeline_select_gpgpu)(struct anv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
if (cmd_buffer->state.current_pipeline != GPGPU) {
|
||||
#if GEN_GEN >= 8 && GEN_GEN < 10
|
||||
/* From the Broadwell PRM, Volume 2a: Instructions, PIPELINE_SELECT:
|
||||
*
|
||||
* Software must clear the COLOR_CALC_STATE Valid field in
|
||||
* 3DSTATE_CC_STATE_POINTERS command prior to send a PIPELINE_SELECT
|
||||
* with Pipeline Select set to GPGPU.
|
||||
*
|
||||
* The internal hardware docs recommend the same workaround for Gen9
|
||||
* hardware too.
|
||||
*/
|
||||
anv_batch_emit(&cmd_buffer->batch,
|
||||
GENX(3DSTATE_CC_STATE_POINTERS));
|
||||
#endif
|
||||
|
||||
anv_batch_emit(&cmd_buffer->batch, GENX(PIPELINE_SELECT),
|
||||
#if GEN_GEN >= 9
|
||||
.MaskBits = 3,
|
||||
#endif
|
||||
.PipelineSelection = GPGPU);
|
||||
cmd_buffer->state.current_pipeline = GPGPU;
|
||||
}
|
||||
}
|
||||
|
||||
struct anv_state
|
||||
genX(cmd_buffer_alloc_null_surface_state)(struct anv_cmd_buffer *cmd_buffer,
|
||||
struct anv_framebuffer *fb)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue