add dri3 gnome-shell startup fix from Jasper.
This commit is contained in:
parent
f002bb3166
commit
d3fa447215
@ -0,0 +1,72 @@
|
|||||||
|
From b4dcf87f34f68111acd9d364739938721fc692f4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Jasper St. Pierre" <jstpierre@mecheye.net>
|
||||||
|
Date: Tue, 24 Jun 2014 13:43:53 -0400
|
||||||
|
Subject: [PATCH] glxext: Send the Drawable's ID in the GLX_BufferSwapComplete
|
||||||
|
event
|
||||||
|
|
||||||
|
While the official INTEL_swap_event specification says that the drawable
|
||||||
|
field should contain the GLXDrawable, not the Drawable, the existing
|
||||||
|
DRI2 code in dri2.c that translates from DRI2_BufferSwapComplete sends out
|
||||||
|
GLX_BufferSwapComplete with the Drawable's ID, so existing codebases
|
||||||
|
like Clutter/Cogl rely on getting the Drawable.
|
||||||
|
|
||||||
|
Match DRI2's error here and stuff the event with the X Drawable, not
|
||||||
|
the GLX drawable.
|
||||||
|
|
||||||
|
This fixes apps seeing wrong drawables through an indirect GLX context
|
||||||
|
or with DRI3, which uses the GLX_BufferSwapComplete event directly on
|
||||||
|
the wire instead of translates Present in mesa.
|
||||||
|
|
||||||
|
At the same time, also modify the structure for the event to make sure
|
||||||
|
that clients don't make the same mistake. This is not an API or ABI
|
||||||
|
break, as GLXDrawable and Drawable are both typedefs for XID.
|
||||||
|
|
||||||
|
Signed-off-by: Jasper St. Pierre <jstpierre@mecheye.net>
|
||||||
|
Reviewed-by: Axel Davy <axel.davy@ens.fr>
|
||||||
|
Cc: "10.1 10.2" <mesa-stable@lists.freedesktop.org>
|
||||||
|
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||||
|
---
|
||||||
|
include/GL/glx.h | 2 +-
|
||||||
|
src/glx/glxext.c | 9 +++++----
|
||||||
|
2 files changed, 6 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/GL/glx.h b/include/GL/glx.h
|
||||||
|
index 234abc0..78f5052 100644
|
||||||
|
--- a/include/GL/glx.h
|
||||||
|
+++ b/include/GL/glx.h
|
||||||
|
@@ -518,7 +518,7 @@ typedef struct {
|
||||||
|
unsigned long serial; /* # of last request processed by server */
|
||||||
|
Bool send_event; /* true if this came from a SendEvent request */
|
||||||
|
Display *display; /* Display the event was read from */
|
||||||
|
- GLXDrawable drawable; /* drawable on which event was requested in event mask */
|
||||||
|
+ Drawable drawable; /* drawable on which event was requested in event mask */
|
||||||
|
int event_type;
|
||||||
|
int64_t ust;
|
||||||
|
int64_t msc;
|
||||||
|
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
|
||||||
|
index 94582f6..68c359e 100644
|
||||||
|
--- a/src/glx/glxext.c
|
||||||
|
+++ b/src/glx/glxext.c
|
||||||
|
@@ -134,14 +134,15 @@ __glXWireToEvent(Display *dpy, XEvent *event, xEvent *wire)
|
||||||
|
GLXBufferSwapComplete *aevent = (GLXBufferSwapComplete *)event;
|
||||||
|
xGLXBufferSwapComplete2 *awire = (xGLXBufferSwapComplete2 *)wire;
|
||||||
|
struct glx_drawable *glxDraw = GetGLXDrawable(dpy, awire->drawable);
|
||||||
|
- aevent->event_type = awire->event_type;
|
||||||
|
- aevent->drawable = awire->drawable;
|
||||||
|
- aevent->ust = ((CARD64)awire->ust_hi << 32) | awire->ust_lo;
|
||||||
|
- aevent->msc = ((CARD64)awire->msc_hi << 32) | awire->msc_lo;
|
||||||
|
|
||||||
|
if (!glxDraw)
|
||||||
|
return False;
|
||||||
|
|
||||||
|
+ aevent->event_type = awire->event_type;
|
||||||
|
+ aevent->drawable = glxDraw->xDrawable;
|
||||||
|
+ aevent->ust = ((CARD64)awire->ust_hi << 32) | awire->ust_lo;
|
||||||
|
+ aevent->msc = ((CARD64)awire->msc_hi << 32) | awire->msc_lo;
|
||||||
|
+
|
||||||
|
if (awire->sbc < glxDraw->lastEventSbc)
|
||||||
|
glxDraw->eventSbcWrap += 0x100000000;
|
||||||
|
glxDraw->lastEventSbc = awire->sbc;
|
||||||
|
--
|
||||||
|
2.0.0
|
||||||
|
|
10
mesa.spec
10
mesa.spec
@ -59,7 +59,7 @@
|
|||||||
Summary: Mesa graphics libraries
|
Summary: Mesa graphics libraries
|
||||||
Name: mesa
|
Name: mesa
|
||||||
Version: 10.2.2
|
Version: 10.2.2
|
||||||
Release: 1.%{gitdate}%{?dist}
|
Release: 2.%{gitdate}%{?dist}
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
URL: http://www.mesa3d.org
|
URL: http://www.mesa3d.org
|
||||||
@ -81,6 +81,9 @@ Patch12: mesa-8.0.1-fix-16bpp.patch
|
|||||||
Patch15: mesa-9.2-hardware-float.patch
|
Patch15: mesa-9.2-hardware-float.patch
|
||||||
Patch20: mesa-10.2-evergreen-big-endian.patch
|
Patch20: mesa-10.2-evergreen-big-endian.patch
|
||||||
|
|
||||||
|
# dri3 GLX_INTEL_swap_event fix
|
||||||
|
Patch30: 0001-glxext-Send-the-Drawable-s-ID-in-the-GLX_BufferSwapC.patch
|
||||||
|
|
||||||
# https://bugs.freedesktop.org/show_bug.cgi?id=73512
|
# https://bugs.freedesktop.org/show_bug.cgi?id=73512
|
||||||
Patch99: 0001-opencl-use-versioned-.so-in-mesa.icd.patch
|
Patch99: 0001-opencl-use-versioned-.so-in-mesa.icd.patch
|
||||||
|
|
||||||
@ -347,6 +350,8 @@ grep -q ^/ src/gallium/auxiliary/vl/vl_decoder.c && exit 1
|
|||||||
%patch15 -p1 -b .hwfloat
|
%patch15 -p1 -b .hwfloat
|
||||||
%patch20 -p1 -b .egbe
|
%patch20 -p1 -b .egbe
|
||||||
|
|
||||||
|
%patch30 -p1 -b .dri3fix
|
||||||
|
|
||||||
%if 0%{?with_opencl}
|
%if 0%{?with_opencl}
|
||||||
%patch99 -p1 -b .icd
|
%patch99 -p1 -b .icd
|
||||||
%endif
|
%endif
|
||||||
@ -674,6 +679,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jun 27 2014 Dave Airlie <airlied@redhat.com> 10.2.2-2.20140625
|
||||||
|
- add dri3 gnome-shell startup fix from Jasper.
|
||||||
|
|
||||||
* Wed Jun 25 2014 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 10.2.2-1.20140625
|
* Wed Jun 25 2014 Igor Gnatenko <i.gnatenko.brain@gmail.com> - 10.2.2-1.20140625
|
||||||
- 10.2.2 upstream release
|
- 10.2.2 upstream release
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user