Fix red tint artifacts in glamor
- Fix a performance cliff in present triggered by plasma - Silence some xf86vidmode log spam
This commit is contained in:
parent
ed6c269e40
commit
291f2df7cf
378
0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine-debug-m.patch
Normal file
378
0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine-debug-m.patch
Normal file
@ -0,0 +1,378 @@
|
||||
From 52b6312873a0d462190db7e4b2b02c8dbb6263cf Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Sun, 13 Mar 2016 13:54:01 +0000
|
||||
Subject: [PATCH xserver] Xext/vidmode: Reduce verbosity of GetModeLine debug
|
||||
messages
|
||||
|
||||
In commit f175cf45aebcdda53f3ae49c0eaf27da1f194e92
|
||||
Author: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Wed Feb 10 09:34:34 2016 +0100
|
||||
|
||||
vidmode: move to a separate library of its own
|
||||
|
||||
the verbosity of some old debug messages (which print the reply to every
|
||||
GetModeLine client request and others) was increased leading to lots of
|
||||
log spam. Downgrade the logging back to DebugF.
|
||||
|
||||
[ajax: Fix a typo so it compiles.]
|
||||
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
References: https://bugs.freedesktop.org/show_bug.cgi?id=94515
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: Olivier Fourdan <ofourdan@redhat.com>
|
||||
(cherry picked from commit 75eecf28ae3709181a51571132b0accd9cae316e)
|
||||
---
|
||||
Xext/vidmode.c | 214 ++++++++++++++++++++++++++++-----------------------------
|
||||
1 file changed, 107 insertions(+), 107 deletions(-)
|
||||
|
||||
diff --git a/Xext/vidmode.c b/Xext/vidmode.c
|
||||
index 7c838f4..0cbbdc3 100644
|
||||
--- a/Xext/vidmode.c
|
||||
+++ b/Xext/vidmode.c
|
||||
@@ -69,7 +69,7 @@ typedef struct {
|
||||
dixSetPrivate(&(c)->devPrivates, VidModeClientPrivateKey, p)
|
||||
|
||||
#ifdef DEBUG
|
||||
-#define DEBUG_P(x) LogMessage(X_INFO, x"\n");
|
||||
+#define DEBUG_P(x) DebugF(x"\n")
|
||||
#else
|
||||
#define DEBUG_P(x) /**/
|
||||
#endif
|
||||
@@ -267,13 +267,13 @@ ProcVidModeGetModeLine(ClientPtr client)
|
||||
rep.vtotal = VidModeGetModeValue(mode, VIDMODE_V_TOTAL);
|
||||
rep.flags = VidModeGetModeValue(mode, VIDMODE_FLAGS);
|
||||
|
||||
- LogMessage(X_INFO, "GetModeLine - scrn: %d clock: %ld\n",
|
||||
- stuff->screen, (unsigned long) rep.dotclock);
|
||||
- LogMessage(X_INFO, "GetModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- rep.hdisplay, rep.hsyncstart, rep.hsyncend, rep.htotal);
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
- rep.vdisplay, rep.vsyncstart, rep.vsyncend,
|
||||
- rep.vtotal, (unsigned long) rep.flags);
|
||||
+ DebugF("GetModeLine - scrn: %d clock: %ld\n",
|
||||
+ stuff->screen, (unsigned long) rep.dotclock);
|
||||
+ DebugF("GetModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ rep.hdisplay, rep.hsyncstart, rep.hsyncend, rep.htotal);
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
+ rep.vdisplay, rep.vsyncstart, rep.vsyncend,
|
||||
+ rep.vtotal, (unsigned long) rep.flags);
|
||||
|
||||
/*
|
||||
* Older servers sometimes had server privates that the VidMode
|
||||
@@ -483,23 +483,23 @@ ProcVidModeAddModeLine(ClientPtr client)
|
||||
stuff->after_vtotal = oldstuff->after_vtotal;
|
||||
stuff->after_flags = oldstuff->after_flags;
|
||||
}
|
||||
- LogMessage(X_INFO, "AddModeLine - scrn: %d clock: %ld\n",
|
||||
- (int) stuff->screen, (unsigned long) stuff->dotclock);
|
||||
- LogMessage(X_INFO, "AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- stuff->hdisplay, stuff->hsyncstart,
|
||||
- stuff->hsyncend, stuff->htotal);
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,
|
||||
- stuff->vtotal, (unsigned long) stuff->flags);
|
||||
- LogMessage(X_INFO, " after - scrn: %d clock: %ld\n",
|
||||
- (int) stuff->screen, (unsigned long) stuff->after_dotclock);
|
||||
- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- stuff->after_hdisplay, stuff->after_hsyncstart,
|
||||
- stuff->after_hsyncend, stuff->after_htotal);
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
- stuff->after_vdisplay, stuff->after_vsyncstart,
|
||||
- stuff->after_vsyncend, stuff->after_vtotal,
|
||||
- (unsigned long) stuff->after_flags);
|
||||
+ DebugF("AddModeLine - scrn: %d clock: %ld\n",
|
||||
+ (int) stuff->screen, (unsigned long) stuff->dotclock);
|
||||
+ DebugF("AddModeLine - hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ stuff->hdisplay, stuff->hsyncstart,
|
||||
+ stuff->hsyncend, stuff->htotal);
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
+ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,
|
||||
+ stuff->vtotal, (unsigned long) stuff->flags);
|
||||
+ DebugF(" after - scrn: %d clock: %ld\n",
|
||||
+ (int) stuff->screen, (unsigned long) stuff->after_dotclock);
|
||||
+ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ stuff->after_hdisplay, stuff->after_hsyncstart,
|
||||
+ stuff->after_hsyncend, stuff->after_htotal);
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
+ stuff->after_vdisplay, stuff->after_vsyncstart,
|
||||
+ stuff->after_vsyncend, stuff->after_vtotal,
|
||||
+ (unsigned long) stuff->after_flags);
|
||||
|
||||
if (ver < 2) {
|
||||
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeAddModeLineReq);
|
||||
@@ -572,7 +572,7 @@ ProcVidModeAddModeLine(ClientPtr client)
|
||||
VidModeSetModeValue(mode, VIDMODE_FLAGS, stuff->flags);
|
||||
|
||||
if (stuff->privsize)
|
||||
- LogMessage(X_INFO, "AddModeLine - Privates in request have been ignored\n");
|
||||
+ DebugF("AddModeLine - Privates in request have been ignored\n");
|
||||
|
||||
/* Check that the mode is consistent with the monitor specs */
|
||||
switch (pVidMode->CheckModeForMonitor(pScreen, mode)) {
|
||||
@@ -601,7 +601,7 @@ ProcVidModeAddModeLine(ClientPtr client)
|
||||
|
||||
pVidMode->AddModeline(pScreen, mode);
|
||||
|
||||
- LogMessage(X_INFO, "AddModeLine - Succeeded\n");
|
||||
+ DebugF("AddModeLine - Succeeded\n");
|
||||
|
||||
return Success;
|
||||
}
|
||||
@@ -640,14 +640,14 @@ ProcVidModeDeleteModeLine(ClientPtr client)
|
||||
stuff->flags = oldstuff->flags;
|
||||
stuff->privsize = oldstuff->privsize;
|
||||
}
|
||||
- LogMessage(X_INFO, "DeleteModeLine - scrn: %d clock: %ld\n",
|
||||
- (int) stuff->screen, (unsigned long) stuff->dotclock);
|
||||
- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- stuff->hdisplay, stuff->hsyncstart,
|
||||
- stuff->hsyncend, stuff->htotal);
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal,
|
||||
- (unsigned long) stuff->flags);
|
||||
+ DebugF("DeleteModeLine - scrn: %d clock: %ld\n",
|
||||
+ (int) stuff->screen, (unsigned long) stuff->dotclock);
|
||||
+ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ stuff->hdisplay, stuff->hsyncstart,
|
||||
+ stuff->hsyncend, stuff->htotal);
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
+ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal,
|
||||
+ (unsigned long) stuff->flags);
|
||||
|
||||
if (ver < 2) {
|
||||
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeDeleteModeLineReq);
|
||||
@@ -662,11 +662,11 @@ ProcVidModeDeleteModeLine(ClientPtr client)
|
||||
bytes_to_int32(sizeof(xXF86VidModeDeleteModeLineReq));
|
||||
}
|
||||
if (len != stuff->privsize) {
|
||||
- LogMessage(X_INFO, "req_len = %ld, sizeof(Req) = %d, privsize = %ld, "
|
||||
- "len = %d, length = %d\n",
|
||||
- (unsigned long) client->req_len,
|
||||
- (int) sizeof(xXF86VidModeDeleteModeLineReq) >> 2,
|
||||
- (unsigned long) stuff->privsize, len, stuff->length);
|
||||
+ DebugF("req_len = %ld, sizeof(Req) = %d, privsize = %ld, "
|
||||
+ "len = %d, length = %d\n",
|
||||
+ (unsigned long) client->req_len,
|
||||
+ (int) sizeof(xXF86VidModeDeleteModeLineReq) >> 2,
|
||||
+ (unsigned long) stuff->privsize, len, stuff->length);
|
||||
return BadLength;
|
||||
}
|
||||
|
||||
@@ -681,19 +681,19 @@ ProcVidModeDeleteModeLine(ClientPtr client)
|
||||
if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock))
|
||||
return BadValue;
|
||||
|
||||
- LogMessage(X_INFO, "Checking against clock: %d (%d)\n",
|
||||
- VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock);
|
||||
- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_DISPLAY),
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART),
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_SYNCEND),
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_TOTAL));
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_DISPLAY),
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART),
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_SYNCEND),
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_TOTAL),
|
||||
- VidModeGetModeValue(mode, VIDMODE_FLAGS));
|
||||
+ DebugF("Checking against clock: %d (%d)\n",
|
||||
+ VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock);
|
||||
+ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_DISPLAY),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_SYNCEND),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_TOTAL));
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_DISPLAY),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_SYNCEND),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_TOTAL),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_FLAGS));
|
||||
|
||||
if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) &&
|
||||
MODEMATCH(mode, stuff))
|
||||
@@ -703,24 +703,24 @@ ProcVidModeDeleteModeLine(ClientPtr client)
|
||||
return BadValue;
|
||||
|
||||
do {
|
||||
- LogMessage(X_INFO, "Checking against clock: %d (%d)\n",
|
||||
- VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock);
|
||||
- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_DISPLAY),
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART),
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_SYNCEND),
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_TOTAL));
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_DISPLAY),
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART),
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_SYNCEND),
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_TOTAL),
|
||||
- VidModeGetModeValue(mode, VIDMODE_FLAGS));
|
||||
+ DebugF("Checking against clock: %d (%d)\n",
|
||||
+ VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock);
|
||||
+ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_DISPLAY),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_SYNCEND),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_TOTAL));
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_DISPLAY),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_SYNCEND),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_TOTAL),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_FLAGS));
|
||||
|
||||
if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) &&
|
||||
MODEMATCH(mode, stuff)) {
|
||||
pVidMode->DeleteModeline(pScreen, mode);
|
||||
- LogMessage(X_INFO, "DeleteModeLine - Succeeded\n");
|
||||
+ DebugF("DeleteModeLine - Succeeded\n");
|
||||
return Success;
|
||||
}
|
||||
} while (pVidMode->GetNextModeline(pScreen, &mode, &dotClock));
|
||||
@@ -761,12 +761,12 @@ ProcVidModeModModeLine(ClientPtr client)
|
||||
stuff->flags = oldstuff->flags;
|
||||
stuff->privsize = oldstuff->privsize;
|
||||
}
|
||||
- LogMessage(X_INFO, "ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- (int) stuff->screen, stuff->hdisplay, stuff->hsyncstart,
|
||||
- stuff->hsyncend, stuff->htotal);
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,
|
||||
- stuff->vtotal, (unsigned long) stuff->flags);
|
||||
+ DebugF("ModModeLine - scrn: %d hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ (int) stuff->screen, stuff->hdisplay, stuff->hsyncstart,
|
||||
+ stuff->hsyncend, stuff->htotal);
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
+ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend,
|
||||
+ stuff->vtotal, (unsigned long) stuff->flags);
|
||||
|
||||
if (ver < 2) {
|
||||
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeModModeLineReq);
|
||||
@@ -816,7 +816,7 @@ ProcVidModeModModeLine(ClientPtr client)
|
||||
VidModeSetModeValue(modetmp, VIDMODE_FLAGS, stuff->flags);
|
||||
|
||||
if (stuff->privsize)
|
||||
- LogMessage(X_INFO, "ModModeLine - Privates in request have been ignored\n");
|
||||
+ DebugF("ModModeLine - Privates in request have been ignored\n");
|
||||
|
||||
/* Check that the mode is consistent with the monitor specs */
|
||||
switch (pVidMode->CheckModeForMonitor(pScreen, modetmp)) {
|
||||
@@ -856,7 +856,7 @@ ProcVidModeModModeLine(ClientPtr client)
|
||||
pVidMode->SetCrtcForMode(pScreen, mode);
|
||||
pVidMode->SwitchMode(pScreen, mode);
|
||||
|
||||
- LogMessage(X_INFO, "ModModeLine - Succeeded\n");
|
||||
+ DebugF("ModModeLine - Succeeded\n");
|
||||
return Success;
|
||||
}
|
||||
|
||||
@@ -896,14 +896,14 @@ ProcVidModeValidateModeLine(ClientPtr client)
|
||||
stuff->privsize = oldstuff->privsize;
|
||||
}
|
||||
|
||||
- LogMessage(X_INFO, "ValidateModeLine - scrn: %d clock: %ld\n",
|
||||
- (int) stuff->screen, (unsigned long) stuff->dotclock);
|
||||
- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- stuff->hdisplay, stuff->hsyncstart,
|
||||
- stuff->hsyncend, stuff->htotal);
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal,
|
||||
- (unsigned long) stuff->flags);
|
||||
+ DebugF("ValidateModeLine - scrn: %d clock: %ld\n",
|
||||
+ (int) stuff->screen, (unsigned long) stuff->dotclock);
|
||||
+ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ stuff->hdisplay, stuff->hsyncstart,
|
||||
+ stuff->hsyncend, stuff->htotal);
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
+ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal,
|
||||
+ (unsigned long) stuff->flags);
|
||||
|
||||
if (ver < 2) {
|
||||
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeValidateModeLineReq);
|
||||
@@ -956,7 +956,7 @@ ProcVidModeValidateModeLine(ClientPtr client)
|
||||
VidModeSetModeValue(modetmp, VIDMODE_V_TOTAL, stuff->vtotal);
|
||||
VidModeSetModeValue(modetmp, VIDMODE_FLAGS, stuff->flags);
|
||||
if (stuff->privsize)
|
||||
- LogMessage(X_INFO, "ValidateModeLine - Privates in request have been ignored\n");
|
||||
+ DebugF("ValidateModeLine - Privates in request have been ignored\n");
|
||||
|
||||
/* Check that the mode is consistent with the monitor specs */
|
||||
if ((status =
|
||||
@@ -982,7 +982,7 @@ ProcVidModeValidateModeLine(ClientPtr client)
|
||||
swapl(&rep.status);
|
||||
}
|
||||
WriteToClient(client, sizeof(xXF86VidModeValidateModeLineReply), &rep);
|
||||
- LogMessage(X_INFO, "ValidateModeLine - Succeeded (status = %d)\n", status);
|
||||
+ DebugF("ValidateModeLine - Succeeded (status = %d)\n", status);
|
||||
|
||||
return Success;
|
||||
}
|
||||
@@ -1046,14 +1046,14 @@ ProcVidModeSwitchToMode(ClientPtr client)
|
||||
stuff->privsize = oldstuff->privsize;
|
||||
}
|
||||
|
||||
- LogMessage(X_INFO, "SwitchToMode - scrn: %d clock: %ld\n",
|
||||
- (int) stuff->screen, (unsigned long) stuff->dotclock);
|
||||
- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- stuff->hdisplay, stuff->hsyncstart,
|
||||
- stuff->hsyncend, stuff->htotal);
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
- stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal,
|
||||
- (unsigned long) stuff->flags);
|
||||
+ DebugF("SwitchToMode - scrn: %d clock: %ld\n",
|
||||
+ (int) stuff->screen, (unsigned long) stuff->dotclock);
|
||||
+ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ stuff->hdisplay, stuff->hsyncstart,
|
||||
+ stuff->hsyncend, stuff->htotal);
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %ld\n",
|
||||
+ stuff->vdisplay, stuff->vsyncstart, stuff->vsyncend, stuff->vtotal,
|
||||
+ (unsigned long) stuff->flags);
|
||||
|
||||
if (ver < 2) {
|
||||
REQUEST_AT_LEAST_SIZE(xXF86OldVidModeSwitchToModeReq);
|
||||
@@ -1089,19 +1089,19 @@ ProcVidModeSwitchToMode(ClientPtr client)
|
||||
return BadValue;
|
||||
|
||||
do {
|
||||
- LogMessage(X_INFO, "Checking against clock: %d (%d)\n",
|
||||
- VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock);
|
||||
- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_DISPLAY),
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART),
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_SYNCEND),
|
||||
- VidModeGetModeValue(mode, VIDMODE_H_TOTAL));
|
||||
- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_DISPLAY),
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART),
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_SYNCEND),
|
||||
- VidModeGetModeValue(mode, VIDMODE_V_TOTAL),
|
||||
- VidModeGetModeValue(mode, VIDMODE_FLAGS));
|
||||
+ DebugF("Checking against clock: %d (%d)\n",
|
||||
+ VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock);
|
||||
+ DebugF(" hdsp: %d hbeg: %d hend: %d httl: %d\n",
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_DISPLAY),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_SYNCSTART),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_SYNCEND),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_H_TOTAL));
|
||||
+ DebugF(" vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n",
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_DISPLAY),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_SYNCSTART),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_SYNCEND),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_V_TOTAL),
|
||||
+ VidModeGetModeValue(mode, VIDMODE_FLAGS));
|
||||
|
||||
if ((pVidMode->GetDotClock(pScreen, stuff->dotclock) == dotClock) &&
|
||||
MODEMATCH(mode, stuff)) {
|
||||
@@ -1109,7 +1109,7 @@ ProcVidModeSwitchToMode(ClientPtr client)
|
||||
if (!pVidMode->SwitchMode(pScreen, mode))
|
||||
return BadValue;
|
||||
|
||||
- LogMessage(X_INFO, "SwitchToMode - Succeeded\n");
|
||||
+ DebugF("SwitchToMode - Succeeded\n");
|
||||
return Success;
|
||||
}
|
||||
} while (pVidMode->GetNextModeline(pScreen, &mode, &dotClock));
|
||||
--
|
||||
2.5.0
|
||||
|
36
0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch
Normal file
36
0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch
Normal file
@ -0,0 +1,36 @@
|
||||
From a288cf58a0dc0f965a6f964c76bb86bb1989d797 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@redhat.com>
|
||||
Date: Wed, 16 Mar 2016 10:45:54 +1000
|
||||
Subject: [PATCH xserver] glamor: swizzle RED to 0 for alpha textures
|
||||
|
||||
I'm pretty sure Eric suspected this could cause a problem, and we
|
||||
couldn't find a test. Well loading feedly in firefox seems to trigger
|
||||
badness that this solves.
|
||||
|
||||
bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94554
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
Tested-by: Timo Aaltonen <tjaalton@ubuntu.com>
|
||||
---
|
||||
glamor/glamor_fbo.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/glamor/glamor_fbo.c b/glamor/glamor_fbo.c
|
||||
index a531f60..f4f8749 100644
|
||||
--- a/glamor/glamor_fbo.c
|
||||
+++ b/glamor/glamor_fbo.c
|
||||
@@ -352,8 +352,10 @@ _glamor_create_tex(glamor_screen_private *glamor_priv,
|
||||
glBindTexture(GL_TEXTURE_2D, tex);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
- if (format == glamor_priv->one_channel_format && format == GL_RED)
|
||||
+ if (format == glamor_priv->one_channel_format && format == GL_RED) {
|
||||
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_R, GL_ZERO);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_RED);
|
||||
+ }
|
||||
glamor_priv->suppress_gl_out_of_memory_logging = true;
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0,
|
||||
format, GL_UNSIGNED_BYTE, NULL);
|
||||
--
|
||||
2.5.0
|
||||
|
89
0001-present-Improve-scaling-of-vblank-handler.patch
Normal file
89
0001-present-Improve-scaling-of-vblank-handler.patch
Normal file
@ -0,0 +1,89 @@
|
||||
From e10c70e81c8371438093ea594eea20d31747bf71 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Sat, 14 Feb 2015 09:58:43 +0000
|
||||
Subject: [PATCH xserver 1/2] present: Improve scaling of vblank handler
|
||||
|
||||
With large numbers of queued vblank, the list iteration on every
|
||||
interupt dominates processing time. If we reorder the list to be in
|
||||
ascending event order, then not only is also likely to be in order for
|
||||
notification queries (i.e. the notification will be near the start of
|
||||
the list), we can also stop iterating when past the target event_id.
|
||||
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
---
|
||||
present/present.c | 24 +++++++++++++++---------
|
||||
1 file changed, 15 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/present/present.c b/present/present.c
|
||||
index 55f6aa7..97ad783 100644
|
||||
--- a/present/present.c
|
||||
+++ b/present/present.c
|
||||
@@ -517,19 +517,22 @@ present_flip_notify(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
|
||||
void
|
||||
present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc)
|
||||
{
|
||||
- present_vblank_ptr vblank, tmp;
|
||||
+ present_vblank_ptr vblank;
|
||||
int s;
|
||||
|
||||
if (!event_id)
|
||||
return;
|
||||
DebugPresent(("\te %lld ust %lld msc %lld\n", event_id, ust, msc));
|
||||
- xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
|
||||
- if (vblank->event_id == event_id) {
|
||||
+ xorg_list_for_each_entry(vblank, &present_exec_queue, event_queue) {
|
||||
+ int64_t match = event_id - vblank->event_id;
|
||||
+ if (match == 0) {
|
||||
present_execute(vblank, ust, msc);
|
||||
return;
|
||||
}
|
||||
+ if (match < 0)
|
||||
+ break;
|
||||
}
|
||||
- xorg_list_for_each_entry_safe(vblank, tmp, &present_flip_queue, event_queue) {
|
||||
+ xorg_list_for_each_entry(vblank, &present_flip_queue, event_queue) {
|
||||
if (vblank->event_id == event_id) {
|
||||
present_flip_notify(vblank, ust, msc);
|
||||
return;
|
||||
@@ -943,7 +946,7 @@ present_pixmap(WindowPtr window,
|
||||
vblank->pixmap->drawable.id, vblank->window->drawable.id,
|
||||
target_crtc, vblank->flip, vblank->sync_flip, vblank->serial));
|
||||
|
||||
- xorg_list_add(&vblank->event_queue, &present_exec_queue);
|
||||
+ xorg_list_append(&vblank->event_queue, &present_exec_queue);
|
||||
vblank->queued = TRUE;
|
||||
if (msc_is_after(target_msc, crtc_msc)) {
|
||||
ret = present_queue_vblank(screen, target_crtc, vblank->event_id, target_msc);
|
||||
@@ -967,7 +970,7 @@ no_mem:
|
||||
void
|
||||
present_abort_vblank(ScreenPtr screen, RRCrtcPtr crtc, uint64_t event_id, uint64_t msc)
|
||||
{
|
||||
- present_vblank_ptr vblank, tmp;
|
||||
+ present_vblank_ptr vblank;
|
||||
|
||||
if (crtc == NULL)
|
||||
present_fake_abort_vblank(screen, event_id, msc);
|
||||
@@ -978,14 +981,17 @@ present_abort_vblank(ScreenPtr screen, RRCrtcPtr crtc, uint64_t event_id, uint64
|
||||
(*screen_priv->info->abort_vblank) (crtc, event_id, msc);
|
||||
}
|
||||
|
||||
- xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
|
||||
- if (vblank->event_id == event_id) {
|
||||
+ xorg_list_for_each_entry(vblank, &present_exec_queue, event_queue) {
|
||||
+ int64_t match = event_id - vblank->event_id;
|
||||
+ if (match == 0) {
|
||||
xorg_list_del(&vblank->event_queue);
|
||||
vblank->queued = FALSE;
|
||||
return;
|
||||
}
|
||||
+ if (match < 0)
|
||||
+ break;
|
||||
}
|
||||
- xorg_list_for_each_entry_safe(vblank, tmp, &present_flip_queue, event_queue) {
|
||||
+ xorg_list_for_each_entry(vblank, &present_flip_queue, event_queue) {
|
||||
if (vblank->event_id == event_id) {
|
||||
xorg_list_del(&vblank->event_queue);
|
||||
return;
|
||||
--
|
||||
2.5.0
|
||||
|
55
0002-present-Fix-presentation-of-flips-out-of-order.patch
Normal file
55
0002-present-Fix-presentation-of-flips-out-of-order.patch
Normal file
@ -0,0 +1,55 @@
|
||||
From c2794c826378e89c5914112a59f2ad939a38a262 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Sat, 14 Feb 2015 09:58:44 +0000
|
||||
Subject: [PATCH xserver 2/2] present: Fix presentation of flips out of order
|
||||
|
||||
The flip queue currently only holds events submitted to the driver for
|
||||
flipping, awaiting the completion notifier. It is short. We therefore
|
||||
can speed up interrupt processing by keeping the small number of events
|
||||
ready to be flipped on the end of the flip queue. By appending the
|
||||
events to the flip_queue in the order that they become ready, we also
|
||||
resolve one issue causing Present to display frames out of order.
|
||||
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
---
|
||||
present/present.c | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/present/present.c b/present/present.c
|
||||
index 97ad783..43eeecb 100644
|
||||
--- a/present/present.c
|
||||
+++ b/present/present.c
|
||||
@@ -353,10 +353,10 @@ present_re_execute(present_vblank_ptr vblank)
|
||||
static void
|
||||
present_flip_try_ready(ScreenPtr screen)
|
||||
{
|
||||
- present_vblank_ptr vblank, tmp;
|
||||
+ present_vblank_ptr vblank;
|
||||
|
||||
- xorg_list_for_each_entry_safe(vblank, tmp, &present_exec_queue, event_queue) {
|
||||
- if (vblank->flip_ready) {
|
||||
+ xorg_list_for_each_entry(vblank, &present_flip_queue, event_queue) {
|
||||
+ if (vblank->queued) {
|
||||
present_re_execute(vblank);
|
||||
return;
|
||||
}
|
||||
@@ -656,6 +656,8 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
|
||||
DebugPresent(("\tr %lld %p (pending %p unflip %lld)\n",
|
||||
vblank->event_id, vblank,
|
||||
screen_priv->flip_pending, screen_priv->unflip_event_id));
|
||||
+ xorg_list_del(&vblank->event_queue);
|
||||
+ xorg_list_append(&vblank->event_queue, &present_flip_queue);
|
||||
vblank->flip_ready = TRUE;
|
||||
return;
|
||||
}
|
||||
@@ -994,6 +996,7 @@ present_abort_vblank(ScreenPtr screen, RRCrtcPtr crtc, uint64_t event_id, uint64
|
||||
xorg_list_for_each_entry(vblank, &present_flip_queue, event_queue) {
|
||||
if (vblank->event_id == event_id) {
|
||||
xorg_list_del(&vblank->event_queue);
|
||||
+ vblank->queued = FALSE;
|
||||
return;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.5.0
|
||||
|
@ -45,7 +45,7 @@
|
||||
Summary: X.Org X11 X server
|
||||
Name: xorg-x11-server
|
||||
Version: 1.18.2
|
||||
Release: 1%{?gitdate:.%{gitdate}}%{dist}
|
||||
Release: 2%{?gitdate:.%{gitdate}}%{dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X
|
||||
@ -97,6 +97,11 @@ Patch9200: 0001-Xi-don-t-deliver-emulated-motion-events-for-non-emul.patch
|
||||
# because the display-managers are not ready yet, do not upstream
|
||||
Patch10000: 0001-Fedora-hack-Make-the-suid-root-wrapper-always-start-.patch
|
||||
|
||||
Patch10001: 0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch
|
||||
Patch10002: 0001-present-Improve-scaling-of-vblank-handler.patch
|
||||
Patch10003: 0002-present-Fix-presentation-of-flips-out-of-order.patch
|
||||
Patch10004: 0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine-debug-m.patch
|
||||
|
||||
%global moduledir %{_libdir}/xorg/modules
|
||||
%global drimoduledir %{_libdir}/dri
|
||||
%global sdkdir %{_includedir}/xorg
|
||||
@ -634,6 +639,11 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete
|
||||
|
||||
|
||||
%changelog
|
||||
* Thu Mar 17 2016 Adam Jackson <ajax@redhat.com> 1.18.2-2
|
||||
- Fix red tint artifacts in glamor
|
||||
- Fix a performance cliff in present triggered by plasma
|
||||
- Silence some xf86vidmode log spam
|
||||
|
||||
* Fri Mar 11 2016 Adam Jackson <ajax@redhat.com> 1.18.2-1
|
||||
- xserver 1.18.2
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user