diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2015-04-16 17:52:03 -0700 |
---|---|---|
committer | Jason Ekstrand <jason.ekstrand@intel.com> | 2015-04-22 16:00:33 -0700 |
commit | 38dc2ddab4a25398ebd07e1ecf52daa7466b6963 (patch) | |
tree | 4226c647dc75ac9d7c9b1d5dfed25ccf884fb82b /src/mesa/drivers/dri/i965/intel_screen.c | |
parent | 85db2aca52acd7f05e1d8cb3300c64f0307e39a9 (diff) | |
download | external_mesa3d-38dc2ddab4a25398ebd07e1ecf52daa7466b6963.zip external_mesa3d-38dc2ddab4a25398ebd07e1ecf52daa7466b6963.tar.gz external_mesa3d-38dc2ddab4a25398ebd07e1ecf52daa7466b6963.tar.bz2 |
i965/device_info: Add a supports_simd16_3src flag
This also involves moving revision checking to screen creation time and
passing that into brw_get_device_info so that we can get the right
device_info for early versions of SKL. Since the only place we used
revision was to check for SIMD16 3-src instruction support, it's safe to
remove the revision field from brw_context.
Reviewed-by: Matt Turner <mattst88@gmail.com>
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_screen.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_screen.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index 5a9207a..f5e15a0 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -1304,6 +1304,29 @@ set_max_gl_versions(struct intel_screen *screen) } } +/* drop when libdrm 2.4.61 is released */ +#ifndef I915_PARAM_REVISION +#define I915_PARAM_REVISION 32 +#endif + +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; +} + /** * This is the driver specific part of the createNewScreen entry point. * Called when using DRI2. @@ -1340,7 +1363,8 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp) return false; intelScreen->deviceID = drm_intel_bufmgr_gem_get_devid(intelScreen->bufmgr); - intelScreen->devinfo = brw_get_device_info(intelScreen->deviceID); + intelScreen->devinfo = brw_get_device_info(intelScreen->deviceID, + brw_get_revision(psp->fd)); if (!intelScreen->devinfo) return false; |