Mesa (master): st/dri: support EGL_MESA_image_drm: queryImage

Jakob Bornecrantz wallbraker at kemper.freedesktop.org
Thu Sep 9 20:48:47 UTC 2010


Module: Mesa
Branch: master
Commit: 1d61793824b77e45f2ecf9b7d38bfc36d2a5af52
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d61793824b77e45f2ecf9b7d38bfc36d2a5af52

Author: ben <benjaminfranzke at googlemail.com>
Date:   Thu Aug 26 17:32:32 2010 +0200

st/dri: support EGL_MESA_image_drm: queryImage

Signed-off-by: Jakob Bornecrantz <wallbraker at gmail.com>

---

 src/gallium/state_trackers/dri/drm/dri2.c |   30 +++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c
index 2fa71ba..3ba7961 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -437,6 +437,35 @@ dri2_create_image(__DRIscreen *_screen,
    return img;
 }
 
+static GLboolean
+dri2_query_image(__DRIimage *image, int attrib, int *value)
+{
+   struct winsys_handle whandle;
+   memset(&whandle, 0, sizeof(whandle));
+
+   switch (attrib) {
+   case __DRI_IMAGE_ATTRIB_STRIDE:
+      image->texture->screen->resource_get_handle(image->texture->screen,
+            image->texture, &whandle);
+      *value = whandle.stride;
+      return GL_TRUE;
+   case __DRI_IMAGE_ATTRIB_HANDLE:
+      whandle.type = DRM_API_HANDLE_TYPE_KMS;
+      image->texture->screen->resource_get_handle(image->texture->screen,
+         image->texture, &whandle);
+      *value = whandle.handle;
+      return GL_TRUE;
+   case __DRI_IMAGE_ATTRIB_NAME:
+      whandle.type = DRM_API_HANDLE_TYPE_SHARED;
+      image->texture->screen->resource_get_handle(image->texture->screen,
+         image->texture, &whandle);
+      *value = whandle.handle;
+      return GL_TRUE;
+   default:
+      return GL_FALSE;
+   }
+}
+
 static void
 dri2_destroy_image(__DRIimage *img)
 {
@@ -450,6 +479,7 @@ static struct __DRIimageExtensionRec dri2ImageExtension = {
     dri2_create_image_from_renderbuffer,
     dri2_destroy_image,
     dri2_create_image,
+    dri2_query_image,
 };
 
 /*




More information about the mesa-commit mailing list