diff options
Diffstat (limited to 'xorg-server-hwcursor-gamma')
4 files changed, 452 insertions, 4 deletions
diff --git a/xorg-server-hwcursor-gamma/0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine.patch b/xorg-server-hwcursor-gamma/0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine.patch new file mode 100644 index 0000000..2dbbb85 --- /dev/null +++ b/xorg-server-hwcursor-gamma/0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine.patch @@ -0,0 +1,374 @@ +From 75eecf28ae3709181a51571132b0accd9cae316e 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: 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> + +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,46 +681,46 @@ ProcVidModeDeleteModeLine(ClientPtr client) + if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock)) + return BadValue; + +- LogMessage(X_INFO, "Checking against clock: %d (%d)\n", ++ 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)) ++ return BadValue; ++ ++ if (!pVidMode->GetFirstModeline(pScreen, &mode, &dotClock)) ++ return BadValue; ++ ++ do { ++ DebugF("Checking against clock: %d (%d)\n", + VidModeGetModeValue(mode, VIDMODE_CLOCK), dotClock); +- LogMessage(X_INFO, " hdsp: %d hbeg: %d hend: %d httl: %d\n", ++ 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)); +- LogMessage(X_INFO, " vdsp: %d vbeg: %d vend: %d vttl: %d flags: %d\n", ++ 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)) +- return BadValue; +- +- if (!pVidMode->GetFirstModeline(pScreen, &mode, &dotClock)) +- 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)); +- + 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)); +-- +cgit v0.10.2 + diff --git a/xorg-server-hwcursor-gamma/0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch b/xorg-server-hwcursor-gamma/0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch new file mode 100644 index 0000000..dc2e7ef --- /dev/null +++ b/xorg-server-hwcursor-gamma/0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch @@ -0,0 +1,16 @@ +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); diff --git a/xorg-server-hwcursor-gamma/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch b/xorg-server-hwcursor-gamma/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch new file mode 100644 index 0000000..adf5c7a --- /dev/null +++ b/xorg-server-hwcursor-gamma/0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch @@ -0,0 +1,43 @@ +From 3b385105b2d19a1c55e9779ae88d775185eea231 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com> +Date: Thu, 24 Mar 2016 17:42:47 +0900 +Subject: [PATCH xserver] present: Only requeue for next MSC after flip failure +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This code was added to deal with the driver present hook failing, in +which case we need to wait for the next MSC before executing the +presentation. + +However, it could also take effect in cases where the driver incorrectly +thinks the current MSC matches the target one (e.g. due to the kernel +interface only supporting 32-bit MSC values), in which case it could +result in the presentation getting requeued over and over. + +To prevent such issues, check specifically for the target MSC +immediately following the current MSC. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94596 +Signed-off-by: Michel Dänzer <michel.daenzer@amd.com> +Reviewed-by: Keith Packard <keithp@keithp.com> +--- + present/present.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/present/present.c b/present/present.c +index 55f6aa7..105e2bf 100644 +--- a/present/present.c ++++ b/present/present.c +@@ -726,7 +726,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc) + } + + /* If present_flip failed, we may have to requeue for the target MSC */ +- if (msc_is_after(vblank->target_msc, crtc_msc) && ++ if (vblank->target_msc == crtc_msc + 1 && + Success == present_queue_vblank(screen, + vblank->crtc, + vblank->event_id, +-- +2.7.4 + diff --git a/xorg-server-hwcursor-gamma/PKGBUILD b/xorg-server-hwcursor-gamma/PKGBUILD index adf39b3..c3bb4a9 100644 --- a/xorg-server-hwcursor-gamma/PKGBUILD +++ b/xorg-server-hwcursor-gamma/PKGBUILD @@ -4,8 +4,8 @@ _pkgname=xorg-server pkgname=xorg-server-hwcursor-gamma -pkgver=1.18.1 -pkgrel=1 # 1=2 in xorg-server +pkgver=1.18.2 +pkgrel=1 # 4 in xorg-server pkgdesc="Xorg X server with patch to apply gamma ramps on hardware cursors" depends=(libepoxy libxdmcp libxfont libpciaccess libdrm pixman libgcrypt libxau xorg-server-common libxshmfence libgl xf86-input-evdev) provides=("xorg-server=${pkgver}" 'X-ABI-VIDEODRV_VERSION=20' 'X-ABI-XINPUT_VERSION=22.1' 'X-ABI-EXTENSION_VERSION=9.0' 'x-server') @@ -24,12 +24,18 @@ makedepends=('pixman' 'libx11' 'mesa' 'mesa-libgl' 'xf86driproto' 'xcmiscproto' source=(${url}/releases/individual/xserver/${_pkgname}-${pkgver}.tar.bz2 xvfb-run xvfb-run.1 + 0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch + 0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine.patch + 0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch 0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch 0002-Fix-for-full-and-semi-transparency-under-negative-im.patch 0003-Use-Harms-s-suggest-do-not-use-inline-if.-And-fix-si.patch) -sha256sums=('85ec56dbeb89a951295cdf4f39bf38e515f900d35e06d4a8081b114d1520789d' +sha256sums=('022142b07f6477d140dcc915902df326408a53ca3a352426a499f142b25d632d' 'ff0156309470fc1d378fd2e104338020a884295e285972cc88e250e031cc35b9' - '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776' + '2460adccd3362fefd4cdc5f1c70f332d7b578091fb9167bf88b5f91265bbd776' + '10c66c10f4f71930e2ac3f6e07881e228ca88542af449d2c69c7744ec87335df' + '72755a652e72144e3f28c8fa959b4a6df5def838db3cde5077a626e97baab591' + '70c84bf1f7cbc818692fb56f57c8b8ef2ea057bc05380b2f797ecba742b7ce31' 'bea348631dedd66475d84ac2cfe0840f22a80a642b4680d73fead4749e47f055' 'be9169b937b5d0b44f7f05d7c08aaa5f0c1092e128ce261d9cb350f09dfe1fb0' '0a643ae83e03faee0f4db669a33c5b3c99edbba5c86cde2c83962ae536d31081') @@ -37,6 +43,15 @@ sha256sums=('85ec56dbeb89a951295cdf4f39bf38e515f900d35e06d4a8081b114d1520789d' prepare() { cd "${_pkgname}-${pkgver}" + msg2 'Fix red tint in Firefox' + patch -Np1 -i ../0001-glamor-swizzle-RED-to-0-for-alpha-textures.patch + + msg2 'Fix flooding of Xorg log file' + patch -Np1 -i ../0001-Xext-vidmode-Reduce-verbosity-of-GetModeLine.patch + + msg2 'Fix FS#48549' + patch -Np1 -i ../0001-present-Only-requeue-for-next-MSC-after-flip-failure.patch + msg2 'Apply hardware cursors gamma adjustments patches' patch -Np1 -i ../0001-When-an-cursor-is-set-it-is-adjusted-to-use-the.patch patch -Np1 -i ../0002-Fix-for-full-and-semi-transparency-under-negative-im.patch |