summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrondog <patches@crondog.com>2014-03-07 12:09:36 +1100
committerRob Clark <robdclark@gmail.com>2014-03-06 20:48:35 -0500
commit076cad8098a5df07e38123c69e853510c8a0d83e (patch)
tree10a136d5ee3d926f7842d50e6dcca15a08a9cfd6
parent652da8f602a35b89398d50564bbf6e5347f05ccb (diff)
Add option to disable SW_REFRESHER (KGSL)
Signed-off-by: Rob Clark <robdclark@gmail.com>
-rw-r--r--man/freedreno.man5
-rw-r--r--src/fbmode_display.c6
-rw-r--r--src/msm-driver.c4
-rw-r--r--src/msm.h2
4 files changed, 16 insertions, 1 deletions
diff --git a/man/freedreno.man b/man/freedreno.man
index 7e19716..a70c810 100644
--- a/man/freedreno.man
+++ b/man/freedreno.man
@@ -42,6 +42,11 @@ Disable HW mouse cursor.
.IP
Default: Disabled
.TP
+.BI "Option \*qSWRefresher\*q \*q" boolean \*q
+Enable SW Refresher. Only applicable for fbdev/kgsl, unused for drm/msm.
+.IP
+Default: Enabled
+.TP
.BI "Option \*qfb\*q \*q" string \*q
Path to fbdev device file. Required to use fbdev/kgsl, unused for drm/msm.
.IP
diff --git a/src/fbmode_display.c b/src/fbmode_display.c
index 54f7118..78abaee 100644
--- a/src/fbmode_display.c
+++ b/src/fbmode_display.c
@@ -572,6 +572,8 @@ static const xf86CrtcConfigFuncsRec MSMCrtcConfigFuncs = {
Bool fbmode_pre_init(ScrnInfoPtr pScrn)
{
+ MSMPtr pMsm = MSMPTR(pScrn);
+
fbmode_ptr fbmode;
EntityInfoPtr pEnt;
const char *dev;
@@ -596,7 +598,9 @@ Bool fbmode_pre_init(ScrnInfoPtr pScrn)
ioctl(fbmode->fd, FBIOBLANK, FB_BLANK_UNBLANK);
/* Make sure the software refresher is on */
- ioctl(fbmode->fd, MSMFB_RESUME_SW_REFRESHER, 0);
+ if(pMsm->SWRefresher){
+ ioctl(fbmode->fd, MSMFB_RESUME_SW_REFRESHER, 0);
+ }
/* Get the fixed info (par) structure */
diff --git a/src/msm-driver.c b/src/msm-driver.c
index 620527f..be2b9e3 100644
--- a/src/msm-driver.c
+++ b/src/msm-driver.c
@@ -77,6 +77,7 @@ static const OptionInfoRec MSMOptions[] = {
{OPTION_FB, "fb", OPTV_STRING, {0}, FALSE},
{OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE},
{OPTION_SWCURSOR, "SWCursor", OPTV_BOOLEAN, {0}, FALSE},
+ {OPTION_SWREFRESHER, "SWRefresher", OPTV_BOOLEAN, {0}, FALSE},
{OPTION_VSYNC, "DefaultVsync", OPTV_INTEGER, {0}, FALSE},
{OPTION_DEBUG, "Debug", OPTV_BOOLEAN, {0}, FALSE},
{-1, NULL, OPTV_NONE, {0}, FALSE}
@@ -249,6 +250,9 @@ MSMPreInit(ScrnInfoPtr pScrn, int flags)
/* SWCursor - default FALSE */
pMsm->HWCursor = !xf86ReturnOptValBool(pMsm->options, OPTION_SWCURSOR, FALSE);
+ /* SWRefresher - default TRUE */
+ pMsm->SWRefresher = xf86ReturnOptValBool(pMsm->options, OPTION_SWREFRESHER, TRUE);
+
xf86PrintModes(pScrn);
/* FIXME: We will probably need to be more exact when setting
diff --git a/src/msm.h b/src/msm.h
index 196c37a..ca49ee7 100644
--- a/src/msm.h
+++ b/src/msm.h
@@ -54,6 +54,7 @@ typedef enum
OPTION_FB,
OPTION_NOACCEL,
OPTION_SWCURSOR,
+ OPTION_SWREFRESHER,
OPTION_VSYNC,
OPTION_DEBUG,
} MSMOpts;
@@ -74,6 +75,7 @@ typedef struct _MSMRec
Bool NoKMS;
Bool NoAccel;
Bool HWCursor;
+ Bool SWRefresher;
int drmFD;