On Tuesday, May 8, 2018 10:09:30 AM PDT Lionel Landwerlin wrote:
> We want to make sure that all indirect state data has been loaded into
> the EUs before disable the pointers.
> 
> Signed-off-by: Lionel Landwerlin <lionel.g.landwer...@intel.com>
> Fixes: 78c125af3904c ("anv/gen10: Ignore push constant packets during context 
> restore.")
> ---
>  src/intel/vulkan/genX_cmd_buffer.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/src/intel/vulkan/genX_cmd_buffer.c 
> b/src/intel/vulkan/genX_cmd_buffer.c
> index 2882cf36506..526e18af108 100644
> --- a/src/intel/vulkan/genX_cmd_buffer.c
> +++ b/src/intel/vulkan/genX_cmd_buffer.c
> @@ -1420,14 +1420,21 @@ genX(BeginCommandBuffer)(
>   * context restore, so the mentioned hang doesn't happen. However,
>   * software must program push constant commands for all stages prior to
>   * rendering anything. So we flag them dirty in BeginCommandBuffer.
> + *
> + * Finally, we also make sure to stall at pixel scoreboard to make sure the
> + * constants have been loaded into the EUs prior to disable the push 
> constants
> + * so that it doesn't hang a previous 3DPRIMITIVE.
>   */
>  static void
>  emit_isp_disable(struct anv_cmd_buffer *cmd_buffer)
>  {
>     anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
> -         pc.IndirectStatePointersDisable = true;
> +         pc.StallAtPixelScoreboard = true;
>           pc.CommandStreamerStallEnable = true;
>     }
> +   anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
> +         pc.IndirectStatePointersDisable = true;
> +   }
>  }
>  
>  VkResult
> 

Compared to GL, this is missing the immediate write.  Not sure if that
matters or not.  On Haswell, it's also missing a register write.

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to