diff options
author | Marc-André Lureau <[email protected]> | 2015-06-15 14:48:27 +0200 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2018-05-30 09:11:54 +1000 |
commit | 9feaf333716f08111ac8a921940e3a0e3666df0e (patch) | |
tree | 1cc0b43758acf137980d434b739af0904b1fdf6d /src/gallium | |
parent | bcd80be49a8260c2233dd07b2048d459a91a9c91 (diff) |
drisw: learn to query shmid handle type
Reviewed-by: Dave Airlie <[email protected]>
Reviewed-by: Adam Jackson <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/include/state_tracker/drisw_api.h | 1 | ||||
-rw-r--r-- | src/gallium/include/state_tracker/sw_winsys.h | 3 | ||||
-rw-r--r-- | src/gallium/include/state_tracker/winsys_handle.h | 1 | ||||
-rw-r--r-- | 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 36bef087a4f..e365ab81f18 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 0b792cd0ce4..cd5838ad1d8 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 746e87683a7..167c1a937fd 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 b36a53e960c..8335e52200f 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; } |