diff options
author | Jason Ekstrand <[email protected]> | 2019-12-06 18:26:59 -0600 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2019-12-07 04:03:35 +0000 |
commit | 0f60aa4037dfb6aa86d5b9524fe649f13b2b8825 (patch) | |
tree | e965d7c301959714404005166153a5a9b663511c | |
parent | bce1c3c668223254c4cb4ba4e83aed8c3e22b469 (diff) |
anv: Re-emit all compute state on pipeline switch
It's a very odd case to hit in the real world. However, there are some
CTS tests which switch back and forth between dispatch and clear without
changing the pipeline.
Fixes: bc612536eb2f "anv: Emit a dummy MEDIA_VFE_STATE before switching..."
Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]>
-rw-r--r-- | src/intel/vulkan/genX_cmd_buffer.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index c764011eb5f..50c9d9ed12a 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -4073,6 +4073,13 @@ genX(flush_pipeline_select)(struct anv_cmd_buffer *cmd_buffer, vfe.NumberofURBEntries = 2; vfe.URBEntryAllocationSize = 2; } + + /* We just emitted a dummy MEDIA_VFE_STATE so now that packet is + * invalid. Set the compute pipeline to dirty to force a re-emit of the + * pipeline in case we get back-to-back dispatch calls with the same + * pipeline and a PIPELINE_SELECT in between. + */ + cmd_buffer->state.compute.pipeline_dirty = true; } #endif |