summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/dri
diff options
context:
space:
mode:
authorThomas Hellstrom <[email protected]>2013-12-17 05:44:38 -0800
committerThomas Hellstrom <[email protected]>2013-12-18 09:11:24 +0100
commit00cf048b12a82f1cde066c12bea63a9f20f5f216 (patch)
tree1646fe98b027d5b878e2e947e55ea05cbfb760f8 /src/gallium/state_trackers/dri
parent37c24e6d867606e176a5164fc7ef1857862e76f8 (diff)
st/dri: Check for kernel support before enabling fd sharing v2
The dri2 state tracker is checking for driver support before enabling dri2ImageExtension version 7. This commit adds a check that also the kernel driver supports fd sharing through prime. Note that this adds a libdrm dependency on dri2.c. v2: Removed unnecessary clamping of bool expression Signed-off-by: Thomas Hellstrom <[email protected]> Reviewed-by: Christopher James Halse Rogers <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/dri')
-rw-r--r--src/gallium/state_trackers/dri/drm/dri2.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c
index 8ff77b38507..2a5b7b4e4e0 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -28,6 +28,7 @@
*/
+#include <xf86drm.h>
#include "util/u_memory.h"
#include "util/u_inlines.h"
#include "util/u_format.h"
@@ -1051,10 +1052,18 @@ dri2_init_screen(__DRIscreen * sPriv)
screen->default_throttle_frames = throttle_ret->val.val_int;
}
+#ifdef DRM_CAP_PRIME /* Old libdrm? */
if (dmabuf_ret && dmabuf_ret->val.val_bool) {
- dri2ImageExtension.base.version = 7;
- dri2ImageExtension.createImageFromFds = dri2_from_fds;
+ uint64_t cap;
+
+ if (drmGetCap(sPriv->fd, DRM_CAP_PRIME, &cap) == 0 &&
+ (cap & DRM_PRIME_CAP_IMPORT)) {
+
+ dri2ImageExtension.base.version = 7;
+ dri2ImageExtension.createImageFromFds = dri2_from_fds;
+ }
}
+#endif /* DRM_CAP_PRIME */
sPriv->extensions = dri_screen_extensions;