summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Peres <martin.peres@linux.intel.com>2018-09-19 16:22:08 +0300
committerMartin Peres <martin.peres@linux.intel.com>2018-09-21 18:28:02 +0300
commitccc754e4b40dd18af2fed09c15f86a74a78dd09e (patch)
tree9271acff89b8045f6997c038d54037377cc1460e
parentd689570482f23bd7a95f29446d1c8033294ee8ab (diff)
modesetting: add a NoAtomic option to ease testing of the legacy codepaths3x4k
Signed-off-by: Martin Peres <martin.peres@linux.intel.com>
-rw-r--r--hw/xfree86/drivers/modesetting/driver.c14
-rw-r--r--hw/xfree86/drivers/modesetting/driver.h1
-rw-r--r--hw/xfree86/drivers/modesetting/modesetting.man5
3 files changed, 18 insertions, 2 deletions
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
index 4754e0138..76fc7b952 100644
--- a/hw/xfree86/drivers/modesetting/driver.c
+++ b/hw/xfree86/drivers/modesetting/driver.c
@@ -133,6 +133,7 @@ static const OptionInfoRec Options[] = {
{OPTION_DOUBLE_SHADOW, "DoubleShadow", OPTV_BOOLEAN, {0}, FALSE},
{OPTION_SHADOW_PRIMARY, "ShadowPrimary", OPTV_BOOLEAN, {0}, FALSE},
{OPTION_TEARFREE, "TearFree", OPTV_BOOLEAN, {0}, FALSE},
+ {OPTION_NO_ATOMIC, "NoAtomic", OPTV_BOOLEAN, {0}, FALSE},
{-1, NULL, OPTV_NONE, {0}, FALSE}
};
@@ -1122,8 +1123,17 @@ PreInit(ScrnInfoPtr pScrn, int flags)
#endif
}
- ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 1);
- ms->atomic_modeset = (ret == 0);
+ if (!xf86ReturnOptValBool(ms->drmmode.Options, OPTION_NO_ATOMIC, FALSE)) {
+ ret = drmSetClientCap(ms->fd, DRM_CLIENT_CAP_ATOMIC, 1);
+ ms->atomic_modeset = (ret == 0);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Atomic Mode Setting support: %s\n",
+ ms->atomic_modeset ? "True" : "False");
+ } else {
+ ms->atomic_modeset = FALSE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "The use Atomic Mode Setting has "
+ "been disabled\n");
+ }
+
ms->kms_has_modifiers = FALSE;
ret = drmGetCap(ms->fd, DRM_CAP_ADDFB2_MODIFIERS, &value);
diff --git a/hw/xfree86/drivers/modesetting/driver.h b/hw/xfree86/drivers/modesetting/driver.h
index 237c54f6a..cc3ba2744 100644
--- a/hw/xfree86/drivers/modesetting/driver.h
+++ b/hw/xfree86/drivers/modesetting/driver.h
@@ -53,6 +53,7 @@ typedef enum {
OPTION_DOUBLE_SHADOW,
OPTION_SHADOW_PRIMARY,
OPTION_TEARFREE,
+ OPTION_NO_ATOMIC,
} modesettingOpts;
typedef struct
diff --git a/hw/xfree86/drivers/modesetting/modesetting.man b/hw/xfree86/drivers/modesetting/modesetting.man
index 73d00f352..1c5768fec 100644
--- a/hw/xfree86/drivers/modesetting/modesetting.man
+++ b/hw/xfree86/drivers/modesetting/modesetting.man
@@ -88,6 +88,11 @@ allocating two separate scanout buffers for each non-rotated CRTC.
This feature may reduce performance, increase latency and introduce stuttering. The default is
.B off.
.TP
+.BI "Option \*qNoAtomic\*q \*q" boolean \*q
+Disable atomic mode setting usage. Useful during developement for validating
+legacy codepaths. The default is
+.B off.
+.TP
.SH "SEE ALSO"
@xservername@(@appmansuffix@), @xconfigfile@(@filemansuffix@), Xserver(@appmansuffix@),
X(@miscmansuffix@)