drm/vgem: drop DRIVER_PRIME (v2)
Subsystems (2)
PATCH 1/1 drm/vgem: drop DRIVER_PRIME (v2)
For actual sharing of buffers with other drivers (ie. actual hardware) we'll need to pimp things out a bit better to deal w/ caching, multiple memory domains, etc. See thread:
http://lists.freedesktop.org/archives/dri-devel/2015-May/083160.html
But for the llvmpipe use-case this isn't a problem. Nor do we really need prime/dri3 (dri2 is sufficient). So until the other issues are sorted lets remove DRIVER_PRIME.
v2: also drop the dead code
--- drivers/gpu/drm/vgem/Makefile | 2 +- drivers/gpu/drm/vgem/vgem_dma_buf.c | 94 ------------------------------------- drivers/gpu/drm/vgem/vgem_drv.c | 11 +---- drivers/gpu/drm/vgem/vgem_drv.h | 11 ----- 4 files changed, 2 insertions(+), 116 deletions(-) delete mode 100644 drivers/gpu/drm/vgem/vgem_dma_buf.c
drivers/gpu/drm/vgem/Makefile +1 -1
@@ -1,4 +1,4 @@ ccflags-y := -Iinclude/drm -vgem-y := vgem_drv.o vgem_dma_buf.o +vgem-y := vgem_drv.o obj-$(CONFIG_DRM_VGEM) += vgem.o
drivers/gpu/drm/vgem/vgem_dma_buf.c deleted +0 -94
94 lines not on this page · raw message
drivers/gpu/drm/vgem/vgem_drv.c +1 -10
@@ -302,22 +302,13 @@ static const struct file_operations vgem_driver_fops = { };static struct drm_driver vgem_driver = { - .driver_features =DRIVER_GEM |DRIVER_PRIME , + .driver_features =DRIVER_GEM , .gem_free_object = vgem_gem_free_object, .gem_vm_ops = &vgem_gem_vm_ops, .ioctls = vgem_ioctls, .fops = &vgem_driver_fops, .dumb_create = vgem_gem_dumb_create, .dumb_map_offset = vgem_gem_dumb_map, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_export = drm_gem_prime_export, - .gem_prime_import = vgem_gem_prime_import, - .gem_prime_pin = vgem_gem_prime_pin, - .gem_prime_unpin = vgem_gem_prime_unpin, - .gem_prime_get_sg_table = vgem_gem_prime_get_sg_table, - .gem_prime_vmap = vgem_gem_prime_vmap, - .gem_prime_vunmap = vgem_gem_prime_vunmap, .name =DRIVER_NAME , .desc =DRIVER_DESC , .date =DRIVER_DATE ,
drivers/gpu/drm/vgem/vgem_drv.h +0 -11
@@ -43,15 +43,4 @@ struct drm_vgem_gem_object {extern void vgem_gem_put_pages (struct drm_vgem_gem_object *obj);extern int vgem_gem_get_pages (struct drm_vgem_gem_object *obj); -/* vgem_dma_buf.c */ -extern struct sg_table *vgem_gem_prime_get_sg_table ( -struct drm_gem_object *gobj); -extern int vgem_gem_prime_pin (struct drm_gem_object *gobj); -extern void vgem_gem_prime_unpin (struct drm_gem_object *gobj); -extern void *vgem_gem_prime_vmap (struct drm_gem_object *gobj); -extern void vgem_gem_prime_vunmap (struct drm_gem_object *obj,void *vaddr); -extern struct drm_gem_object *vgem_gem_prime_import (struct drm_device *dev, -struct dma_buf *dma_buf); - -#endif
Signature · 6 lines
2.4.1 _______________________________________________ dri-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/dri-devel
Quoted 6 lines · Rob Clark
For actual sharing of buffers with other drivers (ie. actual hardware) we'll need to pimp things out a bit better to deal w/ caching, multiple memory domains, etc. See thread:
http://lists.freedesktop.org/archives/dri-devel/2015-May/083160.html
Quoted 7 lines
But for the llvmpipe use-case this isn't a problem. Nor do we really need prime/dri3 (dri2 is sufficient). So until the other issues are sorted lets remove
DRIVER_PRIME.v2: also drop the dead code
Signed-off-by Rob Clark <[email protected]>
Yeah I'm ok with this too, but it pretty much means vgem is a thing for llvmpipe only. And then abusing dumb buffers is imo ok too, since I don't care too much what kind of horrors drivers pull of internally.
Quoted 169 lines
--- drivers/gpu/drm/vgem/Makefile | 2 +- drivers/gpu/drm/vgem/vgem_dma_buf.c | 94 ------------------------------------- drivers/gpu/drm/vgem/vgem_drv.c | 11 +---- drivers/gpu/drm/vgem/vgem_drv.h | 11 ----- 4 files changed, 2 insertions(+), 116 deletions(-) delete mode 100644 drivers/gpu/drm/vgem/vgem_dma_buf.cdrivers/gpu/drm/vgem/Makefile +1
-1@@ -1,4 +1,4 @@ ccflags-y := -Iinclude/drm -vgem-y := vgem_drv.o vgem_dma_buf.o +vgem-y := vgem_drv.o obj-$(CONFIG_DRM_VGEM) += vgem.odrivers/gpu/drm/vgem/vgem_dma_buf.c deleted +0
-94@@ -1,94 +0,0 @@ -/* -* Copyright © 2012 Intel Corporation -* Copyright © 2014 The Chromium OS Authors -* -* Permission is hereby granted, free of charge, to any person obtaining a -* copy of this software and associated documentation files (the "Software"), -* to deal in the Software without restriction, including without limitation -* the rights to use, copy, modify, merge, publish, distribute, sublicense, -* and/or sell copies of the Software, and to permit persons to whom the -* Software is furnished to do so, subject to the following conditions: -* -* The above copyright notice and this permission notice (including the next -* paragraph) shall be included in all copies or substantial portions of the -* Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -* IN THE SOFTWARE. -* -* Authors: -* Ben Widawsky <[email protected]> -* -*/ - -#include <linux/dma-buf.h> -#include "vgem_drv.h" - -struct sg_table *vgem_gem_prime_get_sg_table (struct drm_gem_object *gobj) -{ -struct drm_vgem_gem_object *obj =to_vgem_bo (gobj); -BUG_ON (obj->pages ==NULL ); - -return drm_prime_pages_to_sg (obj->pages, obj->base.size /PAGE_SIZE ); -} - -int vgem_gem_prime_pin (struct drm_gem_object *gobj) -{ -struct drm_vgem_gem_object *obj =to_vgem_bo (gobj); -return vgem_gem_get_pages (obj); -} - -void vgem_gem_prime_unpin (struct drm_gem_object *gobj) -{ -struct drm_vgem_gem_object *obj =to_vgem_bo (gobj); -vgem_gem_put_pages (obj); -} - -void *vgem_gem_prime_vmap (struct drm_gem_object *gobj) -{ -struct drm_vgem_gem_object *obj =to_vgem_bo (gobj); -BUG_ON (obj->pages ==NULL ); - -return vmap (obj->pages, obj->base.size /PAGE_SIZE ,0 ,PAGE_KERNEL ); -} - -void vgem_gem_prime_vunmap (struct drm_gem_object *obj,void *vaddr) -{ -vunmap (vaddr); -} - -struct drm_gem_object *vgem_gem_prime_import (struct drm_device *dev, -struct dma_buf *dma_buf) -{ -struct drm_vgem_gem_object *obj =NULL ; -int ret; - - obj =kzalloc (sizeof (*obj),GFP_KERNEL ); -if (obj ==NULL ) { - ret = -ENOMEM ; - goto fail; - } - - ret =drm_gem_object_init (dev, &obj->base, dma_buf->size); -if (ret) { - ret = -ENOMEM ; - goto fail_free; - } - -get_dma_buf (dma_buf); - - obj->base.dma_buf = dma_buf; - obj->use_dma_buf = true; - -return &obj->base; - -fail_free: -kfree (obj); -fail: -return ERR_PTR (ret); -}drivers/gpu/drm/vgem/vgem_drv.c +1
-10@@ -302,22 +302,13 @@ static const struct file_operations vgem_driver_fops = { };static struct drm_driver vgem_driver = { - .driver_features =DRIVER_GEM |DRIVER_PRIME , + .driver_features =DRIVER_GEM , .gem_free_object = vgem_gem_free_object, .gem_vm_ops = &vgem_gem_vm_ops, .ioctls = vgem_ioctls, .fops = &vgem_driver_fops, .dumb_create = vgem_gem_dumb_create, .dumb_map_offset = vgem_gem_dumb_map, - .prime_handle_to_fd = drm_gem_prime_handle_to_fd, - .prime_fd_to_handle = drm_gem_prime_fd_to_handle, - .gem_prime_export = drm_gem_prime_export, - .gem_prime_import = vgem_gem_prime_import, - .gem_prime_pin = vgem_gem_prime_pin, - .gem_prime_unpin = vgem_gem_prime_unpin, - .gem_prime_get_sg_table = vgem_gem_prime_get_sg_table, - .gem_prime_vmap = vgem_gem_prime_vmap, - .gem_prime_vunmap = vgem_gem_prime_vunmap, .name =DRIVER_NAME , .desc =DRIVER_DESC , .date =DRIVER_DATE ,drivers/gpu/drm/vgem/vgem_drv.h +0
-11@@ -43,15 +43,4 @@ struct drm_vgem_gem_object {extern void vgem_gem_put_pages (struct drm_vgem_gem_object *obj);extern int vgem_gem_get_pages (struct drm_vgem_gem_object *obj); -/* vgem_dma_buf.c */ -extern struct sg_table *vgem_gem_prime_get_sg_table ( -struct drm_gem_object *gobj); -extern int vgem_gem_prime_pin (struct drm_gem_object *gobj); -extern void vgem_gem_prime_unpin (struct drm_gem_object *gobj); -extern void *vgem_gem_prime_vmap (struct drm_gem_object *gobj); -extern void vgem_gem_prime_vunmap (struct drm_gem_object *obj,void *vaddr); -extern struct drm_gem_object *vgem_gem_prime_import (struct drm_device *dev, -struct dma_buf *dma_buf); - -#endif Signature · 1 line
2.4.1
Signature · 7 lines
Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/dri-devel
Quoted 11 lines · Daniel Vetter
Quoted 10 lines · Rob Clark
For actual sharing of buffers with other drivers (ie. actual hardware) we'll need to pimp things out a bit better to deal w/ caching, multiple memory domains, etc. See thread:
http://lists.freedesktop.org/archives/dri-devel/2015-May/083160.html
But for the llvmpipe use-case this isn't a problem. Nor do we really need prime/dri3 (dri2 is sufficient). So until the other issues are sorted lets remove
DRIVER_PRIME.
Quoted 7 lines
Quoted 3 lines
v2: also drop the dead code
Signed-off-by Rob Clark <[email protected]>Yeah I'm ok with this too, but it pretty much means vgem is a thing for llvmpipe only. And then abusing dumb buffers is imo ok too, since I don't care too much what kind of horrors drivers pull of internally.
Ugh. But llvmpipe + dumb buffer is much inferior to SHM. -Chris
Signature · 5 lines
Chris Wilson, Intel Open Source Technology Centre _______________________________________________ dri-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/dri-devel
Quoted 14 lines · Chris Wilson
Quoted 13 lines · Daniel Vetter
Quoted 12 lines · Rob Clark
For actual sharing of buffers with other drivers (ie. actual hardware) we'll need to pimp things out a bit better to deal w/ caching, multiple memory domains, etc. See thread:
http://lists.freedesktop.org/archives/dri-devel/2015-May/083160.html
But for the llvmpipe use-case this isn't a problem. Nor do we really need prime/dri3 (dri2 is sufficient). So until the other issues are sorted lets remove
DRIVER_PRIME.v2: also drop the dead code
Quoted 7 lines
Quoted 5 lines
Quoted 1 line
Signed-off-by Rob Clark <[email protected]>Yeah I'm ok with this too, but it pretty much means vgem is a thing for llvmpipe only. And then abusing dumb buffers is imo ok too, since I don't care too much what kind of horrors drivers pull of internally.
Ugh. But llvmpipe + dumb buffer is much inferior to SHM.
it is using shmem for it's dumb buffers.. although I noticed it was mapping writecombine which is probably not what is wanted..
BR,
-R
Quoted 4 lines
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
dri-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dri-devel
Thomas Hellstrom
Acked-byQuoted 11 lines · Daniel Vetter
Quoted 10 lines · Rob Clark
For actual sharing of buffers with other drivers (ie. actual hardware) we'll need to pimp things out a bit better to deal w/ caching, multiple memory domains, etc. See thread:
But for the llvmpipe use-case this isn't a problem. Nor do we really need prime/dri3 (dri2 is sufficient). So until the other issues are sorted lets remove
DRIVER_PRIME.
Quoted 10 lines
Quoted 3 lines
v2: also drop the dead code
Signed-off-by Rob Clark <[email protected]>Yeah I'm ok with this too, but it pretty much means vgem is a thing for llvmpipe only. And then abusing dumb buffers is imo ok too, since I don't care too much what kind of horrors drivers pull of internally.
Acked-by Daniel Vetter <[email protected]>
Well in the end, I'm happy whatever way as long as the root problem is solved.
_______________________________________________
dri-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dri-devel
Dave Airlie
maintainerQuoted 19 lines · Thomas Hellstrom
Quoted 18 lines · Daniel Vetter
Quoted 6 lines · Rob Clark
For actual sharing of buffers with other drivers (ie. actual hardware) we'll need to pimp things out a bit better to deal w/ caching, multiple memory domains, etc. See thread:
Quoted 7 lines
But for the llvmpipe use-case this isn't a problem. Nor do we really need prime/dri3 (dri2 is sufficient). So until the other issues are sorted lets remove
DRIVER_PRIME.v2: also drop the dead code
Signed-off-by Rob Clark <[email protected]>Yeah I'm ok with this too, but it pretty much means vgem is a thing for llvmpipe only. And then abusing dumb buffers is imo ok too, since I don't care too much what kind of horrors drivers pull of internally.
Quoted 8 lines
Quoted 3 lines
Acked-by Daniel Vetter <[email protected]>Well in the end, I'm happy whatever way as long as the root problem is solved.
Acked-by Thomas Hellstrom <[email protected]>
I've applied this, mainly because controversy is bad, so new APIs should never have any, please try and sort out a decent interface on the list,
Dave.
_______________________________________________
dri-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dri-devel