summaryrefslogtreecommitdiff
path: root/lib/igt_draw.c
diff options
context:
space:
mode:
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2021-10-19 11:39:14 +0200
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>2021-10-20 15:27:48 +0200
commit4c80c71d7dec29b6376846ae96bd04dc0b6e34d9 (patch)
tree6329b0832f57442c99702b78c0db7a1e768507c9 /lib/igt_draw.c
parent0b675ec78d70224c16d5d6e432f1bc1fdd07f1d9 (diff)
lib/igt_draw: Use DG-1 compatible mmap calls for draw methods, v2.
This will allow kms_frontbuffer_tracking to draw buffers for frontbuffer tracking on dg1. Changes since v1: - Instead of gem_mmap__device_coherent which may fall back to mmap_gtt, call mmap_fixed (lmem), mmap_wc (current), or mmap_offset_wc (newer platforms). Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> #irc
Diffstat (limited to 'lib/igt_draw.c')
-rw-r--r--lib/igt_draw.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/igt_draw.c b/lib/igt_draw.c
index da1d39fcb..2af27b113 100644
--- a/lib/igt_draw.c
+++ b/lib/igt_draw.c
@@ -341,8 +341,8 @@ static void draw_rect_mmap_cpu(int fd, struct buf_data *buf, struct rect *rect,
if (tiling != I915_TILING_NONE)
igt_require(intel_display_ver(intel_get_drm_devid(fd)) >= 5);
- ptr = gem_mmap__cpu(fd, buf->handle, 0, PAGE_ALIGN(buf->size),
- PROT_READ | PROT_WRITE);
+ ptr = gem_mmap__cpu_coherent(fd, buf->handle, 0, PAGE_ALIGN(buf->size),
+ PROT_READ | PROT_WRITE);
switch (tiling) {
case I915_TILING_NONE:
@@ -391,8 +391,17 @@ static void draw_rect_mmap_wc(int fd, struct buf_data *buf, struct rect *rect,
if (tiling != I915_TILING_NONE)
igt_require(intel_display_ver(intel_get_drm_devid(fd)) >= 5);
- ptr = gem_mmap__wc(fd, buf->handle, 0, PAGE_ALIGN(buf->size),
- PROT_READ | PROT_WRITE);
+ if (gem_has_lmem(fd))
+ ptr = gem_mmap_offset__fixed(fd, buf->handle, 0,
+ PAGE_ALIGN(buf->size),
+ PROT_READ | PROT_WRITE);
+ else if (gem_has_legacy_mmap(fd))
+ ptr = gem_mmap__wc(fd, buf->handle, 0, PAGE_ALIGN(buf->size),
+ PROT_READ | PROT_WRITE);
+ else
+ ptr = gem_mmap_offset__wc(fd, buf->handle, 0,
+ PAGE_ALIGN(buf->size),
+ PROT_READ | PROT_WRITE);
switch (tiling) {
case I915_TILING_NONE: