diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2010-11-03 21:41:48 +0100 |
---|---|---|
committer | Jerome Glisse <jglisse@redhat.com> | 2010-11-08 13:44:54 -0500 |
commit | 46c19700676e17bfaa0a88346d512449fbeede79 (patch) | |
tree | 68b51735e4fc4ade14fcb79e78a56c24e339bc2a /src/gallium/winsys/r600/drm/r600_bo.c | |
parent | 10b9e018ca4b37c66a6e0215d4551ed74b4981a6 (diff) |
r600g: implement texture_get_handle (needed for eglExportDRMImageMESA)
Diffstat (limited to 'src/gallium/winsys/r600/drm/r600_bo.c')
-rw-r--r-- | src/gallium/winsys/r600/drm/r600_bo.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/gallium/winsys/r600/drm/r600_bo.c b/src/gallium/winsys/r600/drm/r600_bo.c index 9b9aec5f64c..251f009a6b0 100644 --- a/src/gallium/winsys/r600/drm/r600_bo.c +++ b/src/gallium/winsys/r600/drm/r600_bo.c @@ -26,9 +26,10 @@ #include <pipe/p_compiler.h> #include <pipe/p_screen.h> #include <pipebuffer/pb_bufmgr.h> -#include "radeon_drm.h" +#include "state_tracker/drm_driver.h" #include "r600_priv.h" #include "r600d.h" +#include "drm.h" #include "radeon_drm.h" struct r600_bo *r600_bo(struct radeon *radeon, @@ -154,3 +155,28 @@ unsigned r600_bo_get_size(struct r600_bo *pb_bo) return bo->size; } + +boolean r600_bo_get_winsys_handle(struct radeon *radeon, struct r600_bo *pb_bo, + unsigned stride, struct winsys_handle *whandle) +{ + struct radeon_bo *bo; + + bo = radeon_bo_pb_get_bo(pb_bo->pb); + if (!bo) + return FALSE; + + whandle->stride = stride; + switch(whandle->type) { + case DRM_API_HANDLE_TYPE_KMS: + whandle->handle = r600_bo_get_handle(pb_bo); + break; + case DRM_API_HANDLE_TYPE_SHARED: + if (radeon_bo_get_name(radeon, bo, &whandle->handle)) + return FALSE; + break; + default: + return FALSE; + } + + return TRUE; +} |