drm/gud: Get offset-adjusted mapping from drm_gem_fb_vmap()
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
This commit is contained in:
parent
add8b6a9a5
commit
6d463aaf56
|
@ -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;
|
struct dma_buf_attachment *import_attach = fb->obj[0]->import_attach;
|
||||||
u8 compression = gdrm->compression;
|
u8 compression = gdrm->compression;
|
||||||
struct dma_buf_map map[DRM_FORMAT_MAX_PLANES];
|
struct dma_buf_map map[DRM_FORMAT_MAX_PLANES];
|
||||||
|
struct dma_buf_map map_data[DRM_FORMAT_MAX_PLANES];
|
||||||
void *vaddr, *buf;
|
void *vaddr, *buf;
|
||||||
size_t pitch, len;
|
size_t pitch, len;
|
||||||
int ret = 0;
|
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)
|
if (len > gdrm->bulk_len)
|
||||||
return -E2BIG;
|
return -E2BIG;
|
||||||
|
|
||||||
ret = drm_gem_fb_vmap(fb, map, NULL);
|
ret = drm_gem_fb_vmap(fb, map, map_data);
|
||||||
if (ret)
|
if (ret)
|
||||||
return 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);
|
ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
|
Loading…
Reference in New Issue