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