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/brw_device_info.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/brw_device_info.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_device_info.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_device_info.c b/src/mesa/drivers/dri/i965/brw_device_info.c index bdbe78f..928bf99 100644 --- a/src/mesa/drivers/dri/i965/brw_device_info.c +++ b/src/mesa/drivers/dri/i965/brw_device_info.c @@ -166,7 +166,8 @@ static const struct brw_device_info brw_device_info_byt = { #define HSW_FEATURES \ GEN7_FEATURES, \ - .is_haswell = true + .is_haswell = true, \ + .supports_simd16_3src = true static const struct brw_device_info brw_device_info_hsw_gt1 = { HSW_FEATURES, .gt = 1, @@ -225,6 +226,7 @@ static const struct brw_device_info brw_device_info_hsw_gt3 = { .must_use_separate_stencil = true, \ .has_llc = true, \ .has_pln = true, \ + .supports_simd16_3src = true, \ .max_vs_threads = 504, \ .max_hs_threads = 504, \ .max_ds_threads = 504, \ @@ -305,27 +307,42 @@ static const struct brw_device_info brw_device_info_chv = { .max_gs_entries = 640, \ } +static const struct brw_device_info brw_device_info_skl_early = { + GEN9_FEATURES, .gt = 1, + .supports_simd16_3src = false, +}; + static const struct brw_device_info brw_device_info_skl_gt1 = { - GEN9_FEATURES, .gt = 1 + GEN9_FEATURES, .gt = 1, + .supports_simd16_3src = true, }; static const struct brw_device_info brw_device_info_skl_gt2 = { - GEN9_FEATURES, .gt = 2 + GEN9_FEATURES, .gt = 2, + .supports_simd16_3src = true, }; static const struct brw_device_info brw_device_info_skl_gt3 = { - GEN9_FEATURES, .gt = 3 + GEN9_FEATURES, .gt = 3, + .supports_simd16_3src = true, }; const struct brw_device_info * -brw_get_device_info(int devid) +brw_get_device_info(int devid, int revision) { + const struct brw_device_info *devinfo; switch (devid) { #undef CHIPSET -#define CHIPSET(id, family, name) case id: return &brw_device_info_##family; +#define CHIPSET(id, family, name) \ + case id: devinfo = &brw_device_info_##family; break; #include "pci_ids/i965_pci_ids.h" default: fprintf(stderr, "i965_dri.so does not support the 0x%x PCI ID.\n", devid); return NULL; } + + if (devinfo->gen == 9 && (revision == 2 || revision == 3 || revision == -1)) + return &brw_device_info_skl_early; + + return devinfo; } |