diff options
| author | 2018-06-25 22:29:16 +0000 | |
|---|---|---|
| committer | 2018-06-25 22:29:16 +0000 | |
| commit | a9ee023b3d3fb138f3d4f17347289eebdc20cf07 (patch) | |
| tree | 2d1fef7ee7763bb5dcdfe77e141a4f430cdbbe1e /sys/dev/pci/drm/drm_gem.c | |
| parent | fix NULL dereference in open_listen_match_tcpip() (diff) | |
| download | wireguard-openbsd-a9ee023b3d3fb138f3d4f17347289eebdc20cf07.tar.xz wireguard-openbsd-a9ee023b3d3fb138f3d4f17347289eebdc20cf07.zip | |
Implement DRI3/prime support. This allows graphics buffers to be passed
between processes using file descriptors. This provides an alternative to
eporting them with guesable 32-bit IDs. This implementation does not (yet)
allow sharing of graphics buffers between GPUs.
ok mpi@, visa@
Diffstat (limited to 'sys/dev/pci/drm/drm_gem.c')
| -rw-r--r-- | sys/dev/pci/drm/drm_gem.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/sys/dev/pci/drm/drm_gem.c b/sys/dev/pci/drm/drm_gem.c index ecf81f371e3..125b78f885a 100644 --- a/sys/dev/pci/drm/drm_gem.c +++ b/sys/dev/pci/drm/drm_gem.c @@ -1,4 +1,4 @@ -/* $OpenBSD: drm_gem.c,v 1.5 2017/09/03 13:28:54 jsg Exp $ */ +/* $OpenBSD: drm_gem.c,v 1.6 2018/06/25 22:29:16 kettenis Exp $ */ /* * Copyright © 2008 Intel Corporation * @@ -28,6 +28,7 @@ #include <dev/pci/drm/drmP.h> #include <dev/pci/drm/drm_vma_manager.h> +#include "drm_internal.h" #include <uvm/uvm.h> @@ -318,7 +319,6 @@ EXPORT_SYMBOL(drm_gem_private_object_init); static void drm_gem_remove_prime_handles(struct drm_gem_object *obj, struct drm_file *filp) { -#ifdef __linux__ /* * Note: obj->dma_buf can't disappear as long as we still hold a * handle reference in obj->handle_count. @@ -329,7 +329,6 @@ drm_gem_remove_prime_handles(struct drm_gem_object *obj, struct drm_file *filp) obj->dma_buf); } mutex_unlock(&filp->prime.lock); -#endif } /** @@ -352,13 +351,11 @@ static void drm_gem_object_handle_free(struct drm_gem_object *obj) static void drm_gem_object_exported_dma_buf_free(struct drm_gem_object *obj) { -#ifdef __linux__ /* Unbreak the reference cycle if we have an exported dma_buf. */ if (obj->dma_buf) { dma_buf_put(obj->dma_buf); obj->dma_buf = NULL; } -#endif } static void @@ -873,6 +870,8 @@ drm_gem_object_release(struct drm_gem_object *obj) { struct drm_device *dev = obj->dev; + WARN_ON(obj->dma_buf); + if (obj->uao) uao_detach(obj->uao); |
