[Mesa-dev] [PATCH 01/11] anv: Add support for INTEL_DEBUG=sync, state

Kenneth Graunke kenneth at whitecape.org
Fri Jun 17 21:33:25 UTC 2016


On Friday, June 17, 2016 1:53:18 PM PDT Jason Ekstrand wrote:
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> Cc: "12.0" <mesa-stable at lists.freedesktop.org>
> ---
>  src/intel/vulkan/gen8_cmd_buffer.c | 9 +++++++++
>  src/intel/vulkan/genX_cmd_buffer.c | 9 +++++++++
>  2 files changed, 18 insertions(+)
> 
> diff --git a/src/intel/vulkan/gen8_cmd_buffer.c b/src/intel/vulkan/gen8_cmd_buffer.c
> index df4036a..2600615 100644
> --- a/src/intel/vulkan/gen8_cmd_buffer.c
> +++ b/src/intel/vulkan/gen8_cmd_buffer.c
> @@ -365,6 +365,15 @@ genX(cmd_buffer_flush_compute_state)(struct anv_cmd_buffer *cmd_buffer)
>  
>     assert(pipeline->active_stages == VK_SHADER_STAGE_COMPUTE_BIT);
>  
> +   if (unlikely(INTEL_DEBUG & DEBUG_SYNC)) {
> +      cmd_buffer->state.pending_pipe_bits =
> +         ANV_PIPE_FLUSH_BITS | ANV_PIPE_INVALIDATE_BITS | ANV_PIPE_CS_STALL_BIT;
> +   }
> +
> +   if (unlikely(INTEL_DEBUG & DEBUG_STATE)) {
> +      cmd_buffer->state.dirty = ~0;
> +   }
> +
>     genX(cmd_buffer_config_l3)(cmd_buffer, pipeline);
>  
>     genX(flush_pipeline_select_gpgpu)(cmd_buffer);
> diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c
> index d9acf58..10ed73a 100644
> --- a/src/intel/vulkan/genX_cmd_buffer.c
> +++ b/src/intel/vulkan/genX_cmd_buffer.c
> @@ -417,6 +417,15 @@ genX(cmd_buffer_flush_state)(struct anv_cmd_buffer *cmd_buffer)
>  
>     assert((pipeline->active_stages & VK_SHADER_STAGE_COMPUTE_BIT) == 0);
>  
> +   if (unlikely(INTEL_DEBUG & DEBUG_SYNC)) {
> +      cmd_buffer->state.pending_pipe_bits =
> +         ANV_PIPE_FLUSH_BITS | ANV_PIPE_INVALIDATE_BITS | ANV_PIPE_CS_STALL_BIT;
> +   }
> +
> +   if (unlikely(INTEL_DEBUG & DEBUG_STATE)) {
> +      cmd_buffer->state.dirty = ~0;
> +   }
> +
>     genX(cmd_buffer_config_l3)(cmd_buffer, pipeline);
>  
>     genX(flush_pipeline_select_3d)(cmd_buffer);
> 

NAK.  This reuses established INTEL_DEBUG environment variable flags
but has a completely different meaning for both of them.

In i965, INTEL_DEBUG=sync means: when you flush a batchbuffer and submit
it to the GPU...use i915_gem_object_wait_rendering() to stall until the
GPU has completely finished that batchbuffer's rendering.  Only then
will it return from the glDrawFoo() API call.

This seems more like always_flush_cache=true, which is a driconf option
for some reason.  I don't know why that's a driconf option, as we'd
never want to set it in /etc/drirc.  I suppose we could change that.

In i965, INTEL_DEBUG=state means: periodically print out statistics
about how frequently state is dirtied, i.e.

0x0000000000200000:          429 (BRW_NEW_SURFACES)                             
0x0000000000400000:          429 (BRW_NEW_BINDING_TABLE_POINTERS)               
0x0000000000800000:          572 (BRW_NEW_INDICES)                              
0x0000000001000000:          572 (BRW_NEW_VERTICES)                             
0x0000000004000000:           48 (BRW_NEW_BATCH)

I am definitely a fan of creating an INTEL_DEBUG option for "re-emit all
state"...I've wanted one of those in the i965 driver too.  (Our code for
this is just an if (0) currently.)  Perhaps INTEL_DEBUG=reemit?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160617/f6e56845/attachment-0001.sig>


More information about the mesa-dev mailing list