diff --git a/.gitignore b/.gitignore index a5de122..68f572c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ SOURCES/intel-gpu-tools-20130611.tar.bz2 -SOURCES/xf86-video-intel-2.21.15.tar.bz2 +SOURCES/xf86-video-intel-2.99.916.tar.bz2 diff --git a/.xorg-x11-drv-intel.metadata b/.xorg-x11-drv-intel.metadata index 60119f5..baa1ab9 100644 --- a/.xorg-x11-drv-intel.metadata +++ b/.xorg-x11-drv-intel.metadata @@ -1,2 +1,2 @@ 7f29a7c413357295e815a6495a2fcf219a0ada3b SOURCES/intel-gpu-tools-20130611.tar.bz2 -6952e6e1deff1c4580ddee472dbc2223c3248d0f SOURCES/xf86-video-intel-2.21.15.tar.bz2 +ad5fee90ceaed8daf36aecb1d5e68aeb5e0a070a SOURCES/xf86-video-intel-2.99.916.tar.bz2 diff --git a/SOURCES/0001-sna-Fix-use-of-GETBLOB-ioctl-for-grabbing-the-MST-pa.patch b/SOURCES/0001-sna-Fix-use-of-GETBLOB-ioctl-for-grabbing-the-MST-pa.patch new file mode 100644 index 0000000..d871776 --- /dev/null +++ b/SOURCES/0001-sna-Fix-use-of-GETBLOB-ioctl-for-grabbing-the-MST-pa.patch @@ -0,0 +1,68 @@ +From f39e1d19c166a97a74974edf3fe79082d3a46d2b Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Wed, 10 Sep 2014 07:04:55 +0100 +Subject: [PATCH] sna: Fix use of GETBLOB ioctl for grabbing the MST path + +Unlike the other drm getters, GETBLOB insists on the exact length rather +than being told the buffer size. + +Reported-by: Dave Airlie +Signed-off-by: Chris Wilson +--- + src/sna/sna_display.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c +index a14f789..6e80d1b 100644 +--- a/src/sna/sna_display.c ++++ b/src/sna/sna_display.c +@@ -3492,7 +3492,7 @@ static int name_from_path(struct sna *sna, + char *name) + { + struct drm_mode_get_blob blob; +- char buf[32], *path = buf; ++ char *path; + int id; + + id = find_property(sna, sna_output, "PATH"); +@@ -3502,20 +3502,19 @@ static int name_from_path(struct sna *sna, + + VG_CLEAR(blob); + blob.blob_id = sna_output->prop_values[id]; +- blob.length = sizeof(buf)-1; +- blob.data = (uintptr_t)path; +- VG(memset(path, 0, blob.length)); ++ blob.length = 0; + if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_GETPROPBLOB, &blob)) + return 0; + +- if (blob.length >= sizeof(buf)) { +- path = alloca(blob.length + 1); ++ do { ++ id = blob.length; ++ path = alloca(id + 1); + blob.data = (uintptr_t)path; +- VG(memset(path, 0, blob.length)); +- DBG(("%s: reading %d bytes for path blob\n", __FUNCTION__, blob.length)); ++ VG(memset(path, 0, id)); ++ DBG(("%s: reading %d bytes for path blob\n", __FUNCTION__, id)); + if (drmIoctl(sna->kgem.fd, DRM_IOCTL_MODE_GETPROPBLOB, &blob)) + return 0; +- } ++ } while (id != blob.length); + + path[blob.length] = '\0'; /* paranoia */ + DBG(("%s: PATH='%s'\n", __FUNCTION__, path)); +@@ -3540,7 +3539,8 @@ static int name_from_path(struct sna *sna, + + for (n = 0; n < sna->mode.num_real_output; n++) { + if (to_sna_output(config->output[n])->id == id) +- return snprintf(name, 32, "%s-%s", config->output[n]->name, c + 1); ++ return snprintf(name, 32, "%s-%s", ++ config->output[n]->name, c + 1); + } + } + +-- +1.8.3.1 + diff --git a/SOURCES/0001-sna-gen8-Clamp-URB-allocations-for-GT3.patch b/SOURCES/0001-sna-gen8-Clamp-URB-allocations-for-GT3.patch new file mode 100644 index 0000000..4632fb4 --- /dev/null +++ b/SOURCES/0001-sna-gen8-Clamp-URB-allocations-for-GT3.patch @@ -0,0 +1,48 @@ +From 7a9bdadd71730adc5266bc6758982abec5917b93 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Wed, 22 Oct 2014 19:31:10 +0100 +Subject: [PATCH] sna/gen8: Clamp URB allocations for GT3 + +GT3 requires some reserved space in the URB allocation and so we must +reduce the amount we allocate to our vertices. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81583 +Signed-off-by: Chris Wilson +--- + src/sna/gen8_render.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c +index 1eac5a7..a6a5dd2 100644 +--- a/src/sna/gen8_render.c ++++ b/src/sna/gen8_render.c +@@ -462,21 +462,21 @@ gen8_emit_urb(struct sna *sna) + { + /* num of VS entries must be divisible by 8 if size < 9 */ + OUT_BATCH(GEN8_3DSTATE_URB_VS | (2 - 2)); +- OUT_BATCH(1024 << URB_ENTRY_NUMBER_SHIFT | ++ OUT_BATCH(960 << URB_ENTRY_NUMBER_SHIFT | + (2 - 1) << URB_ENTRY_SIZE_SHIFT | +- 0 << URB_STARTING_ADDRESS_SHIFT); ++ 4 << URB_STARTING_ADDRESS_SHIFT); + + OUT_BATCH(GEN8_3DSTATE_URB_HS | (2 - 2)); + OUT_BATCH(0 << URB_ENTRY_SIZE_SHIFT | +- 0 << URB_STARTING_ADDRESS_SHIFT); ++ 4 << URB_STARTING_ADDRESS_SHIFT); + + OUT_BATCH(GEN8_3DSTATE_URB_DS | (2 - 2)); + OUT_BATCH(0 << URB_ENTRY_SIZE_SHIFT | +- 0 << URB_STARTING_ADDRESS_SHIFT); ++ 4 << URB_STARTING_ADDRESS_SHIFT); + + OUT_BATCH(GEN8_3DSTATE_URB_GS | (2 - 2)); + OUT_BATCH(0 << URB_ENTRY_SIZE_SHIFT | +- 0 << URB_STARTING_ADDRESS_SHIFT); ++ 4 << URB_STARTING_ADDRESS_SHIFT); + } + + static void +-- +2.1.0 + diff --git a/SOURCES/0001-xwayland-Add-xwayland-support.patch b/SOURCES/0001-xwayland-Add-xwayland-support.patch deleted file mode 100644 index a010881..0000000 --- a/SOURCES/0001-xwayland-Add-xwayland-support.patch +++ /dev/null @@ -1,374 +0,0 @@ -From d9769c193765ac303ad4d4760e57ff368df1f663 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= -Date: Mon, 24 Sep 2012 15:01:09 -0400 -Subject: [PATCH 1/2] xwayland: Add xwayland support - ---- - src/intel_device.c | 18 ++++++---- - src/intel_driver.h | 6 +++- - src/intel_module.c | 8 +++++ - src/uxa/intel.h | 2 ++ - src/uxa/intel_dri.c | 38 +++++++++++++++++++-- - src/uxa/intel_driver.c | 89 ++++++++++++++++++++++++++++++++++++++++++++------ - 6 files changed, 140 insertions(+), 21 deletions(-) - -diff --git a/src/intel_device.c b/src/intel_device.c -index d9ff8bc..370b03c 100644 ---- a/src/intel_device.c -+++ b/src/intel_device.c -@@ -181,14 +181,18 @@ int intel_open_device(int entity_num, - if (dev) - return dev->fd; - -- local_path = path ? strdup(path) : NULL; -+ if (!xorgWayland) { -+ local_path = path ? strdup(path) : NULL; - -- fd = __intel_open_device(pci, &local_path); -- if (fd == -1) -- goto err_path; -+ fd = __intel_open_device(pci, &local_path); -+ if (fd == -1) -+ goto err_path; - -- if (!__intel_check_device(fd)) -- goto err_close; -+ if (!__intel_check_device(fd)) -+ goto err_close; -+ } else { -+ fd = -1; -+ } - - dev = malloc(sizeof(*dev)); - if (dev == NULL) -@@ -207,7 +211,7 @@ int intel_open_device(int entity_num, - - xf86GetEntityPrivate(entity_num, intel_device_key)->ptr = dev; - -- return fd; -+ return xorgWayland ? 0 : fd; - - err_close: - close(fd); -diff --git a/src/intel_driver.h b/src/intel_driver.h -index 4768536..103d31e 100644 ---- a/src/intel_driver.h -+++ b/src/intel_driver.h -@@ -129,6 +129,10 @@ void intel_put_device(ScrnInfoPtr scrn); - - void __intel_uxa_release_device(ScrnInfoPtr scrn); - --#define hosted() (0) -+#include -+#ifdef XORG_WAYLAND -+#include -+#define hosted() (xorgWayland) -+#endif - - #endif /* INTEL_DRIVER_H */ -diff --git a/src/intel_module.c b/src/intel_module.c -index b91152e..ec6d8b8 100644 ---- a/src/intel_module.c -+++ b/src/intel_module.c -@@ -30,6 +30,7 @@ - - #include - #include -+#include - #include - - #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,6,99,0,0) -@@ -387,6 +388,10 @@ static Bool intel_driver_func(ScrnInfoPtr pScrn, - (*flag) = HW_SKIP_CONSOLE; - #endif - -+#ifdef HW_WAYLAND -+ if (xorgWayland) -+ (*flag) = HW_WAYLAND; -+#endif - return TRUE; - default: - /* Unknown or deprecated function */ -@@ -415,6 +420,9 @@ static enum accel_method { UXA, SNA } get_accel_method(void) - enum accel_method accel_method = DEFAULT_ACCEL_METHOD; - XF86ConfDevicePtr dev; - -+ if (xorgWayland) -+ return UXA; -+ - if (hosted()) - return SNA; - -diff --git a/src/uxa/intel.h b/src/uxa/intel.h -index 9b696cd..0b3b95c 100644 ---- a/src/uxa/intel.h -+++ b/src/uxa/intel.h -@@ -350,6 +350,8 @@ typedef struct intel_screen_private { - InputHandlerProc uevent_handler; - #endif - Bool has_prime_vmap_flush; -+ -+ struct xwl_screen *xwl_screen; - } intel_screen_private; - - #define INTEL_INFO(intel) ((intel)->info) -diff --git a/src/uxa/intel_dri.c b/src/uxa/intel_dri.c -index 0370034..74dabe6 100644 ---- a/src/uxa/intel_dri.c -+++ b/src/uxa/intel_dri.c -@@ -50,6 +50,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. - - #include "xf86.h" - #include "xf86_OSproc.h" -+#include "xf86Priv.h" - - #include "xf86Pci.h" - #include "xf86drm.h" -@@ -58,6 +59,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. - #include "shadow.h" - #include "fb.h" - -+#ifdef XORG_WAYLAND -+#include -+#endif -+ - #include "intel.h" - #include "i830_reg.h" - -@@ -1520,6 +1525,22 @@ out_complete: - return TRUE; - } - -+#if DRI2INFOREC_VERSION >= 10 -+static int intel_auth_magic3(ClientPtr client, ScreenPtr screen, uint32_t magic) -+ -+{ -+ ScrnInfoPtr scrn = xf86Screens[screen->myNum]; -+ intel_screen_private *intel = intel_get_screen_private(scrn); -+ -+ /* Not wayland, go stragight to drm */ -+ if (!xorgWayland) -+ return drmAuthMagic(intel->drmSubFD, magic); -+ -+ /* Forward the request to our host */ -+ return xwl_drm_authenticate(client, intel->xwl_screen, magic); -+} -+#endif -+ - static int dri2_server_generation; - #endif - -@@ -1617,14 +1638,25 @@ Bool I830DRI2ScreenInit(ScreenPtr screen) - info.CopyRegion = I830DRI2CopyRegion; - #if DRI2INFOREC_VERSION >= 4 - info.version = 4; -- info.ScheduleSwap = I830DRI2ScheduleSwap; -- info.GetMSC = I830DRI2GetMSC; -- info.ScheduleWaitMSC = I830DRI2ScheduleWaitMSC; -+ if (!xorgWayland) { -+ info.ScheduleSwap = I830DRI2ScheduleSwap; -+ info.GetMSC = I830DRI2GetMSC; -+ info.ScheduleWaitMSC = I830DRI2ScheduleWaitMSC; -+ } else { -+ info.ScheduleSwap = NULL; -+ info.GetMSC = NULL; -+ info.ScheduleWaitMSC = NULL; -+ } - info.numDrivers = 1; - info.driverNames = driverNames; - driverNames[0] = info.driverName; - #endif - -+#if DRI2INFOREC_VERSION >= 10 -+ info.version = 10; -+ info.AuthMagic3 = intel_auth_magic3; -+#endif -+ - return DRI2ScreenInit(screen, &info); - } - -diff --git a/src/uxa/intel_driver.c b/src/uxa/intel_driver.c -index 675408d..e74ba60 100644 ---- a/src/uxa/intel_driver.c -+++ b/src/uxa/intel_driver.c -@@ -70,12 +70,17 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. - #include "intel_xvmc.h" - #endif - -+#ifdef XORG_WAYLAND -+#include -+#endif -+ - #include "legacy/legacy.h" - #include "uxa.h" - - #include - #include "i915_drm.h" - #include -+#include - - #include "intel_glamor.h" - #include "intel_options.h" -@@ -167,10 +172,16 @@ static Bool i830CreateScreenResources(ScreenPtr screen) - if (!(*screen->CreateScreenResources) (screen)) - return FALSE; - -+#ifdef XORG_WAYLAND -+ if (intel->xwl_screen) -+ xwl_screen_init(intel->xwl_screen, screen); -+#endif -+ - if (!intel_uxa_create_screen_resources(screen)) - return FALSE; - -- intel_copy_fb(scrn); -+ if (!intel->xwl_screen) -+ intel_copy_fb(scrn); - return TRUE; - } - -@@ -463,6 +474,27 @@ static void intel_setup_capabilities(ScrnInfoPtr scrn) - #endif - } - -+#ifdef XORG_WAYLAND -+static int intel_create_window_buffer(struct xwl_window *xwl_window, -+ PixmapPtr pixmap) -+{ -+ uint32_t name; -+ dri_bo *bo; -+ -+ bo = intel_get_pixmap_bo(pixmap); -+ if (bo == NULL || dri_bo_flink(bo, &name) != 0) -+ return BadDrawable; -+ -+ return xwl_create_window_buffer_drm(xwl_window, pixmap, name); -+} -+ -+static struct xwl_driver xwl_driver = { -+ .version = 1, -+ .use_drm = 1, -+ .create_window_buffer = intel_create_window_buffer -+}; -+#endif -+ - /** - * This is called before ScreenInit to do any require probing of screen - * configuration. -@@ -517,12 +549,6 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags) - - intel->PciInfo = xf86GetPciInfoForEntity(intel->pEnt->index); - -- if (!intel_open_drm_master(scrn)) { -- xf86DrvMsg(scrn->scrnIndex, X_ERROR, -- "Failed to become DRM master.\n"); -- return FALSE; -- } -- - scrn->monitor = scrn->confScreen->monitor; - scrn->progClock = TRUE; - scrn->rgbBits = 8; -@@ -561,6 +587,31 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags) - intel_check_chipset_option(scrn); - intel_check_dri_option(scrn); - -+#ifdef XORG_WAYLAND -+ if (xorgWayland) { -+ intel->xwl_screen = xwl_screen_create(); -+ if (!intel->xwl_screen) { -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "Failed to initialize xwayland.\n"); -+ return FALSE; -+ } -+ -+ if (!xwl_screen_pre_init(scrn, intel->xwl_screen, -+ 0, &xwl_driver)) { -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "Failed to pre-init xwayland screen\n"); -+ xwl_screen_destroy(intel->xwl_screen); -+ } -+ -+ intel->drmSubFD = xwl_screen_get_drm_fd(intel->xwl_screen); -+ } -+#endif -+ -+ if (!intel->xwl_screen && !intel_open_drm_master(scrn)) -+ xf86DrvMsg(scrn->scrnIndex, X_ERROR, -+ "Failed to become DRM master.\n"); -+ -+ - if (!intel_init_bufmgr(intel)) { - PreInitCleanup(scrn); - return FALSE; -@@ -599,6 +650,9 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags) - intel->swapbuffers_wait = xf86ReturnOptValBool(intel->Options, - OPTION_SWAPBUFFERS_WAIT, - TRUE); -+ if (!intel->xwl_screen) -+ intel->swapbuffers_wait = TRUE; -+ - xf86DrvMsg(scrn->scrnIndex, X_CONFIG, "Wait on SwapBuffers? %s\n", - intel->swapbuffers_wait ? "enabled" : "disabled"); - -@@ -620,7 +674,8 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags) - - I830XvInit(scrn); - -- if (!intel_mode_pre_init(scrn, intel->drmSubFD, intel->cpp)) { -+ if (!intel->xwl_screen && -+ !intel_mode_pre_init(scrn, intel->drmSubFD, intel->cpp)) { - PreInitCleanup(scrn); - return FALSE; - } -@@ -757,6 +812,11 @@ I830BlockHandler(BLOCKHANDLER_ARGS_DECL) - #ifdef INTEL_PIXMAP_SHARING - intel_dirty_update(screen); - #endif -+ -+#ifdef XORG_WAYLAND -+ if (intel->xwl_screen) -+ xwl_screen_post_damage(intel->xwl_screen); -+#endif - } - - static Bool -@@ -792,9 +852,16 @@ intel_flush_callback(CallbackListPtr *list, - pointer user_data, pointer call_data) - { - ScrnInfoPtr scrn = user_data; -+ intel_screen_private *intel = intel_get_screen_private(scrn); -+ - if (scrn->vtSema) { - intel_batch_submit(scrn); - intel_glamor_flush(intel_get_screen_private(scrn)); -+ -+#ifdef XORG_WAYLAND -+ if (intel->xwl_screen) -+ xwl_screen_post_damage(intel->xwl_screen); -+#endif - } - } - -@@ -1067,7 +1134,8 @@ I830ScreenInit(SCREEN_INIT_ARGS_DECL) - if (serverGeneration == 1) - xf86ShowUnusedOptions(scrn->scrnIndex, scrn->options); - -- intel_mode_init(intel); -+ if (!intel->xwl_screen) -+ intel_mode_init(intel); - - intel->suspended = FALSE; - -@@ -1182,7 +1250,8 @@ static Bool I830CloseScreen(CLOSE_SCREEN_ARGS_DECL) - } - - if (intel->front_buffer) { -- intel_mode_remove_fb(intel); -+ if (!intel->xwl_screen) -+ intel_mode_remove_fb(intel); - drm_intel_bo_unreference(intel->front_buffer); - intel->front_buffer = NULL; - } --- -1.8.3.1 - diff --git a/SOURCES/0002-xwayland-shortcut-Enter-ExitVT.patch b/SOURCES/0002-xwayland-shortcut-Enter-ExitVT.patch deleted file mode 100644 index a2e6178..0000000 --- a/SOURCES/0002-xwayland-shortcut-Enter-ExitVT.patch +++ /dev/null @@ -1,38 +0,0 @@ -From d9fb46c2caedf135c21c983a8e379e9bdfc5043d Mon Sep 17 00:00:00 2001 -From: Giovanni Campagna -Date: Wed, 21 Aug 2013 10:02:43 +0200 -Subject: [PATCH 2/2] xwayland: shortcut Enter/ExitVT - -Avoids a warning due to drmGetMaster and a crash with multimonitor, -caused by not having an intel_mode. ---- - src/uxa/intel_driver.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/uxa/intel_driver.c b/src/uxa/intel_driver.c -index e74ba60..1c38075 100644 ---- a/src/uxa/intel_driver.c -+++ b/src/uxa/intel_driver.c -@@ -1175,6 +1175,9 @@ static void I830LeaveVT(VT_FUNC_ARGS_DECL) - intel_screen_private *intel = intel_get_screen_private(scrn); - int ret; - -+ if (xorgWayland) -+ return TRUE; -+ - xf86RotateFreeShadow(scrn); - - xf86_hide_cursors(scrn); -@@ -1194,6 +1197,9 @@ static Bool I830EnterVT(VT_FUNC_ARGS_DECL) - intel_screen_private *intel = intel_get_screen_private(scrn); - int ret; - -+ if (xorgWayland) -+ return TRUE; -+ - ret = drmSetMaster(intel->drmSubFD); - if (ret) { - xf86DrvMsg(scrn->scrnIndex, X_WARNING, --- -1.8.3.1 - diff --git a/SOURCES/intel-2.21.15-xserver-1.15-compat.patch b/SOURCES/intel-2.21.15-xserver-1.15-compat.patch deleted file mode 100644 index 6062a70..0000000 --- a/SOURCES/intel-2.21.15-xserver-1.15-compat.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up xf86-video-intel-2.21.15/src/compat-api.h.jx xf86-video-intel-2.21.15/src/compat-api.h ---- xf86-video-intel-2.21.15/src/compat-api.h.jx 2013-05-21 06:15:11.000000000 -0400 -+++ xf86-video-intel-2.21.15/src/compat-api.h 2013-10-24 15:30:52.291337300 -0400 -@@ -158,4 +158,8 @@ static inline void FreePixmap(PixmapPtr - if ((d)->pScreen->SourceValidate) (d)->pScreen->SourceValidate(d, x, y, w, h) - #endif - -+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,14,99,3,0) -+#define DamageUnregister(a, b) DamageUnregister(b) -+#endif -+ - #endif diff --git a/SOURCES/intel-2.99.916-no-present.patch b/SOURCES/intel-2.99.916-no-present.patch new file mode 100644 index 0000000..ce8e041 --- /dev/null +++ b/SOURCES/intel-2.99.916-no-present.patch @@ -0,0 +1,11 @@ +diff -up xf86-video-intel-2.99.916/src/sna/sna_driver.c.jx xf86-video-intel-2.99.916/src/sna/sna_driver.c +--- xf86-video-intel-2.99.916/src/sna/sna_driver.c.jx 2014-08-29 05:33:11.000000000 -0400 ++++ xf86-video-intel-2.99.916/src/sna/sna_driver.c 2015-01-06 14:19:23.490615519 -0500 +@@ -715,7 +715,6 @@ static Bool sna_pre_init(ScrnInfoPtr scr + sna->present.available = false; + if (xf86ReturnOptValBool(sna->Options, OPTION_PRESENT, TRUE)) { + #if HAVE_PRESENT +- sna->present.available = !!xf86LoadSubModule(scrn, "present"); + #endif + } + diff --git a/SOURCES/intel-fix-xorg-triplebuf.patch b/SOURCES/intel-fix-xorg-triplebuf.patch new file mode 100644 index 0000000..5ac5ac2 --- /dev/null +++ b/SOURCES/intel-fix-xorg-triplebuf.patch @@ -0,0 +1,23 @@ +diff -up xf86-video-intel-2.99.916/src/sna/sna_dri2.c.dma xf86-video-intel-2.99.916/src/sna/sna_dri2.c +--- xf86-video-intel-2.99.916/src/sna/sna_dri2.c.dma 2014-10-03 01:00:55.438371801 +0000 ++++ xf86-video-intel-2.99.916/src/sna/sna_dri2.c 2014-10-03 01:01:58.112724027 +0000 +@@ -254,19 +254,7 @@ inline static void *dri2_window_get_fron + + #else + +-#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,15,99,904,0) +-/* Prime fixed for triple buffer support */ + #define xorg_can_triple_buffer(ptr) 1 +-#elif XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,12,99,901,0) +-/* Before numGPUScreens was introduced */ +-#define xorg_can_triple_buffer(ptr) 1 +-#else +-/* Subject to crashers when combining triple buffering and Prime */ +-inline static bool xorg_can_triple_buffer(struct sna *sna) +-{ +- return screenInfo.numGPUScreens == 0; +-} +-#endif + + static Bool + sna_dri2_swap_limit_validate(DrawablePtr draw, int swap_limit) diff --git a/SPECS/xorg-x11-drv-intel.spec b/SPECS/xorg-x11-drv-intel.spec index 9ef98b5..5cb4a40 100644 --- a/SPECS/xorg-x11-drv-intel.spec +++ b/SPECS/xorg-x11-drv-intel.spec @@ -19,17 +19,10 @@ %define kmsonly 1 %endif -#if 0%{?rhel7} || 0%{?fedora} > 19 -%if 0 -%define accel sna -%else -%define accel uxa -%endif - Summary: Xorg X11 Intel video driver Name: xorg-x11-drv-intel -Version: 2.21.15 -Release: 13%{?gitrev}%{?dist} +Version: 2.99.916 +Release: 5%{?gitrev}%{?dist} URL: http://www.x.org License: MIT Group: User Interface/X Hardware Support @@ -43,9 +36,14 @@ Source1: make-intel-gpu-tools-snapshot.sh Source3: intel-gpu-tools-%{gputoolsdate}.tar.bz2 Source4: make-git-snapshot.sh -Patch1: 0001-xwayland-Add-xwayland-support.patch -Patch2: 0002-xwayland-shortcut-Enter-ExitVT.patch -Patch3: intel-2.21.15-xserver-1.15-compat.patch +Patch0: 0001-sna-Fix-use-of-GETBLOB-ioctl-for-grabbing-the-MST-pa.patch + +# patch for 1148691 dri2/prime interaction +Patch1: intel-fix-xorg-triplebuf.patch + +Patch2: intel-2.99.916-no-present.patch + +Patch3: 0001-sna-gen8-Clamp-URB-allocations-for-GT3.patch ExclusiveArch: %{ix86} x86_64 ia64 @@ -67,6 +65,9 @@ Requires: Xorg %(xserver-sdk-abi-requires videodrv) Requires: xserver-abi(xwayland) = 1 %endif +# el7.1 we need this for dri2 failures that cause crashes +Requires: xorg-x11-server-Xorg >= 1.15.0-29.el7 + %description X.Org X11 Intel video driver. @@ -94,11 +95,11 @@ Debugging tools for Intel graphics chips %prep %setup -q -n xf86-video-intel-%{?gitdate:%{gitdate}}%{!?gitdate:%{dirsuffix}} -b3 -%if !0%{?rhel} -%patch1 -p1 -b .wl1 -%patch2 -p1 -b .wl2 -%endif -%patch3 -p1 -b .compat + +%patch0 -p1 -b .mstfix +%patch1 -p1 -b .fixc +%patch2 -p1 -b .present +%patch3 -p1 -b .gen8 %build @@ -116,9 +117,9 @@ autoreconf -v --install %{?kmsonly:--enable-kms-only} \ --disable-static \ --enable-dri \ + --disable-dri3 \ --enable-xvmc \ - --enable-sna \ - --with-default-accel=%{accel} + --enable-sna make pushd ../intel-gpu-tools-%{gputoolsdate} @@ -154,6 +155,7 @@ rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) %doc COPYING +%{_datadir}/polkit-1/actions/org.x.xf86-video-intel.backlight-helper.policy %{driverdir}/intel_drv.so %ifarch %{ix86} %if !0%{?rhel7}%{?kmsonly} @@ -161,6 +163,7 @@ rm -rf $RPM_BUILD_ROOT %endif %endif %{_libdir}/libIntelXvMC.so.1* +%{_libexecdir}/xf86-video-intel-backlight-helper %{_mandir}/man4/i* %files devel @@ -176,6 +179,24 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/intel_*.1* %changelog +* Tue Jan 27 2015 Adam Jackson 2.99.916-5 +- Backport a gen8 stability fix + +* Tue Jan 06 2015 Adam Jackson 2.99.916-4 +- Disable present extension support more sternly + +* Tue Oct 07 2014 Dave Airlie 2.99.916-3 +- fix black screen with dri2/prime systems + +* Wed Sep 10 2014 Dave Airlie 2.99.916-2 +- fix bug with MST connector naming + +* Wed Sep 10 2014 Dave Airlie 2.99.916-1 +- intel 2.99.916 - adds mst support. + +* Thu Aug 28 2014 Adam Jackson 2.99.914-1 +- intel 2.99.914 + * Mon Jan 13 2014 Adam Jackson - 2.21.15-13 - 1.15 ABI rebuild