upstream rebase
- reorganise the randr/gpu screen patches + backports
This commit is contained in:
parent
c2b476eb59
commit
02cbf43d01
1
.gitignore
vendored
1
.gitignore
vendored
@ -24,3 +24,4 @@ xorg-server-1.9.1.tar.bz2
|
|||||||
/xorg-server-20130109.tar.xz
|
/xorg-server-20130109.tar.xz
|
||||||
/xorg-server-20130215.tar.xz
|
/xorg-server-20130215.tar.xz
|
||||||
/xorg-server-1.14.0.tar.bz2
|
/xorg-server-1.14.0.tar.bz2
|
||||||
|
/xorg-server-1.14.1.tar.bz2
|
||||||
|
@ -1,69 +0,0 @@
|
|||||||
From 8b328d4ee3873bc0a7a34f2cb9d301827244b98c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aaron Plattner <aplattner@nvidia.com>
|
|
||||||
Date: Fri, 21 Dec 2012 07:37:33 -0800
|
|
||||||
Subject: [PATCH 1/2] dix: Make small bitfields that store enums unsigned
|
|
||||||
|
|
||||||
Commit 31bf81772e146af79b0c456aae2159eba8b0280f changed the clientState field
|
|
||||||
from a signed int to a signed int 2-bit bitfield. The ClientState enum that is
|
|
||||||
expected to be assigned to this field has four values: ClientStateInitial (0),
|
|
||||||
ClientStateRunning (1), ClientStateRetained (2), and ClientStateGone (3).
|
|
||||||
However, because this bitfield is signed, ClientStateRetained becomes -2 when
|
|
||||||
assigned, and ClientStateGone becomes -1. This causes warnings:
|
|
||||||
|
|
||||||
test.c:54:10: error: case label value exceeds maximum value for type [-Werror]
|
|
||||||
test.c:55:10: error: case label value exceeds maximum value for type [-Werror]
|
|
||||||
|
|
||||||
The code here is a switch statement:
|
|
||||||
|
|
||||||
53 switch (client->clientState) {
|
|
||||||
54 case ClientStateGone:
|
|
||||||
55 case ClientStateRetained:
|
|
||||||
56 [...]
|
|
||||||
57 break;
|
|
||||||
58
|
|
||||||
59 default:
|
|
||||||
60 [...]
|
|
||||||
61 break;
|
|
||||||
62 }
|
|
||||||
|
|
||||||
It also causes bizarre problems like this:
|
|
||||||
|
|
||||||
client->clientState = ClientStateGone;
|
|
||||||
assert(client->clientState == ClientStateGone); // this assert fails
|
|
||||||
|
|
||||||
Also change the signedness of nearby bitfields to match.
|
|
||||||
|
|
||||||
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
|
||||||
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
|
||||||
Reviewed-by: Colin Harrison <colin.harrison at virgin.net>
|
|
||||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
||||||
---
|
|
||||||
include/dixstruct.h | 12 ++++++------
|
|
||||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/dixstruct.h b/include/dixstruct.h
|
|
||||||
index c1236f5..6784819 100644
|
|
||||||
--- a/include/dixstruct.h
|
|
||||||
+++ b/include/dixstruct.h
|
|
||||||
@@ -90,12 +90,12 @@ typedef struct _Client {
|
|
||||||
Mask clientAsMask;
|
|
||||||
short index;
|
|
||||||
unsigned char majorOp, minorOp;
|
|
||||||
- int swapped:1;
|
|
||||||
- int local:1;
|
|
||||||
- int big_requests:1; /* supports large requests */
|
|
||||||
- int clientGone:1;
|
|
||||||
- int closeDownMode:2;
|
|
||||||
- int clientState:2;
|
|
||||||
+ unsigned int swapped:1;
|
|
||||||
+ unsigned int local:1;
|
|
||||||
+ unsigned int big_requests:1; /* supports large requests */
|
|
||||||
+ unsigned int clientGone:1;
|
|
||||||
+ unsigned int closeDownMode:2;
|
|
||||||
+ unsigned int clientState:2;
|
|
||||||
char smart_priority;
|
|
||||||
short noClientException; /* this client died or needs to be killed */
|
|
||||||
int priority;
|
|
||||||
--
|
|
||||||
1.8.0.2
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
From 73fc15d94136a87807c1ce69d56fb8a34c09fe4f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Fedora X Ninjas <x@fedoraproject.org>
|
|
||||||
Date: Tue, 8 Jan 2013 09:41:36 +1000
|
|
||||||
Subject: [PATCH] dix: allow pixmap dirty helper to be used for non-shared
|
|
||||||
pixmaps
|
|
||||||
|
|
||||||
this allows the pixmap dirty helper to be used for reverse optimus
|
|
||||||
---
|
|
||||||
dix/pixmap.c | 2 ++
|
|
||||||
fb/fbpixmap.c | 1 +
|
|
||||||
2 files changed, 3 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/dix/pixmap.c b/dix/pixmap.c
|
|
||||||
index 2418812..fe92147 100644
|
|
||||||
--- a/dix/pixmap.c
|
|
||||||
+++ b/dix/pixmap.c
|
|
||||||
@@ -243,6 +243,8 @@ Bool PixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty, RegionPtr dirty_region)
|
|
||||||
}
|
|
||||||
|
|
||||||
dst = dirty->slave_dst->master_pixmap;
|
|
||||||
+ if (!dst)
|
|
||||||
+ dst = dirty->slave_dst;
|
|
||||||
|
|
||||||
RegionTranslate(dirty_region, -dirty->x, -dirty->y);
|
|
||||||
n = RegionNumRects(dirty_region);
|
|
||||||
diff --git a/fb/fbpixmap.c b/fb/fbpixmap.c
|
|
||||||
index fbcdca9..0824b64 100644
|
|
||||||
--- a/fb/fbpixmap.c
|
|
||||||
+++ b/fb/fbpixmap.c
|
|
||||||
@@ -67,6 +67,7 @@ fbCreatePixmapBpp(ScreenPtr pScreen, int width, int height, int depth, int bpp,
|
|
||||||
pPixmap->devKind = paddedWidth;
|
|
||||||
pPixmap->refcnt = 1;
|
|
||||||
pPixmap->devPrivate.ptr = (pointer) ((char *) pPixmap + base + adjust);
|
|
||||||
+ pPixmap->master_pixmap = NULL;
|
|
||||||
|
|
||||||
#ifdef FB_DEBUG
|
|
||||||
pPixmap->devPrivate.ptr =
|
|
||||||
--
|
|
||||||
1.8.1
|
|
||||||
|
|
185
0001-gpu-screen-upstream-fixes.patch
Normal file
185
0001-gpu-screen-upstream-fixes.patch
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
From a7bbd0cbf4b7a7331bb441c9c744c148435b5155 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dave Airlie <airlied@redhat.com>
|
||||||
|
Date: Wed, 9 Jan 2013 12:51:55 +1000
|
||||||
|
Subject: [PATCH] gpu screen: upstream fixes
|
||||||
|
|
||||||
|
dix/gpu: remove asserts for output/offload from same slave
|
||||||
|
xf86crtc: don't use scrn->display for gpu screens
|
||||||
|
dix: allow pixmap dirty helper to be used for non-shared pixmaps
|
||||||
|
gpu: call CreateScreenResources for GPU screens
|
||||||
|
xfree86: don't enable anything in xf86InitialConfiguration for GPU screens
|
||||||
|
|
||||||
|
Signed-off-by: Dave Airlie <airlied@gmail.com>
|
||||||
|
---
|
||||||
|
dix/dispatch.c | 2 --
|
||||||
|
dix/main.c | 3 +++
|
||||||
|
dix/pixmap.c | 2 ++
|
||||||
|
fb/fbpixmap.c | 1 +
|
||||||
|
hw/xfree86/common/xf86platformBus.c | 8 ++++++++
|
||||||
|
hw/xfree86/modes/xf86Crtc.c | 34 ++++++++++++++++++++++++----------
|
||||||
|
6 files changed, 38 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dix/dispatch.c b/dix/dispatch.c
|
||||||
|
index 8d61735..90b6c7c 100644
|
||||||
|
--- a/dix/dispatch.c
|
||||||
|
+++ b/dix/dispatch.c
|
||||||
|
@@ -3942,7 +3942,6 @@ void
|
||||||
|
AttachOutputGPU(ScreenPtr pScreen, ScreenPtr new)
|
||||||
|
{
|
||||||
|
assert(new->isGPU);
|
||||||
|
- assert(!new->current_master);
|
||||||
|
xorg_list_add(&new->output_head, &pScreen->output_slave_list);
|
||||||
|
new->current_master = pScreen;
|
||||||
|
}
|
||||||
|
@@ -3959,7 +3958,6 @@ void
|
||||||
|
AttachOffloadGPU(ScreenPtr pScreen, ScreenPtr new)
|
||||||
|
{
|
||||||
|
assert(new->isGPU);
|
||||||
|
- assert(!new->current_master);
|
||||||
|
xorg_list_add(&new->offload_head, &pScreen->offload_slave_list);
|
||||||
|
new->current_master = pScreen;
|
||||||
|
}
|
||||||
|
diff --git a/dix/main.c b/dix/main.c
|
||||||
|
index fb935c9..e558d70 100644
|
||||||
|
--- a/dix/main.c
|
||||||
|
+++ b/dix/main.c
|
||||||
|
@@ -211,6 +211,9 @@ main(int argc, char *argv[], char *envp[])
|
||||||
|
ScreenPtr pScreen = screenInfo.gpuscreens[i];
|
||||||
|
if (!CreateScratchPixmapsForScreen(pScreen))
|
||||||
|
FatalError("failed to create scratch pixmaps");
|
||||||
|
+ if (pScreen->CreateScreenResources &&
|
||||||
|
+ !(*pScreen->CreateScreenResources) (pScreen))
|
||||||
|
+ FatalError("failed to create screen resources");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < screenInfo.numScreens; i++) {
|
||||||
|
diff --git a/dix/pixmap.c b/dix/pixmap.c
|
||||||
|
index 2418812..fe92147 100644
|
||||||
|
--- a/dix/pixmap.c
|
||||||
|
+++ b/dix/pixmap.c
|
||||||
|
@@ -243,6 +243,8 @@ Bool PixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty, RegionPtr dirty_region)
|
||||||
|
}
|
||||||
|
|
||||||
|
dst = dirty->slave_dst->master_pixmap;
|
||||||
|
+ if (!dst)
|
||||||
|
+ dst = dirty->slave_dst;
|
||||||
|
|
||||||
|
RegionTranslate(dirty_region, -dirty->x, -dirty->y);
|
||||||
|
n = RegionNumRects(dirty_region);
|
||||||
|
diff --git a/fb/fbpixmap.c b/fb/fbpixmap.c
|
||||||
|
index fbcdca9..0824b64 100644
|
||||||
|
--- a/fb/fbpixmap.c
|
||||||
|
+++ b/fb/fbpixmap.c
|
||||||
|
@@ -67,6 +67,7 @@ fbCreatePixmapBpp(ScreenPtr pScreen, int width, int height, int depth, int bpp,
|
||||||
|
pPixmap->devKind = paddedWidth;
|
||||||
|
pPixmap->refcnt = 1;
|
||||||
|
pPixmap->devPrivate.ptr = (pointer) ((char *) pPixmap + base + adjust);
|
||||||
|
+ pPixmap->master_pixmap = NULL;
|
||||||
|
|
||||||
|
#ifdef FB_DEBUG
|
||||||
|
pPixmap->devPrivate.ptr =
|
||||||
|
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
||||||
|
index bcb65ff..e368dee 100644
|
||||||
|
--- a/hw/xfree86/common/xf86platformBus.c
|
||||||
|
+++ b/hw/xfree86/common/xf86platformBus.c
|
||||||
|
@@ -455,6 +455,14 @@ xf86platformAddDevice(int index)
|
||||||
|
|
||||||
|
CreateScratchPixmapsForScreen(xf86GPUScreens[i]->pScreen);
|
||||||
|
|
||||||
|
+ if (xf86GPUScreens[i]->pScreen->CreateScreenResources &&
|
||||||
|
+ !(*xf86GPUScreens[i]->pScreen->CreateScreenResources) (xf86GPUScreens[i]->pScreen)) {
|
||||||
|
+ RemoveGPUScreen(xf86GPUScreens[i]->pScreen);
|
||||||
|
+ xf86DeleteScreen(xf86GPUScreens[i]);
|
||||||
|
+ xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL);
|
||||||
|
+ xf86NumGPUScreens = old_screens;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
/* attach unbound to 0 protocol screen */
|
||||||
|
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
|
||||||
|
|
||||||
|
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
||||||
|
index 7d55f60..989595f 100644
|
||||||
|
--- a/hw/xfree86/modes/xf86Crtc.c
|
||||||
|
+++ b/hw/xfree86/modes/xf86Crtc.c
|
||||||
|
@@ -1908,6 +1908,14 @@ xf86CollectEnabledOutputs(ScrnInfoPtr scrn, xf86CrtcConfigPtr config,
|
||||||
|
Bool any_enabled = FALSE;
|
||||||
|
int o;
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * Don't bother enabling outputs on GPU screens: a client needs to attach
|
||||||
|
+ * it to a source provider before setting a mode that scans out a shared
|
||||||
|
+ * pixmap.
|
||||||
|
+ */
|
||||||
|
+ if (scrn->is_gpu)
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
for (o = 0; o < config->num_output; o++)
|
||||||
|
any_enabled |= enabled[o] = xf86OutputEnabled(config->output[o], TRUE);
|
||||||
|
|
||||||
|
@@ -2360,11 +2368,11 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow)
|
||||||
|
config->debug_modes = xf86ReturnOptValBool(config->options,
|
||||||
|
OPTION_MODEDEBUG, FALSE);
|
||||||
|
|
||||||
|
- if (scrn->display->virtualX)
|
||||||
|
+ if (scrn->display->virtualX && !scrn->is_gpu)
|
||||||
|
width = scrn->display->virtualX;
|
||||||
|
else
|
||||||
|
width = config->maxWidth;
|
||||||
|
- if (scrn->display->virtualY)
|
||||||
|
+ if (scrn->display->virtualY && !scrn->is_gpu)
|
||||||
|
height = scrn->display->virtualY;
|
||||||
|
else
|
||||||
|
height = config->maxHeight;
|
||||||
|
@@ -2377,9 +2385,11 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow)
|
||||||
|
|
||||||
|
ret = xf86CollectEnabledOutputs(scrn, config, enabled);
|
||||||
|
if (ret == FALSE && canGrow) {
|
||||||
|
- xf86DrvMsg(i, X_WARNING,
|
||||||
|
- "Unable to find connected outputs - setting %dx%d initial framebuffer\n",
|
||||||
|
- NO_OUTPUT_DEFAULT_WIDTH, NO_OUTPUT_DEFAULT_HEIGHT);
|
||||||
|
+ if (!scrn->is_gpu)
|
||||||
|
+ xf86DrvMsg(i, X_WARNING,
|
||||||
|
+ "Unable to find connected outputs - setting %dx%d "
|
||||||
|
+ "initial framebuffer\n",
|
||||||
|
+ NO_OUTPUT_DEFAULT_WIDTH, NO_OUTPUT_DEFAULT_HEIGHT);
|
||||||
|
have_outputs = FALSE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
@@ -2428,8 +2438,10 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow)
|
||||||
|
|
||||||
|
/* XXX override xf86 common frame computation code */
|
||||||
|
|
||||||
|
- scrn->display->frameX0 = 0;
|
||||||
|
- scrn->display->frameY0 = 0;
|
||||||
|
+ if (!scrn->is_gpu) {
|
||||||
|
+ scrn->display->frameX0 = 0;
|
||||||
|
+ scrn->display->frameY0 = 0;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
for (c = 0; c < config->num_crtc; c++) {
|
||||||
|
xf86CrtcPtr crtc = config->crtc[c];
|
||||||
|
@@ -2477,7 +2489,7 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (scrn->display->virtualX == 0) {
|
||||||
|
+ if (scrn->display->virtualX == 0 || scrn->is_gpu) {
|
||||||
|
/*
|
||||||
|
* Expand virtual size to cover the current config and potential mode
|
||||||
|
* switches, if the driver can't enlarge the screen later.
|
||||||
|
@@ -2492,8 +2504,10 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- scrn->display->virtualX = width;
|
||||||
|
- scrn->display->virtualY = height;
|
||||||
|
+ if (!scrn->is_gpu) {
|
||||||
|
+ scrn->display->virtualX = width;
|
||||||
|
+ scrn->display->virtualY = height;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (width > scrn->virtualX)
|
||||||
|
--
|
||||||
|
1.8.2
|
||||||
|
|
@ -0,0 +1,60 @@
|
|||||||
|
From c760fb0154848d47438908ba8b3da2fffc68a460 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||||
|
Date: Thu, 10 Jan 2013 03:26:33 +0000
|
||||||
|
Subject: [PATCH] hw/xfree86: Only report SetDesiredModes() failed if at least
|
||||||
|
one modeset fails
|
||||||
|
|
||||||
|
commit 6703a7c7cf1a349c137e247a0c8eb462ff7b07be
|
||||||
|
Author: Keith Packard <keithp@keithp.com>
|
||||||
|
Date: Tue Jan 8 20:24:32 2013 -0800
|
||||||
|
|
||||||
|
hw/xfree86: Require only one working CRTC to start the server.
|
||||||
|
|
||||||
|
changed the logic to try to set the mode on all connected outputs rather
|
||||||
|
than abort upon the first failure. The return error code was then
|
||||||
|
tweaked such that it reported success if it set a mode on any crtc.
|
||||||
|
However, this confuses the headless case where we never enable any crtcs
|
||||||
|
and also, importantly, never fail to set a crtc.
|
||||||
|
|
||||||
|
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59190
|
||||||
|
|
||||||
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||||
|
Also-written-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
|
||||||
|
Reviewed-by: Keith Packard <keithp@keithp.com>
|
||||||
|
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||||
|
(cherry picked from commit 451ba4bd41b82acd4aec6236ba121e00cfeb311b)
|
||||||
|
---
|
||||||
|
hw/xfree86/modes/xf86Crtc.c | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
||||||
|
index f9ae465..7d55f60 100644
|
||||||
|
--- a/hw/xfree86/modes/xf86Crtc.c
|
||||||
|
+++ b/hw/xfree86/modes/xf86Crtc.c
|
||||||
|
@@ -2598,8 +2598,8 @@ xf86SetDesiredModes(ScrnInfoPtr scrn)
|
||||||
|
{
|
||||||
|
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||||
|
xf86CrtcPtr crtc = config->crtc[0];
|
||||||
|
+ int enabled = 0, failed = 0;
|
||||||
|
int c;
|
||||||
|
- int enabled = 0;
|
||||||
|
|
||||||
|
/* A driver with this hook will take care of this */
|
||||||
|
if (!crtc->funcs->set_mode_major) {
|
||||||
|
@@ -2659,11 +2659,12 @@ xf86SetDesiredModes(ScrnInfoPtr scrn)
|
||||||
|
if (config->output[o]->crtc == crtc)
|
||||||
|
config->output[o]->crtc = NULL;
|
||||||
|
crtc->enabled = FALSE;
|
||||||
|
+ ++failed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
xf86DisableUnusedFunctions(scrn);
|
||||||
|
- return enabled != 0;
|
||||||
|
+ return enabled != 0 || failed == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
--
|
||||||
|
1.8.2
|
||||||
|
|
@ -1,110 +0,0 @@
|
|||||||
From 42ca69172c897713295f7c2b471f0e5d072c920b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dave Airlie <airlied@redhat.com>
|
|
||||||
Date: Wed, 9 Jan 2013 14:32:47 +1000
|
|
||||||
Subject: [PATCH] randr: don't directly set changed bits in randr screen
|
|
||||||
|
|
||||||
Introduce a wrapper interface so we can fix things up for multi-gpu
|
|
||||||
situations later.
|
|
||||||
|
|
||||||
This just introduces the API for now.
|
|
||||||
|
|
||||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
||||||
Signed-off-by: Fedora X Ninjas <x@fedoraproject.org>
|
|
||||||
---
|
|
||||||
randr/randr.c | 8 ++++++++
|
|
||||||
randr/randrstr.h | 4 ++++
|
|
||||||
randr/rrcrtc.c | 2 +-
|
|
||||||
randr/rrinfo.c | 2 +-
|
|
||||||
randr/rroutput.c | 2 +-
|
|
||||||
randr/rrscreen.c | 2 +-
|
|
||||||
6 files changed, 16 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/randr/randr.c b/randr/randr.c
|
|
||||||
index f0decfc..11f88b2 100644
|
|
||||||
--- a/randr/randr.c
|
|
||||||
+++ b/randr/randr.c
|
|
||||||
@@ -464,6 +464,14 @@ TellChanged(WindowPtr pWin, pointer value)
|
|
||||||
return WT_WALKCHILDREN;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
+RRSetChanged(ScreenPtr pScreen)
|
|
||||||
+{
|
|
||||||
+ rrScrPriv(pScreen);
|
|
||||||
+
|
|
||||||
+ pScrPriv->changed = TRUE;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Something changed; send events and adjust pointer position
|
|
||||||
*/
|
|
||||||
diff --git a/randr/randrstr.h b/randr/randrstr.h
|
|
||||||
index 2517479..2babfed 100644
|
|
||||||
--- a/randr/randrstr.h
|
|
||||||
+++ b/randr/randrstr.h
|
|
||||||
@@ -486,6 +486,10 @@ extern _X_EXPORT void
|
|
||||||
RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
|
|
||||||
|
|
||||||
/* randr.c */
|
|
||||||
+/* set a screen change on the primary screen */
|
|
||||||
+extern _X_EXPORT void
|
|
||||||
+RRSetChanged(ScreenPtr pScreen);
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Send all pending events
|
|
||||||
*/
|
|
||||||
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
|
|
||||||
index 6e2eca5..b3fb5bd 100644
|
|
||||||
--- a/randr/rrcrtc.c
|
|
||||||
+++ b/randr/rrcrtc.c
|
|
||||||
@@ -39,7 +39,7 @@ RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged)
|
|
||||||
if (pScreen) {
|
|
||||||
rrScrPriv(pScreen);
|
|
||||||
|
|
||||||
- pScrPriv->changed = TRUE;
|
|
||||||
+ RRSetChanged(pScreen);
|
|
||||||
/*
|
|
||||||
* Send ConfigureNotify on any layout change
|
|
||||||
*/
|
|
||||||
diff --git a/randr/rrinfo.c b/randr/rrinfo.c
|
|
||||||
index 1408d6f..fc57bd4 100644
|
|
||||||
--- a/randr/rrinfo.c
|
|
||||||
+++ b/randr/rrinfo.c
|
|
||||||
@@ -225,7 +225,7 @@ RRScreenSetSizeRange(ScreenPtr pScreen,
|
|
||||||
pScrPriv->minHeight = minHeight;
|
|
||||||
pScrPriv->maxWidth = maxWidth;
|
|
||||||
pScrPriv->maxHeight = maxHeight;
|
|
||||||
- pScrPriv->changed = TRUE;
|
|
||||||
+ RRSetChanged(pScreen);
|
|
||||||
pScrPriv->configChanged = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/randr/rroutput.c b/randr/rroutput.c
|
|
||||||
index 88781ba..922d61f 100644
|
|
||||||
--- a/randr/rroutput.c
|
|
||||||
+++ b/randr/rroutput.c
|
|
||||||
@@ -36,7 +36,7 @@ RROutputChanged(RROutputPtr output, Bool configChanged)
|
|
||||||
output->changed = TRUE;
|
|
||||||
if (pScreen) {
|
|
||||||
rrScrPriv(pScreen);
|
|
||||||
- pScrPriv->changed = TRUE;
|
|
||||||
+ RRSetChanged(pScreen);
|
|
||||||
if (configChanged)
|
|
||||||
pScrPriv->configChanged = TRUE;
|
|
||||||
}
|
|
||||||
diff --git a/randr/rrscreen.c b/randr/rrscreen.c
|
|
||||||
index 39340cc..36179ae 100644
|
|
||||||
--- a/randr/rrscreen.c
|
|
||||||
+++ b/randr/rrscreen.c
|
|
||||||
@@ -143,7 +143,7 @@ RRScreenSizeNotify(ScreenPtr pScreen)
|
|
||||||
pScrPriv->height = pScreen->height;
|
|
||||||
pScrPriv->mmWidth = pScreen->mmWidth;
|
|
||||||
pScrPriv->mmHeight = pScreen->mmHeight;
|
|
||||||
- pScrPriv->changed = TRUE;
|
|
||||||
+ RRSetChanged(pScreen);
|
|
||||||
/* pScrPriv->sizeChanged = TRUE; */
|
|
||||||
|
|
||||||
RRTellChanged(pScreen);
|
|
||||||
--
|
|
||||||
1.8.1.4
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
From 48ea188cac83f2c03913457e1049cc30c27cd395 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dave Airlie <airlied@redhat.com>
|
|
||||||
Date: Wed, 9 Jan 2013 14:32:48 +1000
|
|
||||||
Subject: [PATCH] randr: make SetChanged modify the main protocol screen not
|
|
||||||
the gpu screen
|
|
||||||
|
|
||||||
When SetChanged is called we now modify the main protocol screen,
|
|
||||||
not the the gpu screen. Since changed stuff should work at the protocol level.
|
|
||||||
|
|
||||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
||||||
Signed-off-by: Fedora X Ninjas <x@fedoraproject.org>
|
|
||||||
---
|
|
||||||
randr/randr.c | 16 +++++++++++++++-
|
|
||||||
1 file changed, 15 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/randr/randr.c b/randr/randr.c
|
|
||||||
index 11f88b2..fb0895d 100644
|
|
||||||
--- a/randr/randr.c
|
|
||||||
+++ b/randr/randr.c
|
|
||||||
@@ -467,9 +467,23 @@ TellChanged(WindowPtr pWin, pointer value)
|
|
||||||
void
|
|
||||||
RRSetChanged(ScreenPtr pScreen)
|
|
||||||
{
|
|
||||||
+ /* set changed bits on the master screen only */
|
|
||||||
+ ScreenPtr master;
|
|
||||||
rrScrPriv(pScreen);
|
|
||||||
+ rrScrPrivPtr mastersp;
|
|
||||||
+
|
|
||||||
+ if (pScreen->isGPU) {
|
|
||||||
+ master = pScreen->current_master;
|
|
||||||
+ if (!master)
|
|
||||||
+ return;
|
|
||||||
+ mastersp = rrGetScrPriv(master);
|
|
||||||
+ }
|
|
||||||
+ else {
|
|
||||||
+ master = pScreen;
|
|
||||||
+ mastersp = pScrPriv;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- pScrPriv->changed = TRUE;
|
|
||||||
+ mastersp->changed = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
--
|
|
||||||
1.8.1.4
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
|||||||
From 2d05af5ee4844354810cdfcc76eda255a9f6beec Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dave Airlie <airlied@redhat.com>
|
|
||||||
Date: Wed, 9 Jan 2013 14:32:49 +1000
|
|
||||||
Subject: [PATCH] randr: only respected changed on the protocol screen
|
|
||||||
|
|
||||||
We don't want to know about changes on the non-protocol screen,
|
|
||||||
we will fix up setchanged to make sure non-protocol screens update
|
|
||||||
the protocol screens when they have a change.
|
|
||||||
|
|
||||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
||||||
Signed-off-by: Fedora X Ninjas <x@fedoraproject.org>
|
|
||||||
---
|
|
||||||
randr/randr.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/randr/randr.c b/randr/randr.c
|
|
||||||
index fb0895d..cb6fce7 100644
|
|
||||||
--- a/randr/randr.c
|
|
||||||
+++ b/randr/randr.c
|
|
||||||
@@ -506,7 +506,7 @@ RRTellChanged(ScreenPtr pScreen)
|
|
||||||
mastersp = pScrPriv;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (pScrPriv->changed) {
|
|
||||||
+ if (mastersp->changed) {
|
|
||||||
UpdateCurrentTimeIf();
|
|
||||||
if (mastersp->configChanged) {
|
|
||||||
mastersp->lastConfigTime = currentTime;
|
|
||||||
--
|
|
||||||
1.8.1.4
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
|||||||
From 3adc5f9a82ea9aeb2fa5eb2337fb9dd0502082df Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dave Airlie <airlied@redhat.com>
|
|
||||||
Date: Wed, 9 Jan 2013 14:32:50 +1000
|
|
||||||
Subject: [PATCH] randr: report changes when we disconnect a GPU slave
|
|
||||||
|
|
||||||
When we disconnect an output/offload slave set the changed bits,
|
|
||||||
so a later TellChanged can do something.
|
|
||||||
|
|
||||||
Then when we remove a GPU slave device, sent change notification
|
|
||||||
to the protocol screen.
|
|
||||||
|
|
||||||
This allows hot unplugged USB devices to disappear in clients.
|
|
||||||
|
|
||||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
||||||
Signed-off-by: Fedora X Ninjas <x@fedoraproject.org>
|
|
||||||
---
|
|
||||||
hw/xfree86/common/xf86platformBus.c | 3 ++-
|
|
||||||
hw/xfree86/modes/xf86RandR12.c | 9 +++++++--
|
|
||||||
2 files changed, 9 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
|
||||||
index 2b02e79..4ccb005 100644
|
|
||||||
--- a/hw/xfree86/common/xf86platformBus.c
|
|
||||||
+++ b/hw/xfree86/common/xf86platformBus.c
|
|
||||||
@@ -47,6 +47,7 @@
|
|
||||||
#include "Pci.h"
|
|
||||||
#include "xf86platformBus.h"
|
|
||||||
|
|
||||||
+#include "randrstr.h"
|
|
||||||
int platformSlotClaimed;
|
|
||||||
|
|
||||||
int xf86_num_platform_devices;
|
|
||||||
@@ -497,7 +498,7 @@ xf86platformRemoveDevice(int index)
|
|
||||||
xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL);
|
|
||||||
|
|
||||||
xf86_remove_platform_device(index);
|
|
||||||
-
|
|
||||||
+ RRTellChanged(xf86Screens[0]->pScreen);
|
|
||||||
out:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
|
|
||||||
index 01fc9c5..f259730 100644
|
|
||||||
--- a/hw/xfree86/modes/xf86RandR12.c
|
|
||||||
+++ b/hw/xfree86/modes/xf86RandR12.c
|
|
||||||
@@ -1892,15 +1892,20 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider)
|
|
||||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
|
||||||
|
|
||||||
if (config->randr_provider == provider) {
|
|
||||||
+ Bool detached = FALSE;
|
|
||||||
if (config->randr_provider->offload_sink) {
|
|
||||||
DetachOffloadGPU(screen);
|
|
||||||
config->randr_provider->offload_sink = NULL;
|
|
||||||
+ RRSetChanged(screen);
|
|
||||||
+ detached = TRUE;
|
|
||||||
}
|
|
||||||
- else if (config->randr_provider->output_source) {
|
|
||||||
+ if (config->randr_provider->output_source) {
|
|
||||||
DetachOutputGPU(screen);
|
|
||||||
config->randr_provider->output_source = NULL;
|
|
||||||
+ RRSetChanged(screen);
|
|
||||||
+ detached = TRUE;
|
|
||||||
}
|
|
||||||
- else if (screen->current_master)
|
|
||||||
+ if (!detached && screen->current_master)
|
|
||||||
DetachUnboundGPU(screen);
|
|
||||||
}
|
|
||||||
config->randr_provider = NULL;
|
|
||||||
--
|
|
||||||
1.8.2
|
|
||||||
|
|
167
0001-randr-upstream-set-changed-fixes.patch
Normal file
167
0001-randr-upstream-set-changed-fixes.patch
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
From ce3de2dcb1b3bd99a693c828278a416c245acc37 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dave Airlie <airlied@redhat.com>
|
||||||
|
Date: Wed, 9 Jan 2013 14:23:57 +1000
|
||||||
|
Subject: [PATCH] randr upstream set changed fixes
|
||||||
|
|
||||||
|
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
||||||
|
---
|
||||||
|
hw/xfree86/common/xf86platformBus.c | 3 ++-
|
||||||
|
hw/xfree86/modes/xf86RandR12.c | 2 ++
|
||||||
|
randr/randr.c | 24 +++++++++++++++++++++++-
|
||||||
|
randr/randrstr.h | 4 ++++
|
||||||
|
randr/rrcrtc.c | 2 +-
|
||||||
|
randr/rrinfo.c | 2 +-
|
||||||
|
randr/rroutput.c | 2 +-
|
||||||
|
randr/rrscreen.c | 2 +-
|
||||||
|
8 files changed, 35 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
||||||
|
index 9034dad..bcb65ff 100644
|
||||||
|
--- a/hw/xfree86/common/xf86platformBus.c
|
||||||
|
+++ b/hw/xfree86/common/xf86platformBus.c
|
||||||
|
@@ -47,6 +47,7 @@
|
||||||
|
#include "Pci.h"
|
||||||
|
#include "xf86platformBus.h"
|
||||||
|
|
||||||
|
+#include "randrstr.h"
|
||||||
|
int platformSlotClaimed;
|
||||||
|
|
||||||
|
int xf86_num_platform_devices;
|
||||||
|
@@ -499,7 +500,7 @@ xf86platformRemoveDevice(int index)
|
||||||
|
xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL);
|
||||||
|
|
||||||
|
xf86_remove_platform_device(index);
|
||||||
|
-
|
||||||
|
+ RRTellChanged(xf86Screens[0]->pScreen);
|
||||||
|
out:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
|
||||||
|
index 01fc9c5..7f570cf 100644
|
||||||
|
--- a/hw/xfree86/modes/xf86RandR12.c
|
||||||
|
+++ b/hw/xfree86/modes/xf86RandR12.c
|
||||||
|
@@ -1895,10 +1895,12 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider)
|
||||||
|
if (config->randr_provider->offload_sink) {
|
||||||
|
DetachOffloadGPU(screen);
|
||||||
|
config->randr_provider->offload_sink = NULL;
|
||||||
|
+ RRSetChanged(screen);
|
||||||
|
}
|
||||||
|
else if (config->randr_provider->output_source) {
|
||||||
|
DetachOutputGPU(screen);
|
||||||
|
config->randr_provider->output_source = NULL;
|
||||||
|
+ RRSetChanged(screen);
|
||||||
|
}
|
||||||
|
else if (screen->current_master)
|
||||||
|
DetachUnboundGPU(screen);
|
||||||
|
diff --git a/randr/randr.c b/randr/randr.c
|
||||||
|
index f0decfc..cb6fce7 100644
|
||||||
|
--- a/randr/randr.c
|
||||||
|
+++ b/randr/randr.c
|
||||||
|
@@ -464,6 +464,28 @@ TellChanged(WindowPtr pWin, pointer value)
|
||||||
|
return WT_WALKCHILDREN;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void
|
||||||
|
+RRSetChanged(ScreenPtr pScreen)
|
||||||
|
+{
|
||||||
|
+ /* set changed bits on the master screen only */
|
||||||
|
+ ScreenPtr master;
|
||||||
|
+ rrScrPriv(pScreen);
|
||||||
|
+ rrScrPrivPtr mastersp;
|
||||||
|
+
|
||||||
|
+ if (pScreen->isGPU) {
|
||||||
|
+ master = pScreen->current_master;
|
||||||
|
+ if (!master)
|
||||||
|
+ return;
|
||||||
|
+ mastersp = rrGetScrPriv(master);
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ master = pScreen;
|
||||||
|
+ mastersp = pScrPriv;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ mastersp->changed = TRUE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Something changed; send events and adjust pointer position
|
||||||
|
*/
|
||||||
|
@@ -484,7 +506,7 @@ RRTellChanged(ScreenPtr pScreen)
|
||||||
|
mastersp = pScrPriv;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (pScrPriv->changed) {
|
||||||
|
+ if (mastersp->changed) {
|
||||||
|
UpdateCurrentTimeIf();
|
||||||
|
if (mastersp->configChanged) {
|
||||||
|
mastersp->lastConfigTime = currentTime;
|
||||||
|
diff --git a/randr/randrstr.h b/randr/randrstr.h
|
||||||
|
index 2517479..2babfed 100644
|
||||||
|
--- a/randr/randrstr.h
|
||||||
|
+++ b/randr/randrstr.h
|
||||||
|
@@ -486,6 +486,10 @@ extern _X_EXPORT void
|
||||||
|
RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
|
||||||
|
|
||||||
|
/* randr.c */
|
||||||
|
+/* set a screen change on the primary screen */
|
||||||
|
+extern _X_EXPORT void
|
||||||
|
+RRSetChanged(ScreenPtr pScreen);
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* Send all pending events
|
||||||
|
*/
|
||||||
|
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
|
||||||
|
index 6e2eca5..b3fb5bd 100644
|
||||||
|
--- a/randr/rrcrtc.c
|
||||||
|
+++ b/randr/rrcrtc.c
|
||||||
|
@@ -39,7 +39,7 @@ RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged)
|
||||||
|
if (pScreen) {
|
||||||
|
rrScrPriv(pScreen);
|
||||||
|
|
||||||
|
- pScrPriv->changed = TRUE;
|
||||||
|
+ RRSetChanged(pScreen);
|
||||||
|
/*
|
||||||
|
* Send ConfigureNotify on any layout change
|
||||||
|
*/
|
||||||
|
diff --git a/randr/rrinfo.c b/randr/rrinfo.c
|
||||||
|
index 1408d6f..fc57bd4 100644
|
||||||
|
--- a/randr/rrinfo.c
|
||||||
|
+++ b/randr/rrinfo.c
|
||||||
|
@@ -225,7 +225,7 @@ RRScreenSetSizeRange(ScreenPtr pScreen,
|
||||||
|
pScrPriv->minHeight = minHeight;
|
||||||
|
pScrPriv->maxWidth = maxWidth;
|
||||||
|
pScrPriv->maxHeight = maxHeight;
|
||||||
|
- pScrPriv->changed = TRUE;
|
||||||
|
+ RRSetChanged(pScreen);
|
||||||
|
pScrPriv->configChanged = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/randr/rroutput.c b/randr/rroutput.c
|
||||||
|
index 88781ba..922d61f 100644
|
||||||
|
--- a/randr/rroutput.c
|
||||||
|
+++ b/randr/rroutput.c
|
||||||
|
@@ -36,7 +36,7 @@ RROutputChanged(RROutputPtr output, Bool configChanged)
|
||||||
|
output->changed = TRUE;
|
||||||
|
if (pScreen) {
|
||||||
|
rrScrPriv(pScreen);
|
||||||
|
- pScrPriv->changed = TRUE;
|
||||||
|
+ RRSetChanged(pScreen);
|
||||||
|
if (configChanged)
|
||||||
|
pScrPriv->configChanged = TRUE;
|
||||||
|
}
|
||||||
|
diff --git a/randr/rrscreen.c b/randr/rrscreen.c
|
||||||
|
index 39340cc..36179ae 100644
|
||||||
|
--- a/randr/rrscreen.c
|
||||||
|
+++ b/randr/rrscreen.c
|
||||||
|
@@ -143,7 +143,7 @@ RRScreenSizeNotify(ScreenPtr pScreen)
|
||||||
|
pScrPriv->height = pScreen->height;
|
||||||
|
pScrPriv->mmWidth = pScreen->mmWidth;
|
||||||
|
pScrPriv->mmHeight = pScreen->mmHeight;
|
||||||
|
- pScrPriv->changed = TRUE;
|
||||||
|
+ RRSetChanged(pScreen);
|
||||||
|
/* pScrPriv->sizeChanged = TRUE; */
|
||||||
|
|
||||||
|
RRTellChanged(pScreen);
|
||||||
|
--
|
||||||
|
1.8.2
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
From 8647ee8f422e1ea9212d84ae14ef2163793bcdc8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dave Airlie <airlied@gmail.com>
|
|
||||||
Date: Wed, 10 Apr 2013 16:09:01 +1000
|
|
||||||
Subject: [PATCH] xf86: fix flush input to work with Linux evdev devices.
|
|
||||||
|
|
||||||
So when we VT switch back and attempt to flush the input devices,
|
|
||||||
we don't succeed because evdev won't return part of an event,
|
|
||||||
since we were only asking for 4 bytes, we'd only get -EINVAL back.
|
|
||||||
|
|
||||||
This could later cause events to be flushed that we shouldn't have
|
|
||||||
gotten.
|
|
||||||
|
|
||||||
This is a fix for CVE-2013-1940.
|
|
||||||
|
|
||||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
||||||
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
||||||
---
|
|
||||||
hw/xfree86/os-support/shared/posix_tty.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/hw/xfree86/os-support/shared/posix_tty.c b/hw/xfree86/os-support/shared/posix_tty.c
|
|
||||||
index ab3757a..4d08c1e 100644
|
|
||||||
--- a/hw/xfree86/os-support/shared/posix_tty.c
|
|
||||||
+++ b/hw/xfree86/os-support/shared/posix_tty.c
|
|
||||||
@@ -421,7 +421,8 @@ xf86FlushInput(int fd)
|
|
||||||
{
|
|
||||||
fd_set fds;
|
|
||||||
struct timeval timeout;
|
|
||||||
- char c[4];
|
|
||||||
+ /* this needs to be big enough to flush an evdev event. */
|
|
||||||
+ char c[256];
|
|
||||||
|
|
||||||
DebugF("FlushingSerial\n");
|
|
||||||
if (tcflush(fd, TCIFLUSH) == 0)
|
|
||||||
--
|
|
||||||
1.8.1.4
|
|
@ -1,65 +0,0 @@
|
|||||||
From 2bd6a8491ad3dbd42db66be7ae48f4b6e9c698f2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Fedora X Ninjas <x@fedoraproject.org>
|
|
||||||
Date: Wed, 12 Dec 2012 14:02:54 +1000
|
|
||||||
Subject: [PATCH] xf86crtc: don't use display for vx/vy for gpu screens
|
|
||||||
|
|
||||||
---
|
|
||||||
hw/xfree86/modes/xf86Crtc.c | 18 +++++++++++-------
|
|
||||||
1 file changed, 11 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
|
||||||
index 6975d2f..2828ee0 100644
|
|
||||||
--- a/hw/xfree86/modes/xf86Crtc.c
|
|
||||||
+++ b/hw/xfree86/modes/xf86Crtc.c
|
|
||||||
@@ -2425,11 +2425,11 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow)
|
|
||||||
config->debug_modes = xf86ReturnOptValBool(config->options,
|
|
||||||
OPTION_MODEDEBUG, FALSE);
|
|
||||||
|
|
||||||
- if (scrn->display->virtualX)
|
|
||||||
+ if (scrn->display->virtualX && !scrn->is_gpu)
|
|
||||||
width = scrn->display->virtualX;
|
|
||||||
else
|
|
||||||
width = config->maxWidth;
|
|
||||||
- if (scrn->display->virtualY)
|
|
||||||
+ if (scrn->display->virtualY && !scrn->is_gpu)
|
|
||||||
height = scrn->display->virtualY;
|
|
||||||
else
|
|
||||||
height = config->maxHeight;
|
|
||||||
@@ -2497,8 +2497,10 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow)
|
|
||||||
|
|
||||||
/* XXX override xf86 common frame computation code */
|
|
||||||
|
|
||||||
- scrn->display->frameX0 = 0;
|
|
||||||
- scrn->display->frameY0 = 0;
|
|
||||||
+ if (!scrn->is_gpu) {
|
|
||||||
+ scrn->display->frameX0 = 0;
|
|
||||||
+ scrn->display->frameY0 = 0;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
for (c = 0; c < config->num_crtc; c++) {
|
|
||||||
xf86CrtcPtr crtc = config->crtc[c];
|
|
||||||
@@ -2546,7 +2548,7 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (scrn->display->virtualX == 0) {
|
|
||||||
+ if (scrn->display->virtualX == 0 || scrn->is_gpu) {
|
|
||||||
/*
|
|
||||||
* Expand virtual size to cover the current config and potential mode
|
|
||||||
* switches, if the driver can't enlarge the screen later.
|
|
||||||
@@ -2561,8 +2563,10 @@ xf86InitialConfiguration(ScrnInfoPtr scrn, Bool canGrow)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- scrn->display->virtualX = width;
|
|
||||||
- scrn->display->virtualY = height;
|
|
||||||
+ if (!scrn->is_gpu) {
|
|
||||||
+ scrn->display->virtualX = width;
|
|
||||||
+ scrn->display->virtualY = height;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (width > scrn->virtualX)
|
|
||||||
--
|
|
||||||
1.8.1
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
From 6aa11e40ec75fb31d0c611f9d578427941379c0d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Fedora X Ninjas <x@fedoraproject.org>
|
|
||||||
Date: Tue, 8 Jan 2013 09:42:44 +1000
|
|
||||||
Subject: [PATCH] xserver: call CSR for gpus
|
|
||||||
|
|
||||||
---
|
|
||||||
dix/main.c | 3 +++
|
|
||||||
hw/xfree86/common/xf86platformBus.c | 8 ++++++++
|
|
||||||
2 files changed, 11 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/dix/main.c b/dix/main.c
|
|
||||||
index fb935c9..e558d70 100644
|
|
||||||
--- a/dix/main.c
|
|
||||||
+++ b/dix/main.c
|
|
||||||
@@ -211,6 +211,9 @@ main(int argc, char *argv[], char *envp[])
|
|
||||||
ScreenPtr pScreen = screenInfo.gpuscreens[i];
|
|
||||||
if (!CreateScratchPixmapsForScreen(pScreen))
|
|
||||||
FatalError("failed to create scratch pixmaps");
|
|
||||||
+ if (pScreen->CreateScreenResources &&
|
|
||||||
+ !(*pScreen->CreateScreenResources) (pScreen))
|
|
||||||
+ FatalError("failed to create screen resources");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < screenInfo.numScreens; i++) {
|
|
||||||
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
|
||||||
index 67d03eb..8f73c3a 100644
|
|
||||||
--- a/hw/xfree86/common/xf86platformBus.c
|
|
||||||
+++ b/hw/xfree86/common/xf86platformBus.c
|
|
||||||
@@ -452,6 +452,14 @@ xf86platformAddDevice(int index)
|
|
||||||
|
|
||||||
CreateScratchPixmapsForScreen(xf86GPUScreens[i]->pScreen);
|
|
||||||
|
|
||||||
+ if (xf86GPUScreens[i]->pScreen->CreateScreenResources &&
|
|
||||||
+ !(*xf86GPUScreens[i]->pScreen->CreateScreenResources) (xf86GPUScreens[i]->pScreen)) {
|
|
||||||
+ RemoveGPUScreen(xf86GPUScreens[i]->pScreen);
|
|
||||||
+ xf86DeleteScreen(xf86GPUScreens[i]);
|
|
||||||
+ xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL);
|
|
||||||
+ xf86NumGPUScreens = old_screens;
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
/* attach unbound to 0 protocol screen */
|
|
||||||
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
|
|
||||||
xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
|
|
||||||
--
|
|
||||||
1.8.1
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
|||||||
From 6703a7c7cf1a349c137e247a0c8eb462ff7b07be Mon Sep 17 00:00:00 2001
|
|
||||||
From: Keith Packard <keithp@keithp.com>
|
|
||||||
Date: Tue, 8 Jan 2013 20:24:32 -0800
|
|
||||||
Subject: [PATCH 2/2] hw/xfree86: Require only one working CRTC to start the
|
|
||||||
server.
|
|
||||||
|
|
||||||
Instead of requiring every mode set to complete successfully, start up
|
|
||||||
as long as at least one CRTC is working. This avoids failures when one
|
|
||||||
or more CRTCs can't start due to mode setting conflicts.
|
|
||||||
|
|
||||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
|
||||||
Reviewed-by: Dave Airlie <airlied@redhat.com>
|
|
||||||
---
|
|
||||||
hw/xfree86/modes/xf86Crtc.c | 15 +++++++++++----
|
|
||||||
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
|
||||||
index 13251cf..b3ded5a 100644
|
|
||||||
--- a/hw/xfree86/modes/xf86Crtc.c
|
|
||||||
+++ b/hw/xfree86/modes/xf86Crtc.c
|
|
||||||
@@ -2605,6 +2605,7 @@ xf86SetDesiredModes(ScrnInfoPtr scrn)
|
|
||||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
|
||||||
xf86CrtcPtr crtc = config->crtc[0];
|
|
||||||
int c;
|
|
||||||
+ int enabled = 0;
|
|
||||||
|
|
||||||
/* A driver with this hook will take care of this */
|
|
||||||
if (!crtc->funcs->set_mode_major) {
|
|
||||||
@@ -2655,14 +2656,20 @@ xf86SetDesiredModes(ScrnInfoPtr scrn)
|
|
||||||
transform = &crtc->desiredTransform;
|
|
||||||
else
|
|
||||||
transform = NULL;
|
|
||||||
- if (!xf86CrtcSetModeTransform
|
|
||||||
+ if (xf86CrtcSetModeTransform
|
|
||||||
(crtc, &crtc->desiredMode, crtc->desiredRotation, transform,
|
|
||||||
- crtc->desiredX, crtc->desiredY))
|
|
||||||
- return FALSE;
|
|
||||||
+ crtc->desiredX, crtc->desiredY)) {
|
|
||||||
+ ++enabled;
|
|
||||||
+ } else {
|
|
||||||
+ for (o = 0; o < config->num_output; o++)
|
|
||||||
+ if (config->output[o]->crtc == crtc)
|
|
||||||
+ config->output[o]->crtc = NULL;
|
|
||||||
+ crtc->enabled = FALSE;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
xf86DisableUnusedFunctions(scrn);
|
|
||||||
- return TRUE;
|
|
||||||
+ return enabled != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
--
|
|
||||||
1.8.0.2
|
|
||||||
|
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
86110278b784e279381b7f6f2295c508 xorg-server-1.14.0.tar.bz2
|
6a0f1a1639ada4b9da7e9582bc79252a xorg-server-1.14.1.tar.bz2
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
From patchwork Wed Oct 17 10:06:47 2012
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 7bit
|
|
||||||
Subject: [v2] xf86: Fix non-PCI configuration-less setups
|
|
||||||
Date: Wed, 17 Oct 2012 10:06:47 -0000
|
|
||||||
From: Thierry Reding <thierry.reding@avionic-design.de>
|
|
||||||
X-Patchwork-Id: 12233
|
|
||||||
Message-Id: <1350468407-27681-1-git-send-email-thierry.reding@avionic-design.de>
|
|
||||||
To: xorg-devel@lists.x.org
|
|
||||||
Cc: Dave Airlie <airlied@gmail.com>
|
|
||||||
|
|
||||||
For non-PCI video devices, such as those found on many ARM embedded
|
|
||||||
systems, the X server currently requires the BusID option to specify the
|
|
||||||
full path to the DRM device's sysfs node in order to properly match it
|
|
||||||
against the probed platform devices.
|
|
||||||
|
|
||||||
In order to allow X to start up properly if either the BusID option was
|
|
||||||
omitted or no configuration is present at all, the first video device is
|
|
||||||
used by default.
|
|
||||||
|
|
||||||
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
|
|
||||||
|
|
||||||
---
|
|
||||||
Changes in v2:
|
|
||||||
- Add additional checks for safety (I don't think numDevs will ever be 0
|
|
||||||
since a default will be generated if no configuration is present, but
|
|
||||||
it doesn't hurt to check anyway). Without these checks there is a
|
|
||||||
possibility of the X server crashing if no platform devices have been
|
|
||||||
found.
|
|
||||||
|
|
||||||
hw/xfree86/common/xf86platformBus.c | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
|
||||||
index 0525e39..599d84a 100644
|
|
||||||
--- a/hw/xfree86/common/xf86platformBus.c
|
|
||||||
+++ b/hw/xfree86/common/xf86platformBus.c
|
|
||||||
@@ -377,6 +377,14 @@ xf86platformProbeDev(DriverPtr drvp)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * If all of the above fails, which can happen if X was started without
|
|
||||||
+ * configuration or if BusID wasn't set for non-PCI devices, use the first
|
|
||||||
+ * device by default.
|
|
||||||
+ */
|
|
||||||
+ if (!foundScreen && xf86_num_platform_devices > 0 && numDevs > 0)
|
|
||||||
+ foundScreen = probeSingleDevice(&xf86_platform_devices[0], drvp, devList[0], 0);
|
|
||||||
+
|
|
||||||
/* if autoaddgpu devices is enabled then go find a few more and add them as GPU screens */
|
|
||||||
if (xf86Info.autoAddGPU && numDevs) {
|
|
||||||
for (j = 0; j < xf86_num_platform_devices; j++) {
|
|
@ -41,8 +41,8 @@
|
|||||||
|
|
||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.14.0
|
Version: 1.14.1
|
||||||
Release: 6%{?gitdate:.%{gitdate}}%{dist}
|
Release: 1%{?gitdate:.%{gitdate}}%{dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
@ -84,6 +84,14 @@ Patch6011: xserver-1.6.0-less-acpi-brokenness.patch
|
|||||||
Patch6030: xserver-1.6.99-right-of.patch
|
Patch6030: xserver-1.6.99-right-of.patch
|
||||||
#Patch6044: xserver-1.6.99-hush-prerelease-warning.patch
|
#Patch6044: xserver-1.6.99-hush-prerelease-warning.patch
|
||||||
|
|
||||||
|
# upstream backports - sent to stable
|
||||||
|
Patch6050: xserver-1.14.0-fix-gpu-hotplug-vt-switch.patch
|
||||||
|
Patch6051: 0001-hw-xfree86-Only-report-SetDesiredModes-failed-if-at-.patch
|
||||||
|
|
||||||
|
# upstream submitted
|
||||||
|
Patch6052: 0001-randr-upstream-set-changed-fixes.patch
|
||||||
|
Patch6053: 0001-gpu-screen-upstream-fixes.patch
|
||||||
|
|
||||||
# Fix libselinux-triggered build error
|
# Fix libselinux-triggered build error
|
||||||
# RedHat/Fedora-specific patch
|
# RedHat/Fedora-specific patch
|
||||||
Patch7013: xserver-1.12-Xext-fix-selinux-build-failure.patch
|
Patch7013: xserver-1.12-Xext-fix-selinux-build-failure.patch
|
||||||
@ -98,38 +106,14 @@ Patch7027: xserver-autobind-hotplug.patch
|
|||||||
|
|
||||||
Patch7052: 0001-xf86-return-NULL-for-compat-output-if-no-outputs.patch
|
Patch7052: 0001-xf86-return-NULL-for-compat-output-if-no-outputs.patch
|
||||||
|
|
||||||
# Fix non-PCI configuration-less setups - broken
|
|
||||||
#Patch7061: v2-xf86-Fix-non-PCI-configuration-less-setups.patch
|
|
||||||
|
|
||||||
# mustard: make the default queue length bigger to calm abrt down
|
# mustard: make the default queue length bigger to calm abrt down
|
||||||
Patch7064: 0001-mieq-Bump-default-queue-size-to-512.patch
|
Patch7064: 0001-mieq-Bump-default-queue-size-to-512.patch
|
||||||
|
|
||||||
# some hotplug fixes/workaround
|
|
||||||
Patch7066: 0001-xf86crtc-don-t-use-display-for-vx-vy-for-gpu-screens.patch
|
|
||||||
# autoconfig: send events
|
|
||||||
Patch7067: 0001-randr-don-t-directly-set-changed-bits-in-randr-scree.patch
|
|
||||||
Patch7068: 0001-randr-make-SetChanged-modify-the-main-protocol-scree.patch
|
|
||||||
Patch7069: 0001-randr-only-respected-changed-on-the-protocol-screen.patch
|
|
||||||
Patch7070: 0001-randr-report-changes-when-we-disconnect-a-GPU-slave.patch
|
|
||||||
|
|
||||||
|
|
||||||
# upstream in -next for 1.15, e21e183059df5975e7086850d1931edb2c1bbd06
|
# upstream in -next for 1.15, e21e183059df5975e7086850d1931edb2c1bbd06
|
||||||
%if !0%{?rhel}
|
%if !0%{?rhel}
|
||||||
Patch7071: 0001-os-use-libunwind-to-generate-backtraces.patch
|
Patch7071: 0001-os-use-libunwind-to-generate-backtraces.patch
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# upstream submitted
|
|
||||||
Patch7072: xserver-1.14.0-fix-gpu-hotplug-vt-switch.patch
|
|
||||||
|
|
||||||
# Bug 950438 - CVE-2013-1940 xorg-x11-server:
|
|
||||||
# Information disclosure due enabling events from hot-plug devices despite
|
|
||||||
# input from the device being momentarily disabled
|
|
||||||
Patch7073: 0001-xf86-fix-flush-input-to-work-with-Linux-evdev-device.patch
|
|
||||||
|
|
||||||
# on way upstream: fixes for reverse optimus
|
|
||||||
Patch8000: 0001-dix-allow-pixmap-dirty-helper-to-be-used-for-non-sha.patch
|
|
||||||
Patch8001: 0001-xserver-call-CSR-for-gpus.patch
|
|
||||||
|
|
||||||
%global moduledir %{_libdir}/xorg/modules
|
%global moduledir %{_libdir}/xorg/modules
|
||||||
%global drimoduledir %{_libdir}/dri
|
%global drimoduledir %{_libdir}/dri
|
||||||
%global sdkdir %{_includedir}/xorg
|
%global sdkdir %{_includedir}/xorg
|
||||||
@ -602,6 +586,10 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{xserver_source_dir}
|
%{xserver_source_dir}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon May 06 2013 Dave Airlie <airlied@redhat.com> 1.14.1-1
|
||||||
|
- upstream rebase
|
||||||
|
- reorganise the randr/gpu screen patches + backports
|
||||||
|
|
||||||
* Wed Apr 17 2013 Peter Hutterer <peter.hutterer@redhat.com> 1.14.0-6
|
* Wed Apr 17 2013 Peter Hutterer <peter.hutterer@redhat.com> 1.14.0-6
|
||||||
- CVE-2013-1940: Fix xf86FlushInput() to drain evdev events
|
- CVE-2013-1940: Fix xf86FlushInput() to drain evdev events
|
||||||
(#950438, #952949)
|
(#950438, #952949)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 37d51acb3b6a38af1717bfaa7925043c35bfb447 Mon Sep 17 00:00:00 2001
|
From 05a3edae62a02bbbc3102beb5edd73d78c266ef7 Mon Sep 17 00:00:00 2001
|
||||||
From: Dave Airlie <airlied@redhat.com>
|
From: Dave Airlie <airlied@redhat.com>
|
||||||
Date: Fri, 17 Aug 2012 09:49:24 +1000
|
Date: Fri, 17 Aug 2012 09:49:24 +1000
|
||||||
Subject: [PATCH] autobind GPUs to the screen, (v3)
|
Subject: [PATCH] autobind GPUs to the screen, (v3)
|
||||||
@ -9,35 +9,16 @@ but until DE support is in GNOME its probably for the best.
|
|||||||
v2: fix if config or slave config is NULL
|
v2: fix if config or slave config is NULL
|
||||||
v3: fix multi useful slaves
|
v3: fix multi useful slaves
|
||||||
DO NOT UPSTREAM.
|
DO NOT UPSTREAM.
|
||||||
|
|
||||||
|
Signed-off-by: Dave Airlie <airlied@gmail.com>
|
||||||
---
|
---
|
||||||
dix/dispatch.c | 2 --
|
|
||||||
hw/xfree86/common/xf86Init.c | 12 ++++++++++++
|
hw/xfree86/common/xf86Init.c | 12 ++++++++++++
|
||||||
hw/xfree86/common/xf86platformBus.c | 3 +++
|
hw/xfree86/common/xf86platformBus.c | 3 +++
|
||||||
hw/xfree86/modes/xf86Crtc.c | 32 ++++++++++++++++++++++++++++++++
|
hw/xfree86/modes/xf86Crtc.c | 32 ++++++++++++++++++++++++++++++++
|
||||||
4 files changed, 47 insertions(+), 2 deletions(-)
|
3 files changed, 47 insertions(+)
|
||||||
|
|
||||||
diff --git a/dix/dispatch.c b/dix/dispatch.c
|
|
||||||
index 0ce10c2..c2ab8f9 100644
|
|
||||||
--- a/dix/dispatch.c
|
|
||||||
+++ b/dix/dispatch.c
|
|
||||||
@@ -3933,7 +3933,6 @@ void
|
|
||||||
AttachOutputGPU(ScreenPtr pScreen, ScreenPtr new)
|
|
||||||
{
|
|
||||||
assert(new->isGPU);
|
|
||||||
- assert(!new->current_master);
|
|
||||||
xorg_list_add(&new->output_head, &pScreen->output_slave_list);
|
|
||||||
new->current_master = pScreen;
|
|
||||||
}
|
|
||||||
@@ -3950,7 +3949,6 @@ void
|
|
||||||
AttachOffloadGPU(ScreenPtr pScreen, ScreenPtr new)
|
|
||||||
{
|
|
||||||
assert(new->isGPU);
|
|
||||||
- assert(!new->current_master);
|
|
||||||
xorg_list_add(&new->offload_head, &pScreen->offload_slave_list);
|
|
||||||
new->current_master = pScreen;
|
|
||||||
}
|
|
||||||
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
|
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
|
||||||
index d231ced..89629c1 100644
|
index 91ec4c8..142ce95 100644
|
||||||
--- a/hw/xfree86/common/xf86Init.c
|
--- a/hw/xfree86/common/xf86Init.c
|
||||||
+++ b/hw/xfree86/common/xf86Init.c
|
+++ b/hw/xfree86/common/xf86Init.c
|
||||||
@@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin)
|
@@ -361,6 +361,16 @@ xf86CreateRootWindow(WindowPtr pWin)
|
||||||
@ -57,7 +38,7 @@ index d231ced..89629c1 100644
|
|||||||
static void
|
static void
|
||||||
InstallSignalHandlers(void)
|
InstallSignalHandlers(void)
|
||||||
{
|
{
|
||||||
@@ -926,6 +936,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
|
@@ -930,6 +940,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
|
||||||
for (i = 0; i < xf86NumGPUScreens; i++)
|
for (i = 0; i < xf86NumGPUScreens; i++)
|
||||||
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
|
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
|
||||||
|
|
||||||
@ -67,10 +48,10 @@ index d231ced..89629c1 100644
|
|||||||
if (sigio_blocked)
|
if (sigio_blocked)
|
||||||
OsReleaseSIGIO();
|
OsReleaseSIGIO();
|
||||||
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
|
||||||
index 0525e39..82fef32 100644
|
index e368dee..1581413 100644
|
||||||
--- a/hw/xfree86/common/xf86platformBus.c
|
--- a/hw/xfree86/common/xf86platformBus.c
|
||||||
+++ b/hw/xfree86/common/xf86platformBus.c
|
+++ b/hw/xfree86/common/xf86platformBus.c
|
||||||
@@ -387,6 +387,8 @@ xf86platformProbeDev(DriverPtr drvp)
|
@@ -393,6 +393,8 @@ xf86platformProbeDev(DriverPtr drvp)
|
||||||
return foundScreen;
|
return foundScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,8 +60,8 @@ index 0525e39..82fef32 100644
|
|||||||
int
|
int
|
||||||
xf86platformAddDevice(int index)
|
xf86platformAddDevice(int index)
|
||||||
{
|
{
|
||||||
@@ -446,6 +448,7 @@ xf86platformAddDevice(int index)
|
@@ -465,6 +467,7 @@ xf86platformAddDevice(int index)
|
||||||
|
}
|
||||||
/* attach unbound to 0 protocol screen */
|
/* attach unbound to 0 protocol screen */
|
||||||
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
|
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
|
||||||
+ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
|
+ xf86AutoConfigOutputDevice(xf86GPUScreens[i], xf86Screens[0]);
|
||||||
@ -88,10 +69,10 @@ index 0525e39..82fef32 100644
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
||||||
index 3011f13..34c1848 100644
|
index 4a490c6..5453f3a 100644
|
||||||
--- a/hw/xfree86/modes/xf86Crtc.c
|
--- a/hw/xfree86/modes/xf86Crtc.c
|
||||||
+++ b/hw/xfree86/modes/xf86Crtc.c
|
+++ b/hw/xfree86/modes/xf86Crtc.c
|
||||||
@@ -3323,3 +3323,35 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn)
|
@@ -3358,3 +3358,35 @@ xf86DetachAllCrtc(ScrnInfoPtr scrn)
|
||||||
crtc->x = crtc->y = 0;
|
crtc->x = crtc->y = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -128,5 +109,5 @@ index 3011f13..34c1848 100644
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
--
|
--
|
||||||
1.8.1
|
1.8.2
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user