xserver 1.18.4
This commit is contained in:
parent
e6e01954a9
commit
c814894df7
@ -1,34 +0,0 @@
|
||||
From 1f90ba995c8f22d4e69b347f2e3a49c2949024d8 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Wed, 9 Mar 2016 10:45:48 +1000
|
||||
Subject: [PATCH xserver] Xi: don't deliver emulated motion events for
|
||||
non-emulating touches
|
||||
|
||||
The touchpoint knows whether it should be emulating or not and we have a check
|
||||
for that later. Check for this before we generate the event and try to deliver
|
||||
it, lest we trigger a bug warning.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1282252
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
Xi/exevents.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/Xi/exevents.c b/Xi/exevents.c
|
||||
index 74e49ed..5a0b68d 100644
|
||||
--- a/Xi/exevents.c
|
||||
+++ b/Xi/exevents.c
|
||||
@@ -1379,6 +1379,9 @@ DeliverTouchEmulatedEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
|
||||
if (!TouchResourceIsOwner(ti, listener->listener))
|
||||
return !Success;
|
||||
|
||||
+ if (!ti->emulate_pointer)
|
||||
+ return !Success;
|
||||
+
|
||||
nevents = TouchConvertToPointerEvent(ev, &motion, &button);
|
||||
BUG_RETURN_VAL(nevents == 0, BadValue);
|
||||
|
||||
--
|
||||
2.5.0
|
||||
|
@ -1,89 +0,0 @@
|
||||
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
|
||||
|
@ -1,30 +0,0 @@
|
||||
From fc1f61b75c9712e24ff665f95d62771f39eba1c7 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@gmail.com>
|
||||
Date: Fri, 29 Apr 2016 14:01:30 +1000
|
||||
Subject: [PATCH 1/4] randr/provider: only allow slave gpu to be offload
|
||||
sources.
|
||||
|
||||
The other way around makes no sense.
|
||||
|
||||
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
randr/rrprovider.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/randr/rrprovider.c b/randr/rrprovider.c
|
||||
index bbb8e51..5329f41 100644
|
||||
--- a/randr/rrprovider.c
|
||||
+++ b/randr/rrprovider.c
|
||||
@@ -325,6 +325,8 @@ ProcRRSetProviderOffloadSink(ClientPtr client)
|
||||
VERIFY_RR_PROVIDER(stuff->provider, provider, DixReadAccess);
|
||||
if (!(provider->capabilities & RR_Capability_SourceOffload))
|
||||
return BadValue;
|
||||
+ if (!provider->pScreen->isGPU)
|
||||
+ return BadValue;
|
||||
|
||||
if (stuff->sink_provider) {
|
||||
VERIFY_RR_PROVIDER(stuff->sink_provider, sink_provider, DixReadAccess);
|
||||
--
|
||||
2.5.5
|
||||
|
@ -1,54 +0,0 @@
|
||||
From edd24aa50b17849b904a3ac5429e333bac9bac9c Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Date: Mon, 6 Jun 2016 09:22:28 +0200
|
||||
Subject: [PATCH xserver] wayland: clear resource for pixmap on unrealize
|
||||
|
||||
On cursor unrealize, the associated pixmap is destroyed, make sure we
|
||||
clear the pointer from the private resource and check for the value
|
||||
being non-null when setting or destroying the cursor.
|
||||
|
||||
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
|
||||
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96246
|
||||
---
|
||||
hw/xwayland/xwayland-cursor.c | 15 +++++++++++++++
|
||||
1 file changed, 15 insertions(+)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-cursor.c b/hw/xwayland/xwayland-cursor.c
|
||||
index 76729db..74dfe4e 100644
|
||||
--- a/hw/xwayland/xwayland-cursor.c
|
||||
+++ b/hw/xwayland/xwayland-cursor.c
|
||||
@@ -76,8 +76,20 @@ static Bool
|
||||
xwl_unrealize_cursor(DeviceIntPtr device, ScreenPtr screen, CursorPtr cursor)
|
||||
{
|
||||
PixmapPtr pixmap;
|
||||
+ struct xwl_seat *xwl_seat;
|
||||
|
||||
pixmap = dixGetPrivate(&cursor->devPrivates, &xwl_cursor_private_key);
|
||||
+ if (!pixmap)
|
||||
+ return TRUE;
|
||||
+
|
||||
+ dixSetPrivate(&cursor->devPrivates, &xwl_cursor_private_key, NULL);
|
||||
+
|
||||
+ /* When called from FreeCursor(), device is always NULL */
|
||||
+ if (device) {
|
||||
+ xwl_seat = device->public.devicePrivate;
|
||||
+ if (xwl_seat && cursor == xwl_seat->x_cursor)
|
||||
+ xwl_seat->x_cursor = NULL;
|
||||
+ }
|
||||
|
||||
return xwl_shm_destroy_pixmap(pixmap);
|
||||
}
|
||||
@@ -122,6 +134,9 @@ xwl_seat_set_cursor(struct xwl_seat *xwl_seat)
|
||||
|
||||
cursor = xwl_seat->x_cursor;
|
||||
pixmap = dixGetPrivate(&cursor->devPrivates, &xwl_cursor_private_key);
|
||||
+ if (!pixmap)
|
||||
+ return;
|
||||
+
|
||||
stride = cursor->bits->width * 4;
|
||||
if (cursor->bits->argb)
|
||||
memcpy(pixmap->devPrivate.ptr,
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,45 +0,0 @@
|
||||
From ed4f5ebde487bda2b8bda4cb4a1455f41a7c2933 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Tue, 28 Jun 2016 11:42:41 +1000
|
||||
Subject: [PATCH xserver] xkb: add a cause to the xkb indicator update after a
|
||||
keymap change
|
||||
|
||||
Regression introduce by ac164e58870d which calls
|
||||
XkbUpdateAllDeviceIndicators() with two NULL arguments. A few layers down into
|
||||
the stack and we triggered a NULL-pointer dereference. In theory a NULL cause
|
||||
is acceptable since we don't actually change modifier state here. Instead of
|
||||
updating all places to check for NULL just set the cause to the client
|
||||
request and go to the pub.
|
||||
|
||||
https://bugs.freedesktop.org/show_bug.cgi?id=96384
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
xkb/xkb.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/xkb/xkb.c b/xkb/xkb.c
|
||||
index 3a6ad65..678f823 100644
|
||||
--- a/xkb/xkb.c
|
||||
+++ b/xkb/xkb.c
|
||||
@@ -5706,6 +5706,7 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
xkbGetGeometryReply grep = { 0 };
|
||||
XkbComponentNamesRec names = { 0 };
|
||||
XkbDescPtr xkb, new;
|
||||
+ XkbEventCauseRec cause;
|
||||
unsigned char *str;
|
||||
char mapFile[PATH_MAX];
|
||||
unsigned len;
|
||||
@@ -6016,7 +6017,8 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
new = NULL;
|
||||
}
|
||||
XkbFreeComponentNames(&names, FALSE);
|
||||
- XkbUpdateAllDeviceIndicators(NULL, NULL);
|
||||
+ XkbSetCauseXkbReq(&cause, X_kbGetKbdByName, client);
|
||||
+ XkbUpdateAllDeviceIndicators(NULL, &cause);
|
||||
|
||||
return Success;
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,90 +0,0 @@
|
||||
From 0d2fea8a8ce5e1d2693c25dbeff00461c72427a2 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Fri, 29 Apr 2016 15:56:03 +1000
|
||||
Subject: [PATCH xserver] xkb: after changing the keymap, force an indicator
|
||||
update
|
||||
|
||||
When NumLock is on and a new keymap is applied, the next modifier state change
|
||||
will turn off that LED (but leave the state enabled). The cause for this is a
|
||||
bit convoluted:
|
||||
* the SLI explicitState is copied from the current state in
|
||||
ProcXkbGetKbdByName. Thus, if NumLock is on, that state is 0x2.
|
||||
* on the next modifier key press (e.g. Shift), XkbApplyState() calls into
|
||||
XkbUpdateIndicators() -> XkbUpdateLedAutoState() to update SLIs (if any) for
|
||||
the currently changed modifier. But it does so with a mask only for the
|
||||
changed modifier (i.e. for Shift).
|
||||
* XkbUpdateLedAutoState() calculates the state based on this mask and
|
||||
ends up with 0 because we don't have a Shift LED and we masked out the
|
||||
others.
|
||||
* XkbUpdateLedAutoState() compares that state with the previous state (which
|
||||
is still 0x2) and then proceeds to turn the LED off
|
||||
|
||||
This doesn't happen in the normal case because either the mask encompasses all
|
||||
modifiers or the state matches of the masked-out modifiers matches the old
|
||||
state.
|
||||
|
||||
Avoid this issue by forcing an SLI update after changing the keymap. This
|
||||
updates the sli->effectiveState and thus restores everything to happy working
|
||||
order.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1047151
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
---
|
||||
include/xkbsrv.h | 4 ++++
|
||||
xkb/xkb.c | 3 ++-
|
||||
xkb/xkbLEDs.c | 2 +-
|
||||
3 files changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
|
||||
index cc6307a..7e71089 100644
|
||||
--- a/include/xkbsrv.h
|
||||
+++ b/include/xkbsrv.h
|
||||
@@ -496,6 +496,10 @@ extern _X_EXPORT void XkbUpdateIndicators(DeviceIntPtr /* keybd */ ,
|
||||
XkbEventCausePtr /* cause */
|
||||
);
|
||||
|
||||
+extern _X_EXPORT void XkbUpdateAllDeviceIndicators(XkbChangesPtr /* changes */,
|
||||
+ XkbEventCausePtr /* cause */
|
||||
+ );
|
||||
+
|
||||
extern _X_EXPORT XkbSrvLedInfoPtr XkbAllocSrvLedInfo(DeviceIntPtr /* dev */ ,
|
||||
KbdFeedbackPtr /* kf */ ,
|
||||
LedFeedbackPtr /* lf */ ,
|
||||
diff --git a/xkb/xkb.c b/xkb/xkb.c
|
||||
index 294cdf8..3a6ad65 100644
|
||||
--- a/xkb/xkb.c
|
||||
+++ b/xkb/xkb.c
|
||||
@@ -5692,7 +5692,6 @@ ProcXkbListComponents(ClientPtr client)
|
||||
}
|
||||
|
||||
/***====================================================================***/
|
||||
-
|
||||
int
|
||||
ProcXkbGetKbdByName(ClientPtr client)
|
||||
{
|
||||
@@ -6017,6 +6016,8 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||
new = NULL;
|
||||
}
|
||||
XkbFreeComponentNames(&names, FALSE);
|
||||
+ XkbUpdateAllDeviceIndicators(NULL, NULL);
|
||||
+
|
||||
return Success;
|
||||
}
|
||||
|
||||
diff --git a/xkb/xkbLEDs.c b/xkb/xkbLEDs.c
|
||||
index 4e16002..5792d9f 100644
|
||||
--- a/xkb/xkbLEDs.c
|
||||
+++ b/xkb/xkbLEDs.c
|
||||
@@ -304,7 +304,7 @@ XkbUpdateLedAutoState(DeviceIntPtr dev,
|
||||
return;
|
||||
}
|
||||
|
||||
-static void
|
||||
+void
|
||||
XkbUpdateAllDeviceIndicators(XkbChangesPtr changes, XkbEventCausePtr cause)
|
||||
{
|
||||
DeviceIntPtr edev;
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,36 +0,0 @@
|
||||
From a41a171bcbae9aeafac2865faa904f15d9b59925 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@gmail.com>
|
||||
Date: Fri, 29 Apr 2016 14:01:31 +1000
|
||||
Subject: [PATCH 2/4] modesetting: set driverPrivate to NULL after closing fd.
|
||||
|
||||
Otherwise ms_ent_priv will return NULL and things will fall apart.
|
||||
|
||||
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/driver.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
|
||||
index c97f33a..abf7e1a 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/driver.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/driver.c
|
||||
@@ -635,7 +635,6 @@ FreeRec(ScrnInfoPtr pScrn)
|
||||
ms = modesettingPTR(pScrn);
|
||||
if (!ms)
|
||||
return;
|
||||
- pScrn->driverPrivate = NULL;
|
||||
|
||||
if (ms->fd > 0) {
|
||||
modesettingEntPtr ms_ent;
|
||||
@@ -656,6 +655,7 @@ FreeRec(ScrnInfoPtr pScrn)
|
||||
ms_ent->fd = 0;
|
||||
}
|
||||
}
|
||||
+ pScrn->driverPrivate = NULL;
|
||||
free(ms->drmmode.Options);
|
||||
free(ms);
|
||||
|
||||
--
|
||||
2.5.5
|
||||
|
@ -1,55 +0,0 @@
|
||||
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
|
||||
|
@ -1,33 +0,0 @@
|
||||
From 258588224d6b35de12f97d9092efa5cb3e426550 Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@gmail.com>
|
||||
Date: Fri, 29 Apr 2016 14:01:32 +1000
|
||||
Subject: [PATCH 3/4] xf86Crtc: don't set the root window property on slave
|
||||
GPUs.
|
||||
|
||||
Slave GPUs don't have a root window to set this on, so don't.
|
||||
|
||||
This fixes some crashes I saw just playing around.
|
||||
|
||||
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
hw/xfree86/modes/xf86Crtc.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
||||
index 6091b5e..4a13c13 100644
|
||||
--- a/hw/xfree86/modes/xf86Crtc.c
|
||||
+++ b/hw/xfree86/modes/xf86Crtc.c
|
||||
@@ -3285,7 +3285,8 @@ xf86OutputSetEDID(xf86OutputPtr output, xf86MonPtr edid_mon)
|
||||
}
|
||||
|
||||
/* Set the DDC properties for the 'compat' output */
|
||||
- if (output == xf86CompatOutput(scrn))
|
||||
+ /* GPU screens don't have a root window */
|
||||
+ if (output == xf86CompatOutput(scrn) && !scrn->is_gpu)
|
||||
xf86SetDDCproperties(scrn, edid_mon);
|
||||
|
||||
#ifdef RANDR_12_INTERFACE
|
||||
--
|
||||
2.5.5
|
||||
|
@ -1,65 +0,0 @@
|
||||
From 2378adde6770385c06f7efcd32f270d00d49ce3f Mon Sep 17 00:00:00 2001
|
||||
From: Dave Airlie <airlied@gmail.com>
|
||||
Date: Fri, 29 Apr 2016 14:01:33 +1000
|
||||
Subject: [PATCH 4/4] modesetting: set capabilities up after glamor and enable
|
||||
offload caps.
|
||||
|
||||
This moves the capabilites setting to after glamor is initialised, and
|
||||
enables the offload caps in cases where they work. This enables DRI2
|
||||
PRIME support with modesetting.
|
||||
|
||||
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/driver.c | 28 ++++++++++++++++------------
|
||||
1 file changed, 16 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
|
||||
index abf7e1a..cd59c06 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/driver.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/driver.c
|
||||
@@ -820,18 +820,6 @@ PreInit(ScrnInfoPtr pScrn, int flags)
|
||||
return FALSE;
|
||||
ms->drmmode.fd = ms->fd;
|
||||
|
||||
- pScrn->capabilities = 0;
|
||||
-#ifdef DRM_CAP_PRIME
|
||||
- ret = drmGetCap(ms->fd, DRM_CAP_PRIME, &value);
|
||||
- if (ret == 0) {
|
||||
- if (value & DRM_PRIME_CAP_IMPORT)
|
||||
- pScrn->capabilities |= RR_Capability_SinkOutput;
|
||||
-#if GLAMOR_HAS_GBM_LINEAR
|
||||
- if (value & DRM_PRIME_CAP_EXPORT)
|
||||
- pScrn->capabilities |= RR_Capability_SourceOutput;
|
||||
-#endif
|
||||
- }
|
||||
-#endif
|
||||
drmmode_get_default_bpp(pScrn, &ms->drmmode, &defaultdepth, &defaultbpp);
|
||||
if (defaultdepth == 24 && defaultbpp == 24)
|
||||
bppflags = SupportConvert32to24 | Support24bppFb;
|
||||
@@ -907,6 +895,22 @@ PreInit(ScrnInfoPtr pScrn, int flags)
|
||||
ms->drmmode.pageflip = FALSE;
|
||||
}
|
||||
|
||||
+ pScrn->capabilities = 0;
|
||||
+#ifdef DRM_CAP_PRIME
|
||||
+ ret = drmGetCap(ms->fd, DRM_CAP_PRIME, &value);
|
||||
+ if (ret == 0) {
|
||||
+ if (value & DRM_PRIME_CAP_IMPORT) {
|
||||
+ pScrn->capabilities |= RR_Capability_SinkOutput;
|
||||
+ if (ms->drmmode.glamor)
|
||||
+ pScrn->capabilities |= RR_Capability_SourceOffload;
|
||||
+ }
|
||||
+#if GLAMOR_HAS_GBM_LINEAR
|
||||
+ if (value & DRM_PRIME_CAP_EXPORT && ms->drmmode.glamor)
|
||||
+ pScrn->capabilities |= RR_Capability_SourceOutput | RR_Capability_SinkOffload;
|
||||
+#endif
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (drmmode_pre_init(pScrn, &ms->drmmode, pScrn->bitsPerPixel / 8) == FALSE) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "KMS setup failed\n");
|
||||
goto fail;
|
||||
--
|
||||
2.5.5
|
||||
|
@ -1,54 +0,0 @@
|
||||
From 9b70aebc609c98719095229befd1a56532aaaa1c Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Wed, 1 Jun 2016 14:59:38 +0200
|
||||
Subject: [PATCH xserver 5/8] modesetting: Properly cleanup fb for
|
||||
reverse-prime-offload
|
||||
|
||||
drmmode_set_scanout_pixmap_gpu(pix) adds drmmod->fb_id through a call
|
||||
to drmmode_xf86crtc_resize(), but on a subsequent
|
||||
drmmode_set_scanout_pixmap_gpu(NULL) it would not remove the fb.
|
||||
|
||||
This keeps the crtc marked as busy, which causes the dgpu to not
|
||||
being able to runtime suspend, after an output attached to the dgpu
|
||||
has been used once. Which causes burning through an additional 10W
|
||||
of power and the laptop to run quite hot.
|
||||
|
||||
This commit adds the missing remove fb call, allowing the dgpu to runtime
|
||||
suspend after an external monitor has been plugged into the laptop.
|
||||
|
||||
Note this also makes drmmode_set_scanout_pixmap_gpu(NULL) match the
|
||||
behavior of drmmode_set_scanout_pixmap_cpu(NULL) which was already
|
||||
removing the fb.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Reviewed-by: Dave Airlie <airlied@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/drmmode_display.c | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
index bb5f56e..bc2ca3d 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
@@ -577,11 +577,17 @@ drmmode_set_scanout_pixmap_gpu(xf86CrtcPtr crtc, PixmapPtr ppix)
|
||||
PixmapPtr screenpix = screen->GetScreenPixmap(screen);
|
||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
|
||||
drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
|
||||
+ drmmode_ptr drmmode = drmmode_crtc->drmmode;
|
||||
int c, total_width = 0, max_height = 0, this_x = 0;
|
||||
|
||||
if (!ppix) {
|
||||
- if (crtc->randr_crtc->scanout_pixmap)
|
||||
+ if (crtc->randr_crtc->scanout_pixmap) {
|
||||
PixmapStopDirtyTracking(crtc->randr_crtc->scanout_pixmap, screenpix);
|
||||
+ if (drmmode->fb_id) {
|
||||
+ drmModeRmFB(drmmode->fd, drmmode->fb_id);
|
||||
+ drmmode->fb_id = 0;
|
||||
+ }
|
||||
+ }
|
||||
drmmode_crtc->prime_pixmap_x = 0;
|
||||
return TRUE;
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,46 +0,0 @@
|
||||
From 4565de368c4aecdd4f09fafd69ca59206744aabb Mon Sep 17 00:00:00 2001
|
||||
From: Lyude Paul <cpaul@redhat.com>
|
||||
Date: Mon, 13 Jun 2016 15:31:02 -0400
|
||||
Subject: [PATCH xserver 6/8] modesetting: Clear drmmode->fb_id before
|
||||
unflipping
|
||||
|
||||
[fix copied from 40191d82370e in xf86-video-ati]
|
||||
|
||||
Without this, we end up setting rotated CRTCs back to their previous
|
||||
framebuffer right after we perform a rotation. Reproducer:
|
||||
|
||||
- Have two monitors connected at the same resolution
|
||||
- Rotate one monitor from normal straight to inverted
|
||||
- Watch as the monitor you didn't rotate either freezes or shows intense
|
||||
flickering
|
||||
|
||||
Signed-off-by: Lyude <cpaul@redhat.com>
|
||||
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/present.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/present.c b/hw/xfree86/drivers/modesetting/present.c
|
||||
index d65c8c8..9a596de 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/present.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/present.c
|
||||
@@ -626,6 +626,15 @@ ms_present_unflip(ScreenPtr screen, uint64_t event_id)
|
||||
if (!crtc->enabled)
|
||||
continue;
|
||||
|
||||
+ /* info->drmmode.fb_id still points to the FB for the last flipped BO.
|
||||
+ * Clear it, drmmode_set_mode_major will re-create it
|
||||
+ */
|
||||
+ if (drmmode_crtc->drmmode->fb_id) {
|
||||
+ drmModeRmFB(drmmode_crtc->drmmode->fd,
|
||||
+ drmmode_crtc->drmmode->fb_id);
|
||||
+ drmmode_crtc->drmmode->fb_id = 0;
|
||||
+ }
|
||||
+
|
||||
if (drmmode_crtc->dpms_mode == DPMSModeOn)
|
||||
crtc->funcs->set_mode_major(crtc, &crtc->mode, crtc->rotation,
|
||||
crtc->x, crtc->y);
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,39 +0,0 @@
|
||||
From be6e5f6c126602c499f8104e91c525cd938b4a97 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Thu, 16 Jun 2016 15:21:03 +0200
|
||||
Subject: [PATCH xserver 7/8] modesetting: Fix swapping of provider sink /
|
||||
source capabilities
|
||||
|
||||
When a card has import capability it can be an offload _sink_, not
|
||||
a source and vice versa for export capability.
|
||||
|
||||
This commit fixes the modesetting driver to properly set these
|
||||
capabilities, this went unnoticed sofar because most gpus have both
|
||||
import and export capability.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/driver.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
|
||||
index fb05e2e..e7f6e8d 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/driver.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/driver.c
|
||||
@@ -891,11 +891,11 @@ PreInit(ScrnInfoPtr pScrn, int flags)
|
||||
if (value & DRM_PRIME_CAP_IMPORT) {
|
||||
pScrn->capabilities |= RR_Capability_SinkOutput;
|
||||
if (ms->drmmode.glamor)
|
||||
- pScrn->capabilities |= RR_Capability_SourceOffload;
|
||||
+ pScrn->capabilities |= RR_Capability_SinkOffload;
|
||||
}
|
||||
#if GLAMOR_HAS_GBM_LINEAR
|
||||
if (value & DRM_PRIME_CAP_EXPORT && ms->drmmode.glamor)
|
||||
- pScrn->capabilities |= RR_Capability_SourceOutput | RR_Capability_SinkOffload;
|
||||
+ pScrn->capabilities |= RR_Capability_SourceOutput | RR_Capability_SourceOffload;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,129 +0,0 @@
|
||||
From bf8084ac0e2e988ed985d6c151b1d7d74d6037d1 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 14 Jun 2016 11:58:01 +0200
|
||||
Subject: [PATCH xserver 8/8] modesetting: Load on GPU-s with 0 outputs
|
||||
|
||||
In newer laptops with switchable graphics, the GPU may have 0 outputs,
|
||||
in this case the modesetting driver should still load if the GPU is
|
||||
SourceOffload capable, so that it can be used as an offload source provider.
|
||||
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
hw/xfree86/drivers/modesetting/driver.c | 29 ++++++++++++++++++------
|
||||
hw/xfree86/drivers/modesetting/drmmode_display.c | 6 ++---
|
||||
2 files changed, 24 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/hw/xfree86/drivers/modesetting/driver.c b/hw/xfree86/drivers/modesetting/driver.c
|
||||
index e7f6e8d..b05ad81 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/driver.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/driver.c
|
||||
@@ -214,14 +214,26 @@ open_hw(const char *dev)
|
||||
}
|
||||
|
||||
static int
|
||||
-check_outputs(int fd)
|
||||
+check_outputs(int fd, int *count)
|
||||
{
|
||||
drmModeResPtr res = drmModeGetResources(fd);
|
||||
int ret;
|
||||
|
||||
if (!res)
|
||||
return FALSE;
|
||||
+
|
||||
+ if (count)
|
||||
+ *count = res->count_connectors;
|
||||
+
|
||||
ret = res->count_connectors > 0;
|
||||
+#if defined DRM_CAP_PRIME && GLAMOR_HAS_GBM_LINEAR
|
||||
+ if (ret == FALSE) {
|
||||
+ uint64_t value = 0;
|
||||
+ if (drmGetCap(fd, DRM_CAP_PRIME, &value) == 0 &&
|
||||
+ (value & DRM_PRIME_CAP_EXPORT))
|
||||
+ ret = TRUE;
|
||||
+ }
|
||||
+#endif
|
||||
drmModeFreeResources(res);
|
||||
return ret;
|
||||
}
|
||||
@@ -236,13 +248,13 @@ probe_hw(const char *dev, struct xf86_platform_device *platform_dev)
|
||||
fd = xf86_platform_device_odev_attributes(platform_dev)->fd;
|
||||
if (fd == -1)
|
||||
return FALSE;
|
||||
- return check_outputs(fd);
|
||||
+ return check_outputs(fd, NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
fd = open_hw(dev);
|
||||
if (fd != -1) {
|
||||
- int ret = check_outputs(fd);
|
||||
+ int ret = check_outputs(fd, NULL);
|
||||
|
||||
close(fd);
|
||||
return ret;
|
||||
@@ -285,7 +297,7 @@ probe_hw_pci(const char *dev, struct pci_device *pdev)
|
||||
devid = ms_DRICreatePCIBusID(pdev);
|
||||
|
||||
if (id && devid && !strcmp(id, devid))
|
||||
- ret = check_outputs(fd);
|
||||
+ ret = check_outputs(fd, NULL);
|
||||
|
||||
close(fd);
|
||||
free(id);
|
||||
@@ -772,7 +784,7 @@ PreInit(ScrnInfoPtr pScrn, int flags)
|
||||
EntityInfoPtr pEnt;
|
||||
uint64_t value = 0;
|
||||
int ret;
|
||||
- int bppflags;
|
||||
+ int bppflags, connector_count;
|
||||
int defaultdepth, defaultbpp;
|
||||
|
||||
if (pScrn->numEntities != 1)
|
||||
@@ -809,6 +821,9 @@ PreInit(ScrnInfoPtr pScrn, int flags)
|
||||
return FALSE;
|
||||
ms->drmmode.fd = ms->fd;
|
||||
|
||||
+ if (!check_outputs(ms->fd, &connector_count))
|
||||
+ return FALSE;
|
||||
+
|
||||
drmmode_get_default_bpp(pScrn, &ms->drmmode, &defaultdepth, &defaultbpp);
|
||||
if (defaultdepth == 24 && defaultbpp == 24)
|
||||
bppflags = SupportConvert32to24 | Support24bppFb;
|
||||
@@ -888,7 +903,7 @@ PreInit(ScrnInfoPtr pScrn, int flags)
|
||||
#ifdef DRM_CAP_PRIME
|
||||
ret = drmGetCap(ms->fd, DRM_CAP_PRIME, &value);
|
||||
if (ret == 0) {
|
||||
- if (value & DRM_PRIME_CAP_IMPORT) {
|
||||
+ if (connector_count && (value & DRM_PRIME_CAP_IMPORT)) {
|
||||
pScrn->capabilities |= RR_Capability_SinkOutput;
|
||||
if (ms->drmmode.glamor)
|
||||
pScrn->capabilities |= RR_Capability_SinkOffload;
|
||||
@@ -916,7 +931,7 @@ PreInit(ScrnInfoPtr pScrn, int flags)
|
||||
}
|
||||
}
|
||||
|
||||
- if (pScrn->modes == NULL) {
|
||||
+ if (!(pScrn->is_gpu && connector_count == 0) && pScrn->modes == NULL) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No modes.\n");
|
||||
return FALSE;
|
||||
}
|
||||
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
index bc2ca3d..35a372c 100644
|
||||
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
|
||||
@@ -1639,10 +1639,8 @@ static Bool
|
||||
drmmode_xf86crtc_resize(ScrnInfoPtr scrn, int width, int height)
|
||||
{
|
||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||
-
|
||||
- drmmode_crtc_private_ptr
|
||||
- drmmode_crtc = xf86_config->crtc[0]->driver_private;
|
||||
- drmmode_ptr drmmode = drmmode_crtc->drmmode;
|
||||
+ modesettingPtr ms = modesettingPTR(scrn);
|
||||
+ drmmode_ptr drmmode = &ms->drmmode;
|
||||
drmmode_bo old_front;
|
||||
Bool ret;
|
||||
ScreenPtr screen = xf86ScrnToScreen(scrn);
|
||||
--
|
||||
2.7.4
|
||||
|
@ -1,48 +0,0 @@
|
||||
From patchwork Wed Oct 2 13:47:54 2013
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: exa: only draw valid trapezoids
|
||||
From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
|
||||
X-Patchwork-Id: 14769
|
||||
Message-Id: <524C240A.9010607@canonical.com>
|
||||
To: "X.Org Devel List" <xorg-devel@lists.freedesktop.org>
|
||||
Date: Wed, 02 Oct 2013 15:47:54 +0200
|
||||
|
||||
Fixes freedesktop.org bug https://bugs.freedesktop.org/show_bug.cgi?id=67484
|
||||
|
||||
If t->bottom is close to MIN_INT, removing top can wraparound, so do the check properly.
|
||||
A similar fix should also be applied to pixman.
|
||||
|
||||
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
|
||||
|
||||
---
|
||||
|
||||
|
||||
diff --git a/exa/exa_render.c b/exa/exa_render.c
|
||||
index 172e2b5..807eeba 100644
|
||||
--- a/exa/exa_render.c
|
||||
+++ b/exa/exa_render.c
|
||||
@@ -1141,7 +1141,8 @@ exaTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
|
||||
|
||||
exaPrepareAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
|
||||
for (; ntrap; ntrap--, traps++)
|
||||
- (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1);
|
||||
+ if (xTrapezoidValid(traps))
|
||||
+ (*ps->RasterizeTrapezoid) (pPicture, traps, -bounds.x1, -bounds.y1);
|
||||
exaFinishAccess(pPicture->pDrawable, EXA_PREPARE_DEST);
|
||||
|
||||
xRel = bounds.x1 + xSrc - xDst;
|
||||
diff --git a/render/picture.h b/render/picture.h
|
||||
index c85353a..fcd6401 100644
|
||||
--- a/render/picture.h
|
||||
+++ b/render/picture.h
|
||||
@@ -211,7 +211,7 @@ typedef pixman_fixed_t xFixed;
|
||||
/* whether 't' is a well defined not obviously empty trapezoid */
|
||||
#define xTrapezoidValid(t) ((t)->left.p1.y != (t)->left.p2.y && \
|
||||
(t)->right.p1.y != (t)->right.p2.y && \
|
||||
- (int) ((t)->bottom - (t)->top) > 0)
|
||||
+ ((t)->bottom > (t)->top))
|
||||
|
||||
/*
|
||||
* Standard NTSC luminance conversions:
|
2
sources
2
sources
@ -1 +1 @@
|
||||
043d720bf2472a65bb8f0daa97f83dfa xorg-server-1.18.3.tar.bz2
|
||||
d4842dfe3bd9a9d062f2fa1df9104a46 xorg-server-1.18.4.tar.bz2
|
||||
|
@ -44,8 +44,8 @@
|
||||
|
||||
Summary: X.Org X11 X server
|
||||
Name: xorg-x11-server
|
||||
Version: 1.18.3
|
||||
Release: 8%{?gitdate:.%{gitdate}}%{dist}
|
||||
Version: 1.18.4
|
||||
Release: 1%{?gitdate:.%{gitdate}}%{dist}
|
||||
URL: http://www.x.org
|
||||
License: MIT
|
||||
Group: User Interface/X
|
||||
@ -77,19 +77,6 @@ Source31: xserver-sdk-abi-requires.git
|
||||
# maintainer convenience script
|
||||
Source40: driver-abi-rebuild.sh
|
||||
|
||||
# Trivial things to never merge upstream ever:
|
||||
# This really could be done prettier.
|
||||
Patch5002: xserver-1.4.99-ssh-isnt-local.patch
|
||||
|
||||
Patch6000: 0001-randr-provider-only-allow-slave-gpu-to-be-offload-so.patch
|
||||
Patch6001: 0002-modesetting-set-driverPrivate-to-NULL-after-closing-.patch
|
||||
Patch6002: 0003-xf86Crtc-don-t-set-the-root-window-property-on-slave.patch
|
||||
Patch6004: 0004-modesetting-set-capabilities-up-after-glamor-and-ena.patch
|
||||
Patch6005: 0005-modesetting-Properly-cleanup-fb-for-reverse-prime-of.patch
|
||||
Patch6006: 0006-modesetting-Clear-drmmode-fb_id-before-unflipping.patch
|
||||
Patch6007: 0007-modesetting-Fix-swapping-of-provider-sink-source-cap.patch
|
||||
Patch6008: 0008-modesetting-Load-on-GPU-s-with-0-outputs.patch
|
||||
|
||||
#Patch6044: xserver-1.6.99-hush-prerelease-warning.patch
|
||||
|
||||
Patch7025: 0001-Always-install-vbe-and-int10-sdk-headers.patch
|
||||
@ -97,25 +84,9 @@ Patch7025: 0001-Always-install-vbe-and-int10-sdk-headers.patch
|
||||
# do not upstream - do not even use here yet
|
||||
Patch7027: xserver-autobind-hotplug.patch
|
||||
|
||||
# submitted: http://lists.x.org/archives/xorg-devel/2013-October/037996.html
|
||||
Patch9100: exa-only-draw-valid-trapezoids.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1282252
|
||||
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
|
||||
|
||||
Patch10002: 0001-present-Improve-scaling-of-vblank-handler.patch
|
||||
Patch10003: 0002-present-Fix-presentation-of-flips-out-of-order.patch
|
||||
|
||||
# Bug 1047151 - Numlock LED incorrect after keyboard map switch
|
||||
Patch10004: 0001-xkb-after-changing-the-keymap-force-an-indicator-upd.patch
|
||||
Patch10005: 0001-xkb-add-a-cause-to-the-xkb-indicator-update-after-a-.patch
|
||||
|
||||
# Bug 1338979 - Xwayland: Segmentation fault in cursor update after unrealize
|
||||
Patch10006: 0001-wayland-clear-resource-for-pixmap-on-unrealize.patch
|
||||
|
||||
%global moduledir %{_libdir}/xorg/modules
|
||||
%global drimoduledir %{_libdir}/dri
|
||||
%global sdkdir %{_includedir}/xorg
|
||||
@ -653,6 +624,9 @@ find %{inst_srcdir}/hw/xfree86 -name \*.c -delete
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Jul 19 2016 Adam Jackson <ajax@redhat.com> - 1.18.4-1
|
||||
- xserver 1.18.4
|
||||
|
||||
* Mon Jul 04 2016 Olivier Fourdan <ofourdan@redhat.com> 1.18.3-8
|
||||
- Fix segfault in Xwayland due to cursor update after unrealize (#1338979)
|
||||
|
||||
|
@ -1,48 +0,0 @@
|
||||
From 66a3b14e118e90db80f96fcab52af4df35bc2377 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Mon, 10 Dec 2007 11:26:57 -0500
|
||||
Subject: [PATCH] Hack for proper MIT-SHM rejection for ssh-forwarded clients.
|
||||
|
||||
---
|
||||
Xext/shm.c | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/Xext/shm.c b/Xext/shm.c
|
||||
index de48020..c011210 100644
|
||||
--- a/Xext/shm.c
|
||||
+++ b/Xext/shm.c
|
||||
@@ -321,8 +321,21 @@ shm_access(ClientPtr client, SHMPERM_TYPE * perm, int readonly)
|
||||
mode_t mask;
|
||||
int uidset = 0, gidset = 0;
|
||||
LocalClientCredRec *lcc;
|
||||
+ Bool is_ssh = FALSE;
|
||||
|
||||
if (GetLocalClientCreds(client, &lcc) != -1) {
|
||||
+#ifdef linux
|
||||
+ if (lcc->fieldsSet & LCC_PID_SET) {
|
||||
+ /* ssh isn't actually a local client */
|
||||
+ char exe[64], buf[64];
|
||||
+
|
||||
+ memset(buf, 0, 64);
|
||||
+ snprintf(exe, 64, "/proc/%d/exe", lcc->pid);
|
||||
+ readlink(exe, buf, 63);
|
||||
+ if (strstr(buf, "/ssh"))
|
||||
+ is_ssh = TRUE;
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
if (lcc->fieldsSet & LCC_UID_SET) {
|
||||
uid = lcc->euid;
|
||||
@@ -342,6 +355,9 @@ shm_access(ClientPtr client, SHMPERM_TYPE * perm, int readonly)
|
||||
#endif
|
||||
FreeLocalClientCreds(lcc);
|
||||
|
||||
+ if (is_ssh)
|
||||
+ return -1;
|
||||
+
|
||||
if (uidset) {
|
||||
/* User id 0 always gets access */
|
||||
if (uid == 0) {
|
||||
--
|
||||
1.7.10.1
|
||||
|
Loading…
Reference in New Issue
Block a user