summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-07-26 10:43:29 +1000
committerDave Airlie <airlied@redhat.com>2012-07-26 10:43:29 +1000
commit63b7e9bb263905c780d5e689d829ffb0bc6e28c9 (patch)
tree8849c72ccee6987d900de8d002508e8c8f72d204
parent87a58bf2020b0c3155d2ff1c4a8e3f068467b0f6 (diff)
intel: query kernel for caps to setup scrn capabilities.prime-proposed
This queries the kernel for prime support before advertising the capabilities. Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/intel_driver.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/intel_driver.c b/src/intel_driver.c
index f58ef5b4..0144c825 100644
--- a/src/intel_driver.c
+++ b/src/intel_driver.c
@@ -436,6 +436,25 @@ static Bool can_accelerate_blt(struct intel_screen_private *intel)
return TRUE;
}
+static void intel_setup_capabilities(ScrnInfoPtr scrn)
+{
+#ifdef INTEL_PIXMAP_SHARING
+ intel_screen_private *intel = intel_get_screen_private(scrn);
+ uint64_t value;
+ int ret;
+
+ scrn->capabilities = 0;
+
+ ret = drmGetCap(intel->drmSubFD, DRM_CAP_PRIME, &value);
+ if (ret == 0) {
+ if (value & DRM_PRIME_CAP_EXPORT)
+ scrn->capabilities |= RR_Capability_SourceOutput | RR_Capability_SinkOffload;
+ if (value & DRM_PRIME_CAP_IMPORT)
+ scrn->capabilities |= RR_Capability_SinkOutput;
+ }
+#endif
+}
+
/**
* This is called before ScreenInit to do any require probing of screen
* configuration.
@@ -527,6 +546,7 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags)
if (!I830GetEarlyOptions(scrn))
return FALSE;
+ intel_setup_capabilities(scrn);
intel_check_chipset_option(scrn);
intel_check_dri_option(scrn);