OSDN Git Service

drm/gud: Get offset-adjusted mapping from drm_gem_fb_vmap()
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 3 Aug 2021 12:59:20 +0000 (14:59 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Sun, 8 Aug 2021 18:27:24 +0000 (20:27 +0200)
Pass the data parameter to drm_gem_fb_vmap() to retrieve pointers
to the data. This address is different from the mapping addresses
for framebuffers with non-zero offsets. Replaces gud's internal
computation.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20210803125928.27780-4-tzimmermann@suse.de
drivers/gpu/drm/gud/gud_pipe.c

index 6270a1a..b9b0e43 100644 (file)
@@ -153,6 +153,7 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
        struct dma_buf_attachment *import_attach = fb->obj[0]->import_attach;
        u8 compression = gdrm->compression;
        struct dma_buf_map map[DRM_FORMAT_MAX_PLANES];
+       struct dma_buf_map map_data[DRM_FORMAT_MAX_PLANES];
        void *vaddr, *buf;
        size_t pitch, len;
        int ret = 0;
@@ -162,11 +163,11 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
        if (len > gdrm->bulk_len)
                return -E2BIG;
 
-       ret = drm_gem_fb_vmap(fb, map, NULL);
+       ret = drm_gem_fb_vmap(fb, map, map_data);
        if (ret)
                return ret;
 
-       vaddr = map[0].vaddr + fb->offsets[0];
+       vaddr = map_data[0].vaddr;
 
        ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
        if (ret)