diff options
author | Dave Airlie <airlied@redhat.com> | 2012-02-16 19:41:40 +0000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-02-17 15:54:14 +0000 |
commit | 2fb4879ffd4e78f69ad628bb7dd6b6e678a63181 (patch) | |
tree | 4d88405d289a14d721513beef12085f0920d3033 | |
parent | 2777730a1d2fb5282732986d39b80ff862ff7b64 (diff) |
use a cap to decide if shadow is preferred or not.
-rw-r--r-- | src/driver.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/driver.c b/src/driver.c index 7ce1ac1..8af9a9f 100644 --- a/src/driver.c +++ b/src/driver.c @@ -59,6 +59,10 @@ #include "driver.h" +#ifndef DRM_CAP_DUMB_PREFER_SHADOW +#define DRM_CAP_DUMB_PREFER_SHADOW 4 +#endif + static void AdjustFrame(int scrnIndex, int x, int y, int flags); static Bool CloseScreen(int scrnIndex, ScreenPtr pScreen); static Bool EnterVT(int scrnIndex, int flags); @@ -380,6 +384,9 @@ PreInit(ScrnInfoPtr pScrn, int flags) EntityInfoPtr pEnt; EntPtr msEnt = NULL; char *BusID, *devicename; + Bool prefer_shadow = TRUE; + uint64_t value = 0; + int ret; if (pScrn->numEntities != 1) return FALSE; @@ -480,7 +487,12 @@ PreInit(ScrnInfoPtr pScrn, int flags) ms->drmmode.sw_cursor = TRUE; } - ms->shadow_enable = xf86ReturnOptValBool(ms->Options, OPTION_SHADOW_FB, TRUE); + ret = drmGetCap(ms->fd, DRM_CAP_DUMB_PREFER_SHADOW, &value); + if (!ret) { + prefer_shadow = !!value; + } + + ms->shadow_enable = xf86ReturnOptValBool(ms->Options, OPTION_SHADOW_FB, prefer_shadow); ms->drmmode.fd = ms->fd; if (drmmode_pre_init(pScrn, &ms->drmmode, pScrn->bitsPerPixel / 8) == FALSE) { |