diff options
author | Dave Airlie <airlied@redhat.com> | 2012-07-26 10:43:29 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-07-26 10:43:29 +1000 |
commit | 63b7e9bb263905c780d5e689d829ffb0bc6e28c9 (patch) | |
tree | 8849c72ccee6987d900de8d002508e8c8f72d204 | |
parent | 87a58bf2020b0c3155d2ff1c4a8e3f068467b0f6 (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.c | 20 |
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); |