[Mesa-dev] [PATCH] i965: Only enable ARB_query_buffer_object for newer kernels on Haswell.

Jordan Justen jordan.l.justen at intel.com
Thu May 5 15:17:03 UTC 2016


On 2016-05-05 03:15:51, Kenneth Graunke wrote:
> On Haswell, we need version 6 of the kernel command parser in order to
> write the math registers.  Our implementation of ARB_query_buffer_object
> heavily relies on MI_MATH, so we should only advertise it when MI_MATH
> is available.
> 

Doh! Command Parser!! :(

> We're going to want to use MI_MATH in more places in the future.
> To make checking for it easier, introduce a screen->has_mi_math flag.
> 
> Cc: Jordan Justen <jljusten at gmail.com>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/intel_extensions.c | 2 +-
>  src/mesa/drivers/dri/i965/intel_screen.c     | 8 ++++++++
>  src/mesa/drivers/dri/i965/intel_screen.h     | 5 +++++
>  3 files changed, 14 insertions(+), 1 deletion(-)
> 
> Note: kernel command parser version 7 isn't actually a real thing yet.
> You need the patch I just sent to intel-gfx:
> [PATCH] drm/i915: Allow MI_LOAD_REGISTER_REG between whitelisted registers.
> 
> Also, Piglit's qbo test's
> query-GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN-ASYNC subtest fails for me
> on Haswell.  I haven't looked into why yet.
> 
> diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c
> index 588df1a..7794c2f 100644
> --- a/src/mesa/drivers/dri/i965/intel_extensions.c
> +++ b/src/mesa/drivers/dri/i965/intel_extensions.c
> @@ -366,7 +366,7 @@ intelInitExtensions(struct gl_context *ctx)
>        }
>     }
>  
> -   if (brw->gen >= 8 || brw->is_haswell) {
> +   if (brw->intelScreen->has_mi_math) {

Should we bump the check to gen >= 8 for now?

With just changing the check to not include hsw:

Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

>        ctx->Extensions.ARB_query_buffer_object = true;
>     }
>  
> diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c
> index 878901a..24fe523 100644
> --- a/src/mesa/drivers/dri/i965/intel_screen.c
> +++ b/src/mesa/drivers/dri/i965/intel_screen.c
> @@ -1541,6 +1541,14 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
>     if (ret == -1)
>        intelScreen->cmd_parser_version = 0;
>  
> +   /* Haswell requires command parser version 6 in order to write to the
> +    * MI_MATH GPR registers, and version 7 in order to use
> +    * MI_LOAD_REGISTER_REG (which all users of MI_MATH use).
> +    */
> +   intelScreen->has_mi_math = intelScreen->devinfo->gen >= 8 ||
> +                              (intelScreen->devinfo->is_haswell &&
> +                               intelScreen->cmd_parser_version >= 7);

Do you think has_mi_math should imply LRR? Command parser version 6
should allow MI_MATH to be used. I guess the Vulkan driver uses
MI_MATH without LRR.

-Jordan

> +
>     psp->extensions = !intelScreen->has_context_reset_notification
>        ? intelScreenExtensions : intelRobustScreenExtensions;
>  
> diff --git a/src/mesa/drivers/dri/i965/intel_screen.h b/src/mesa/drivers/dri/i965/intel_screen.h
> index 01d45d0..8000c4c 100644
> --- a/src/mesa/drivers/dri/i965/intel_screen.h
> +++ b/src/mesa/drivers/dri/i965/intel_screen.h
> @@ -56,6 +56,11 @@ struct intel_screen
>     bool has_resource_streamer;
>  
>     /**
> +    * Does the current hardware and kernel support MI_MATH?
> +    */
> +   bool has_mi_math;
> +
> +   /**
>      * Does the kernel support context reset notifications?
>      */
>     bool has_context_reset_notification;
> -- 
> 2.8.2
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list