Mesa (master): gallium/winsys/drm: introduce modifier field to winsys_handle

Emil Velikov evelikov at kemper.freedesktop.org
Fri Jun 9 14:03:18 UTC 2017


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

Author: Varad Gautam <varad.gautam at collabora.com>
Date:   Tue May 30 17:41:41 2017 +0530

gallium/winsys/drm: introduce modifier field to winsys_handle

we use this to import resources with format modifiers, and to support
per-resource modifier queries.

Signed-off-by: Varad Gautam <varad.gautam at collabora.com>
Cc: Lucas Stach <l.stach at pengutronix.de>
Reviewed-by: Lucas Stach <l.stach at pengutronix.de>

---

 src/gallium/include/state_tracker/drm_driver.h | 6 ++++++
 src/gallium/state_trackers/dri/dri2.c          | 7 +++++++
 2 files changed, 13 insertions(+)

diff --git a/src/gallium/include/state_tracker/drm_driver.h b/src/gallium/include/state_tracker/drm_driver.h
index c80fb09dbc..88dda0a997 100644
--- a/src/gallium/include/state_tracker/drm_driver.h
+++ b/src/gallium/include/state_tracker/drm_driver.h
@@ -45,6 +45,12 @@ struct winsys_handle
     * Output for texture_get_handle.
     */
    unsigned offset;
+
+   /**
+    * Input to resource_from_handle.
+    * Output from resource_get_handle.
+    */
+   uint64_t modifier;
 };
 
 
diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c
index 625678f257..740c6a4aaf 100644
--- a/src/gallium/state_trackers/dri/dri2.c
+++ b/src/gallium/state_trackers/dri/dri2.c
@@ -52,6 +52,10 @@
 #include "dri_query_renderer.h"
 #include "dri2_buffer.h"
 
+#ifndef DRM_FORMAT_MOD_INVALID
+#define DRM_FORMAT_MOD_INVALID ((1ULL<<56) - 1)
+#endif
+
 static int convert_fourcc(int format, int *dri_components_p)
 {
    int dri_components;
@@ -869,6 +873,7 @@ dri2_create_image_from_name(__DRIscreen *_screen,
    memset(&whandle, 0, sizeof(whandle));
    whandle.type = DRM_API_HANDLE_TYPE_SHARED;
    whandle.handle = name;
+   whandle.modifier = DRM_FORMAT_MOD_INVALID;
 
    pf = dri2_format_to_pipe_format (format);
    if (pf == PIPE_FORMAT_NONE)
@@ -929,6 +934,7 @@ dri2_create_image_from_fd(__DRIscreen *_screen,
       whandles[i].handle = (unsigned)fds[i];
       whandles[i].stride = (unsigned)strides[i];
       whandles[i].offset = (unsigned)offsets[i];
+      whandles[i].modifier = DRM_FORMAT_MOD_INVALID;
    }
 
    if (fourcc == __DRI_IMAGE_FOURCC_YVU420) {
@@ -1143,6 +1149,7 @@ dri2_from_names(__DRIscreen *screen, int width, int height, int format,
    whandle.handle = names[0];
    whandle.stride = strides[0];
    whandle.offset = offsets[0];
+   whandle.modifier = DRM_FORMAT_MOD_INVALID;
 
    img = dri2_create_image_from_winsys(screen, width, height, format,
                                        1, &whandle, loaderPrivate);




More information about the mesa-commit mailing list