intel: query for LLC support
This adds support for querying the kernel about the LLC support in the hardware. In case the ioctl fails, we assume that it is present on GEN6 and GEN7. v2: fix the return code checking Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com>main
parent
82c6938d23
commit
151cdcfe68
|
@ -287,6 +287,7 @@ typedef struct drm_i915_irq_wait {
|
||||||
#define I915_PARAM_HAS_EXEC_CONSTANTS 14
|
#define I915_PARAM_HAS_EXEC_CONSTANTS 14
|
||||||
#define I915_PARAM_HAS_RELAXED_DELTA 15
|
#define I915_PARAM_HAS_RELAXED_DELTA 15
|
||||||
#define I915_PARAM_HAS_GEN7_SOL_RESET 16
|
#define I915_PARAM_HAS_GEN7_SOL_RESET 16
|
||||||
|
#define I915_PARAM_HAS_LLC 17
|
||||||
|
|
||||||
typedef struct drm_i915_getparam {
|
typedef struct drm_i915_getparam {
|
||||||
int param;
|
int param;
|
||||||
|
|
|
@ -107,6 +107,7 @@ typedef struct _drm_intel_bufmgr_gem {
|
||||||
unsigned int has_bsd : 1;
|
unsigned int has_bsd : 1;
|
||||||
unsigned int has_blt : 1;
|
unsigned int has_blt : 1;
|
||||||
unsigned int has_relaxed_fencing : 1;
|
unsigned int has_relaxed_fencing : 1;
|
||||||
|
unsigned int has_llc : 1;
|
||||||
unsigned int bo_reuse : 1;
|
unsigned int bo_reuse : 1;
|
||||||
bool fenced_relocs;
|
bool fenced_relocs;
|
||||||
} drm_intel_bufmgr_gem;
|
} drm_intel_bufmgr_gem;
|
||||||
|
@ -2358,6 +2359,17 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size)
|
||||||
ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
||||||
bufmgr_gem->has_relaxed_fencing = ret == 0;
|
bufmgr_gem->has_relaxed_fencing = ret == 0;
|
||||||
|
|
||||||
|
gp.param = I915_PARAM_HAS_LLC;
|
||||||
|
ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
||||||
|
if (ret == -EINVAL) {
|
||||||
|
/* Kernel does not supports HAS_LLC query, fallback to GPU
|
||||||
|
* generation detection and assume that we have LLC on GEN6/7
|
||||||
|
*/
|
||||||
|
bufmgr_gem->has_llc = (IS_GEN6(bufmgr_gem->pci_device) |
|
||||||
|
IS_GEN7(bufmgr_gem->pci_device));
|
||||||
|
} else
|
||||||
|
bufmgr_gem->has_llc = ret == 0;
|
||||||
|
|
||||||
if (bufmgr_gem->gen < 4) {
|
if (bufmgr_gem->gen < 4) {
|
||||||
gp.param = I915_PARAM_NUM_FENCES_AVAIL;
|
gp.param = I915_PARAM_NUM_FENCES_AVAIL;
|
||||||
gp.value = &bufmgr_gem->available_fences;
|
gp.value = &bufmgr_gem->available_fences;
|
||||||
|
|
Loading…
Reference in New Issue