summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/dri
diff options
context:
space:
mode:
authorVarad Gautam <[email protected]>2017-05-30 17:23:42 +0530
committerEmil Velikov <[email protected]>2017-06-09 14:12:37 +0100
commitd33fe8b84e45308a26068d3f015e033de93315b1 (patch)
treeef29446fd3060fdf8a1f4dff0e1cc2944a170e90 /src/gallium/state_trackers/dri
parent3f8513172ff65ce93a0f8a04c59afbe6b02d60d8 (diff)
st/dri: enable DRIimage modifier queries
return the modifier selected by the driver when creating this image. v2: since we can use winsys_handle->modifier to serve these, remove DRIimage->modifier from v1. use DRM_API_HANDLE_TYPE_KMS instead of DRM_API_HANDLE_TYPE_FD to avoid ownership transfer. (Lucas) Suggested-by: Daniel Stone <[email protected]> Signed-off-by: Varad Gautam <[email protected]> Cc: Lucas Stach <[email protected]> Reviewed-by: Lucas Stach <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/dri')
-rw-r--r--src/gallium/state_trackers/dri/dri2.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c
index 740c6a4aaf5..465100b0eda 100644
--- a/src/gallium/state_trackers/dri/dri2.c
+++ b/src/gallium/state_trackers/dri/dri2.c
@@ -1088,6 +1088,18 @@ dri2_query_image(__DRIimage *image, int attrib, int *value)
case __DRI_IMAGE_ATTRIB_NUM_PLANES:
*value = 1;
return GL_TRUE;
+ case __DRI_IMAGE_ATTRIB_MODIFIER_UPPER:
+ whandle.type = DRM_API_HANDLE_TYPE_KMS;
+ image->texture->screen->resource_get_handle(image->texture->screen,
+ NULL, image->texture, &whandle, usage);
+ *value = (whandle.modifier >> 32) & 0xffffffff;
+ return GL_TRUE;
+ case __DRI_IMAGE_ATTRIB_MODIFIER_LOWER:
+ whandle.type = DRM_API_HANDLE_TYPE_KMS;
+ image->texture->screen->resource_get_handle(image->texture->screen,
+ NULL, image->texture, &whandle, usage);
+ *value = whandle.modifier & 0xffffffff;
+ return GL_TRUE;
default:
return GL_FALSE;
}