[Mesa-dev] [PATCH 1/2] i965: Store the GPU revision number in brw_context

Kristian Høgsberg krh at bitplanet.net
Wed Mar 4 09:48:21 PST 2015


On Wed, Mar 4, 2015 at 6:32 AM, Neil Roberts <neil at linux.intel.com> wrote:
> brwContextInit now queries the GPU revision number via a new parameter
> for DRM_I915_GETPARAM. This new parameter requires a kernel patch and
> a patch to libdrm. If the kernel doesn't support it then it will
> continue but set the revision number to -1. The intention is to use
> this to implement workarounds that are only needed on certain
> steppings of the GPU.

Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>

> ---
>  configure.ac                            |  2 +-
>  src/mesa/drivers/dri/i965/brw_context.c | 19 +++++++++++++++++++
>  src/mesa/drivers/dri/i965/brw_context.h |  4 ++++
>  3 files changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/configure.ac b/configure.ac
> index c5abbfd..23ac927 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -61,7 +61,7 @@ AC_SUBST([OSMESA_VERSION])
>  dnl Versions for external dependencies
>  LIBDRM_REQUIRED=2.4.38
>  LIBDRM_RADEON_REQUIRED=2.4.56
> -LIBDRM_INTEL_REQUIRED=2.4.52
> +LIBDRM_INTEL_REQUIRED=2.4.59
>  LIBDRM_NVVIEUX_REQUIRED=2.4.33
>  LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41"
>  LIBDRM_FREEDRENO_REQUIRED=2.4.57
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index 786e6f5..18f72d8 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -651,6 +651,24 @@ brw_process_driconf_options(struct brw_context *brw)
>        driQueryOptionb(options, "allow_glsl_extension_directive_midshader");
>  }
>
> +static int
> +brw_get_revision(int fd)
> +{
> +   struct drm_i915_getparam gp;
> +   int revision;
> +   int ret;
> +
> +   memset(&gp, 0, sizeof(gp));
> +   gp.param = I915_PARAM_REVISION;
> +   gp.value = &revision;
> +
> +   ret = drmCommandWriteRead(fd, DRM_I915_GETPARAM, &gp, sizeof(gp));
> +   if (ret)
> +      revision = -1;
> +
> +   return revision;
> +}
> +
>  GLboolean
>  brwCreateContext(gl_api api,
>                  const struct gl_config *mesaVis,
> @@ -709,6 +727,7 @@ brwCreateContext(gl_api api,
>     brw->has_negative_rhw_bug = devinfo->has_negative_rhw_bug;
>     brw->needs_unlit_centroid_workaround =
>        devinfo->needs_unlit_centroid_workaround;
> +   brw->revision = brw_get_revision(sPriv->fd);
>
>     brw->must_use_separate_stencil = screen->hw_must_use_separate_stencil;
>     brw->has_swizzling = screen->hw_has_swizzling;
> diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
> index 682fbe9..10e8274 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.h
> +++ b/src/mesa/drivers/dri/i965/brw_context.h
> @@ -1064,6 +1064,10 @@ struct brw_context
>
>     int gen;
>     int gt;
> +   /* GT revision. This will be -1 if the revision couldn't be determined (eg,
> +    * if the kernel doesn't support the query).
> +    */
> +   int revision;
>
>     bool is_g4x;
>     bool is_baytrail;
> --
> 1.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list