Mesa (master): drisw: learn to query shmid handle type

Dave Airlie airlied at kemper.freedesktop.org
Tue May 29 23:12:20 UTC 2018


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

Author: Marc-André Lureau <marcandre.lureau at gmail.com>
Date:   Mon Jun 15 14:48:27 2015 +0200

drisw: learn to query shmid handle type

Reviewed-by: Dave Airlie <airlied at redhat.com>
Reviewed-by: Adam Jackson <ajax at redhat.com>

---

 src/gallium/include/state_tracker/drisw_api.h     |  1 +
 src/gallium/include/state_tracker/sw_winsys.h     |  3 +--
 src/gallium/include/state_tracker/winsys_handle.h |  1 +
 src/gallium/winsys/sw/dri/dri_sw_winsys.c         | 10 +++++++++-
 4 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/gallium/include/state_tracker/drisw_api.h b/src/gallium/include/state_tracker/drisw_api.h
index 36bef087a4..e365ab81f1 100644
--- a/src/gallium/include/state_tracker/drisw_api.h
+++ b/src/gallium/include/state_tracker/drisw_api.h
@@ -2,6 +2,7 @@
 #define _DRISW_API_H_
 
 #include "pipe/p_compiler.h"
+#include "sw_winsys.h"
 
 struct pipe_screen;
 struct dri_drawable;
diff --git a/src/gallium/include/state_tracker/sw_winsys.h b/src/gallium/include/state_tracker/sw_winsys.h
index 0b792cd0ce..cd5838ad1d 100644
--- a/src/gallium/include/state_tracker/sw_winsys.h
+++ b/src/gallium/include/state_tracker/sw_winsys.h
@@ -37,14 +37,13 @@
 
 #include "pipe/p_compiler.h" /* for boolean */
 #include "pipe/p_format.h"
-
+#include "state_tracker/winsys_handle.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 
-struct winsys_handle;
 struct pipe_screen;
 struct pipe_context;
 struct pipe_resource;
diff --git a/src/gallium/include/state_tracker/winsys_handle.h b/src/gallium/include/state_tracker/winsys_handle.h
index 746e87683a..167c1a937f 100644
--- a/src/gallium/include/state_tracker/winsys_handle.h
+++ b/src/gallium/include/state_tracker/winsys_handle.h
@@ -9,6 +9,7 @@ extern "C" {
 #define WINSYS_HANDLE_TYPE_SHARED 0
 #define WINSYS_HANDLE_TYPE_KMS    1
 #define WINSYS_HANDLE_TYPE_FD     2
+#define WINSYS_HANDLE_TYPE_SHMID   3
 
 /**
  * For use with pipe_screen::{texture_from_handle|texture_get_handle}.
diff --git a/src/gallium/winsys/sw/dri/dri_sw_winsys.c b/src/gallium/winsys/sw/dri/dri_sw_winsys.c
index b36a53e960..8335e52200 100644
--- a/src/gallium/winsys/sw/dri/dri_sw_winsys.c
+++ b/src/gallium/winsys/sw/dri/dri_sw_winsys.c
@@ -209,7 +209,15 @@ dri_sw_displaytarget_get_handle(struct sw_winsys *winsys,
                                 struct sw_displaytarget *dt,
                                 struct winsys_handle *whandle)
 {
-   assert(0);
+   struct dri_sw_displaytarget *dri_sw_dt = dri_sw_displaytarget(dt);
+
+   if (whandle->type == WINSYS_HANDLE_TYPE_SHMID) {
+      if (dri_sw_dt->shmid < 0)
+         return FALSE;
+      whandle->handle = dri_sw_dt->shmid;
+      return TRUE;
+   }
+
    return FALSE;
 }
 




More information about the mesa-commit mailing list