diff options
author | Eugeni Dodonov <eugeni.dodonov@intel.com> | 2012-01-17 16:16:37 -0200 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2012-01-17 18:40:04 +0000 |
commit | bbd6c8123635899e89911104bf84e1b7d11d66a1 (patch) | |
tree | 2f0ba9c2e1aa40afcbad32a6b8de55a469ce6274 | |
parent | e4efde920bcab980451e79df7d645d1814e5f78d (diff) |
sna: check for LLC support
Instead of checking for CPU generation, use the libdrm-provided
I915_PARAM_HAS_LLC instead.
v2: use a define check to verify if we have I915_PARAM_HAS_LLC.
Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | src/sna/kgem.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/sna/kgem.c b/src/sna/kgem.c index 9c43d96c..c7e6aac0 100644 --- a/src/sna/kgem.c +++ b/src/sna/kgem.c @@ -523,7 +523,7 @@ cpu_cache_size(void) static int gem_param(struct kgem *kgem, int name) { drm_i915_getparam_t gp; - int v = 0; + int v = -1; /* No param uses the sign bit, reserve it for errors */ VG_CLEAR(gp); gp.param = name; @@ -597,7 +597,7 @@ void kgem_init(struct kgem *kgem, int fd, struct pci_device *dev, int gen) if (gen < 40) { if (!DBG_NO_RELAXED_FENCING) { kgem->has_relaxed_fencing = - gem_param(kgem, I915_PARAM_HAS_RELAXED_FENCING); + gem_param(kgem, I915_PARAM_HAS_RELAXED_FENCING) > 0; } } else kgem->has_relaxed_fencing = 1; @@ -605,8 +605,17 @@ void kgem_init(struct kgem *kgem, int fd, struct pci_device *dev, int gen) kgem->has_relaxed_fencing)); kgem->has_llc = false; - if (!DBG_NO_LLC && gen >= 60) - kgem->has_llc = true; + if (!DBG_NO_LLC) { + int has_llc = -1; +#if defined(I915_PARAM_HAS_LLC) /* Expected in libdrm-2.4.31 */ + has_llc = gem_param(kgem, I915_PARAM_HAS_LLC); +#endif + if (has_llc == -1) { + DBG(("%s: no kernel/drm support for HAS_LLC, assuming support for LLC based on GPU generation\n", __FUNCTION__)); + has_llc = gen >= 60; + } + kgem->has_llc = has_llc; + } kgem->has_cpu_bo = kgem->has_llc; DBG(("%s: cpu bo enabled %d: llc? %d\n", __FUNCTION__, kgem->has_cpu_bo, kgem->has_llc)); |