sna: Support efficient cursor updates for old machines
Given a kernel patch to fix coherency of physical objects, we can use a more efficient method for updating cursors. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
ee7d2e0a8e
commit
1217dbc88e
|
|
@ -4366,6 +4366,7 @@ sna_cursor_pre_init(struct sna *sna)
|
|||
uint64_t name;
|
||||
uint64_t value;
|
||||
} cap;
|
||||
int v;
|
||||
|
||||
if (sna->mode.num_real_crtc == 0)
|
||||
return;
|
||||
|
|
@ -4374,6 +4375,8 @@ sna_cursor_pre_init(struct sna *sna)
|
|||
#define DRM_CAP_CURSOR_WIDTH 8
|
||||
#define DRM_CAP_CURSOR_HEIGHT 9
|
||||
|
||||
#define I915_PARAM_HAS_COHERENT_PHYS_GTT 29
|
||||
|
||||
sna->cursor.max_size = 64;
|
||||
|
||||
cap.value = 0;
|
||||
|
|
@ -4387,7 +4390,17 @@ sna_cursor_pre_init(struct sna *sna)
|
|||
assert(sna->cursor.max_size == cap.value);
|
||||
#endif
|
||||
|
||||
sna->cursor.use_gtt = sna->kgem.gen >= 033;
|
||||
v = -1; /* No param uses the sign bit, reserve it for errors */
|
||||
if (sna->kgem.gen >= 033) {
|
||||
v = 1;
|
||||
} else {
|
||||
drm_i915_getparam_t gp = {
|
||||
I915_PARAM_HAS_COHERENT_PHYS_GTT,
|
||||
&v,
|
||||
};
|
||||
(void)drmIoctl(sna->kgem.fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
||||
}
|
||||
sna->cursor.use_gtt = v > 0;
|
||||
DBG(("%s: cursor updates use_gtt?=%d\n",
|
||||
__FUNCTION__, sna->cursor.use_gtt));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue