[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