diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/.lastcommit xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/.lastcommit --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/.lastcommit 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/.lastcommit 2013-06-07 13:28:26.000000000 +0000 @@ -1 +1 @@ -commit 6dacaddb6a28670a52cead4b62c056a8acde8f3a +commit e85271e516f811c60f440de61995cc5baf469a47 diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/ChangeLog xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/ChangeLog --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/ChangeLog 2013-06-03 18:56:44.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/ChangeLog 2013-06-07 13:28:38.000000000 +0000 @@ -1,9 +1,148 @@ -commit 8dda28efc7b4640fb70f14dc851768c89628bb9c +commit d56ae0765c60beee99e73896fe8e1d82e99c94c6 Author: Robert Hooker -Date: Mon Jun 3 14:56:08 2013 -0400 +Date: Fri Jun 7 09:28:26 2013 -0400 Add debian tree from origin/ubuntu +commit e85271e516f811c60f440de61995cc5baf469a47 +Author: Chris Wilson +Date: Fri Jun 7 13:35:48 2013 +0100 + + sna/dri: Do not decouple the flip after chaining up a blit + + Fixes regression from previous patch. + + Signed-off-by: Chris Wilson + +commit ab47433b20a623bf790acfbf2005a8782d177f64 +Author: Chris Wilson +Date: Thu Jun 6 23:15:14 2013 +0100 + + sna/video: Select vsync by default based on "SwapbuffersWait" + + To be strictly identical to the DRI code, we should override the user + when the option is set. However, this a baby step for simple bug + testing. + + References: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1176647 + Signed-off-by: Chris Wilson + +commit 7e1e18aca214a8705270972131a1800c81bc3b4d +Author: Chris Wilson +Date: Thu Jun 6 21:40:30 2013 +0100 + + sna/video: Fixup formats to select visuals + + Fixes regression from + commit 195a51353c3af7bd253227da5f759f06cea01f73 [2.21.8] + Author: Chris Wilson + Date: Tue Apr 9 19:13:46 2013 +0100 + + sna/video: Convert to a pure Xv backend + + Reported-by: Edward Sheldrake + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65479 + Signed-off-by: Chris Wilson + +commit 0869acc0a6a5b92f5528049d2bd5ec62121ba114 +Author: Chris Wilson +Date: Thu Jun 6 21:21:24 2013 +0100 + + sna/dri: Make the fallback blit async again + + Previously it was async, and is likely to be anyway as the pageflip + failed due to the change in output. To be safe, once again request that + the copy does not stall the GPU upon the scanline window. + + Signed-off-by: Chris Wilson + +commit 9b52c852aaf42dde3a7f29c065e4d5230eac7a64 +Author: Chris Wilson +Date: Thu Jun 6 16:40:01 2013 +0100 + + sna/dri: Handle fast double flips across mode changes + + The tricky nature of the double flip is that there is no SwapComplete + pending and so we must avoid calling it under such circumstances. + + Signed-off-by: Chris Wilson + +commit 0da5cc23b18d4e2473a3b6a571fb49d08bb1dd2d +Author: Chris Wilson +Date: Thu Jun 6 14:11:50 2013 +0100 + + sna: Fix format specifier for mismatching int/long in DBG + + Signed-off-by: Chris Wilson + +commit 2770655371954413c750b030c9a7135baee302d4 +Author: Chris Wilson +Date: Thu Jun 6 12:04:23 2013 +0100 + + 2.21.9 release + +commit d3345cd269dc75999b35f3286d21059974dcb24b +Author: Chris Wilson +Date: Thu Jun 6 12:18:32 2013 +0100 + + sna: Only emit an error for terminal mmap failures + + If we repeat the mmap, keep quiet. Only emit the ErrorF in case even the + repeated attempts to mmap the bo fail. + + Signed-off-by: Chris Wilson + +commit 70fa080d02bff9742523cea52c875d9447a78bfd +Author: Chris Wilson +Date: Wed Jun 5 23:32:01 2013 +0100 + + sna: Include the GT details in the backend name for a chipset + + Signed-off-by: Chris Wilson + +commit 45c09bfe58c37bbf7965af25bdd4fa5c37c0908f +Author: Rodrigo Vivi +Date: Wed Jun 5 13:07:13 2013 -0300 + + Add more correct names for Haswell. + + As we find out more of the final product names for Haswell chipsets, we + need to update the user visible identification strings. + + Signed-off-by: Rodrigo Vivi + +commit a9f9fb8e44bb0bdbd004da1fce986585ebcafd28 +Author: Chris Wilson +Date: Wed Jun 5 09:48:19 2013 +0100 + + sna/video: Fix redundant initialisation of video->clip + + It will be created before use anyway, but this silences a compiler + warning. + + Signed-off-by: Chris Wilson + +commit 5d0ae71f1d667759ed4cfd2b7e793a08b8e3702c +Author: Chris Wilson +Date: Wed Jun 5 09:12:48 2013 +0100 + + sna: Do not conflate ignoring an output with an allocation failure + + If the user explicitly ignores an output through xorg.conf, then + xf86OutputCreate returns NULL. This is not to be confused with an + allocation error that also returns NULL. The latter is terminal, the + former is desired. + + Fixes regression from commit a9acc8dbb436e1e523e7d7c0f3c41946a2d0f245 + Author: Chris Wilson + Date: Thu May 30 12:09:52 2013 +0100 + + sna: Cleanup up error reporting after failure to init KMS interface + + Reported-by: David Rosca + Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=65381 + Signed-off-by: Chris Wilson + commit 6dacaddb6a28670a52cead4b62c056a8acde8f3a Author: Chris Wilson Date: Mon Jun 3 15:34:37 2013 +0100 diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/NEWS xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/NEWS --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/NEWS 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/NEWS 2013-06-07 13:28:26.000000000 +0000 @@ -1,3 +1,25 @@ +Release 2.21.9 (2013-06-06) +=========================== +Consolidating the copy-on-write support, hopefully cleaning up the last of +the regressions. + + * Restore vsync on textured videos. + [regression from 2.21.8] + https://bugs.freedesktop.org/show_bug.cgi?id=65048 + + * Fix incorrect ordering of possible_clones with certain outputs, which + can lead to attempting to incorrectly clone 2 outputs and failing to + light them up. + [regression from 2.20.10] + + * Fix performance regression from not promoting large fills to the GPU + [regression from 2.21.7] + + * Undo the pixmap clone before performing a DRI2CopyRegion + [regression from 2.21.7] + https://bugs.freedesktop.org/show_bug.cgi?id=65250 + + Release 2.21.8 (2013-05-27) =========================== A quick release to cleanup a few regressions from the introduction of diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/configure xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/configure --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/configure 2013-06-03 18:56:41.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/configure 2013-06-07 13:28:36.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for xf86-video-intel 2.21.8. +# Generated by GNU Autoconf 2.69 for xf86-video-intel 2.21.9. # # Report bugs to . # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='xf86-video-intel' PACKAGE_TARNAME='xf86-video-intel' -PACKAGE_VERSION='2.21.8' -PACKAGE_STRING='xf86-video-intel 2.21.8' +PACKAGE_VERSION='2.21.9' +PACKAGE_STRING='xf86-video-intel 2.21.9' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' PACKAGE_URL='' @@ -1453,7 +1453,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures xf86-video-intel 2.21.8 to adapt to many kinds of systems. +\`configure' configures xf86-video-intel 2.21.9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1524,7 +1524,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xf86-video-intel 2.21.8:";; + short | recursive ) echo "Configuration of xf86-video-intel 2.21.9:";; esac cat <<\_ACEOF @@ -1713,7 +1713,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xf86-video-intel configure 2.21.8 +xf86-video-intel configure 2.21.9 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2128,7 +2128,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by xf86-video-intel $as_me 2.21.8, which was +It was created by xf86-video-intel $as_me 2.21.9, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2949,7 +2949,7 @@ # Define the identity of the package. PACKAGE='xf86-video-intel' - VERSION='2.21.8' + VERSION='2.21.9' cat >>confdefs.h <<_ACEOF @@ -20730,7 +20730,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by xf86-video-intel $as_me 2.21.8, which was +This file was extended by xf86-video-intel $as_me 2.21.9, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20796,7 +20796,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -xf86-video-intel config.status 2.21.8 +xf86-video-intel config.status 2.21.9 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/configure.ac xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/configure.ac --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/configure.ac 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/configure.ac 2013-06-07 13:28:26.000000000 +0000 @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-video-intel], - [2.21.8], + [2.21.9], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-video-intel]) AC_CONFIG_SRCDIR([Makefile.am]) diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/debian/changelog xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/debian/changelog --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/debian/changelog 2013-06-07 13:48:17.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/debian/changelog 2013-06-07 13:48:17.000000000 +0000 @@ -1,22 +1,22 @@ -xserver-xorg-video-intel (2:2.21.8+git20130603.6dacaddb-0ubuntu0sarvatt~quantal) quantal; urgency=critical +xserver-xorg-video-intel (2:2.21.9+git20130607.e85271e5-0ubuntu0sarvatt~quantal) quantal; urgency=critical - * Checkout from git 20130603 (master branch) up to commit - 6dacaddb6a28670a52cead4b62c056a8acde8f3a + * Checkout from git 20130607 (master branch) up to commit + e85271e516f811c60f440de61995cc5baf469a47 * Only added debian/ tree from origin/ubuntu * hook: Refresh 0002-Update-manpage-for-new-accelmethod-option.patch - -- Robert Hooker Mon, 03 Jun 2013 14:56:44 -0400 + -- Robert Hooker Fri, 07 Jun 2013 09:28:39 -0400 -xserver-xorg-video-intel (2:2.21.7-0ubuntu1) saucy; urgency=low +xserver-xorg-video-intel (2:2.21.9-0ubuntu1) saucy; urgency=low * Merge from unreleased debian git, remaining changes: - Use SNA by default. - * rules: Add --enable-valgrind again. - * Drop sna-flush-scanout-cache-after-resizing.patch, upstreamed. + * Add support for haswell graphics. (LP: #1175533) + * Fix crash in xserver when using the unity dash. (LP: #118123) - -- Maarten Lankhorst Thu, 23 May 2013 09:44:44 +0200 + -- Maarten Lankhorst Thu, 06 Jun 2013 15:05:00 +0200 -xserver-xorg-video-intel (2:2.21.7-1) UNRELEASED; urgency=low +xserver-xorg-video-intel (2:2.21.9-1) UNRELEASED; urgency=low [ Timo Aaltonen ] * New upstream release. @@ -28,6 +28,15 @@ -- Timo Aaltonen Fri, 07 Dec 2012 09:33:39 +0200 +xserver-xorg-video-intel (2:2.21.7-0ubuntu1) saucy; urgency=low + + * Merge from unreleased debian git, remaining changes: + - Use SNA by default. + * rules: Add --enable-valgrind again. + * Drop sna-flush-scanout-cache-after-resizing.patch, upstreamed. + + -- Maarten Lankhorst Thu, 23 May 2013 09:44:44 +0200 + xserver-xorg-video-intel (2:2.21.6-0ubuntu4) raring-proposed; urgency=low [Chris Arges] diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/intel_module.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/intel_module.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/intel_module.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/intel_module.c 2013-06-07 13:28:26.000000000 +0000 @@ -160,19 +160,19 @@ {PCI_CHIP_IVYBRIDGE_D_GT2, "Ivybridge Desktop (GT2)" }, {PCI_CHIP_IVYBRIDGE_S_GT1, "Ivybridge Server" }, {PCI_CHIP_IVYBRIDGE_S_GT2, "Ivybridge Server (GT2)" }, - {PCI_CHIP_HASWELL_D_GT1, "Haswell Desktop (GT1)" }, - {PCI_CHIP_HASWELL_D_GT2, "Haswell Desktop (GT2)" }, + {PCI_CHIP_HASWELL_D_GT1, "HD Graphics" }, + {PCI_CHIP_HASWELL_D_GT2, "HD Graphics 4600" }, {PCI_CHIP_HASWELL_D_GT3, "Haswell Desktop (GT3)" }, - {PCI_CHIP_HASWELL_M_GT1, "Haswell Mobile (GT1)" }, - {PCI_CHIP_HASWELL_M_GT2, "Haswell Mobile (GT2)" }, + {PCI_CHIP_HASWELL_M_GT1, "HD Graphics" }, + {PCI_CHIP_HASWELL_M_GT2, "HD Graphics 4600" }, {PCI_CHIP_HASWELL_M_GT3, "Haswell Mobile (GT3)" }, - {PCI_CHIP_HASWELL_S_GT1, "Haswell Server (GT1)" }, - {PCI_CHIP_HASWELL_S_GT2, "Haswell Server (GT2)" }, + {PCI_CHIP_HASWELL_S_GT1, "HD Graphics" }, + {PCI_CHIP_HASWELL_S_GT2, "HD Graphics P4600/P4700" }, {PCI_CHIP_HASWELL_S_GT3, "Haswell Server (GT3)" }, {PCI_CHIP_HASWELL_B_GT1, "Haswell (GT1)" }, {PCI_CHIP_HASWELL_B_GT2, "Haswell (GT2)" }, {PCI_CHIP_HASWELL_B_GT3, "Haswell (GT3)" }, - {PCI_CHIP_HASWELL_E_GT1, "Haswell (GT1)" }, + {PCI_CHIP_HASWELL_E_GT1, "HD Graphics" }, {PCI_CHIP_HASWELL_E_GT2, "Haswell (GT2)" }, {PCI_CHIP_HASWELL_E_GT3, "Haswell (GT3)" }, {PCI_CHIP_HASWELL_SDV_D_GT1, "Haswell SDV Desktop (GT1)" }, @@ -193,23 +193,23 @@ {PCI_CHIP_HASWELL_ULT_D_GT1, "Haswell ULT Desktop (GT1)" }, {PCI_CHIP_HASWELL_ULT_D_GT2, "Haswell ULT Desktop (GT2)" }, {PCI_CHIP_HASWELL_ULT_D_GT3, "Iris(TM) Graphics 5100" }, - {PCI_CHIP_HASWELL_ULT_M_GT1, "Haswell ULT Mobile (GT1)" }, - {PCI_CHIP_HASWELL_ULT_M_GT2, "Haswell ULT Mobile (GT2)" }, - {PCI_CHIP_HASWELL_ULT_M_GT3, "Iris(TM) Graphics 5100" }, + {PCI_CHIP_HASWELL_ULT_M_GT1, "HD Graphics" }, + {PCI_CHIP_HASWELL_ULT_M_GT2, "HD Graphics 4400" }, + {PCI_CHIP_HASWELL_ULT_M_GT3, "HD Graphics 5000" }, {PCI_CHIP_HASWELL_ULT_S_GT1, "Haswell ULT Server (GT1)" }, {PCI_CHIP_HASWELL_ULT_S_GT2, "Haswell ULT Server (GT2)" }, {PCI_CHIP_HASWELL_ULT_S_GT3, "Iris(TM) Graphics 5100" }, {PCI_CHIP_HASWELL_ULT_B_GT1, "Haswell ULT (GT1)" }, {PCI_CHIP_HASWELL_ULT_B_GT2, "Haswell ULT (GT2)" }, {PCI_CHIP_HASWELL_ULT_B_GT3, "Iris(TM) Graphics 5100" }, - {PCI_CHIP_HASWELL_ULT_E_GT1, "Haswell ULT (GT1)" }, - {PCI_CHIP_HASWELL_ULT_E_GT2, "Haswell ULT (GT2)" }, + {PCI_CHIP_HASWELL_ULT_E_GT1, "HD Graphics" }, + {PCI_CHIP_HASWELL_ULT_E_GT2, "HD Graphics 4200" }, {PCI_CHIP_HASWELL_ULT_E_GT3, "Iris(TM) Graphics 5100" }, {PCI_CHIP_HASWELL_CRW_D_GT1, "Haswell CRW Desktop (GT1)" }, - {PCI_CHIP_HASWELL_CRW_D_GT2, "Haswell CRW Desktop (GT2)" }, + {PCI_CHIP_HASWELL_CRW_D_GT2, "HD Graphics 4600" }, {PCI_CHIP_HASWELL_CRW_D_GT3, "Iris(TM) Pro Graphics 5200" }, {PCI_CHIP_HASWELL_CRW_M_GT1, "Haswell CRW Mobile (GT1)" }, - {PCI_CHIP_HASWELL_CRW_M_GT2, "Haswell CRW Mobile (GT2)" }, + {PCI_CHIP_HASWELL_CRW_M_GT2, "HD Graphics 4600" }, {PCI_CHIP_HASWELL_CRW_M_GT3, "Iris(TM) Pro Graphics 5200" }, {PCI_CHIP_HASWELL_CRW_S_GT1, "Haswell CRW Server (GT1)" }, {PCI_CHIP_HASWELL_CRW_S_GT2, "Haswell CRW Server (GT2)" }, diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/gen6_render.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/gen6_render.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/gen6_render.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/gen6_render.c 2013-06-07 13:28:26.000000000 +0000 @@ -68,6 +68,7 @@ #define GEN6_MAX_SIZE 8192 struct gt_info { + const char *name; int max_vs_threads; int max_gs_threads; int max_wm_threads; @@ -79,6 +80,7 @@ }; static const struct gt_info gt1_info = { + .name = "Sandybridge (gen6, gt1)", .max_vs_threads = 24, .max_gs_threads = 21, .max_wm_threads = 40, @@ -86,6 +88,7 @@ }; static const struct gt_info gt2_info = { + .name = "Sandybridge (gen6, gt2)", .max_vs_threads = 60, .max_gs_threads = 60, .max_wm_threads = 80, @@ -1588,7 +1591,7 @@ unsigned filter; BoxPtr box; - DBG(("%s: src=(%d, %d), dst=(%d, %d), %dx[(%d, %d), (%d, %d)...]\n", + DBG(("%s: src=(%d, %d), dst=(%d, %d), %ldx[(%d, %d), (%d, %d)...]\n", __FUNCTION__, src_width, src_height, dst_width, dst_height, REGION_NUM_RECTS(dstRegion), @@ -3704,5 +3707,5 @@ sna->render.max_3d_size = GEN6_MAX_SIZE; sna->render.max_3d_pitch = 1 << 18; - return "Sandybridge (gen6)"; + return sna->render_state.gen6.info->name; } diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/gen7_render.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/gen7_render.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/gen7_render.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/gen7_render.c 2013-06-07 13:28:26.000000000 +0000 @@ -75,6 +75,7 @@ #define is_aligned(x, y) (((x) & ((y) - 1)) == 0) struct gt_info { + const char *name; uint32_t max_vs_threads; uint32_t max_gs_threads; uint32_t max_wm_threads; @@ -86,6 +87,7 @@ }; static const struct gt_info ivb_gt_info = { + .name = "Ivybridge (gen7)", .max_vs_threads = 16, .max_gs_threads = 16, .max_wm_threads = (16-1) << IVB_PS_MAX_THREADS_SHIFT, @@ -93,6 +95,7 @@ }; static const struct gt_info ivb_gt1_info = { + .name = "Ivybridge (gen7, gt1)", .max_vs_threads = 36, .max_gs_threads = 36, .max_wm_threads = (48-1) << IVB_PS_MAX_THREADS_SHIFT, @@ -100,13 +103,23 @@ }; static const struct gt_info ivb_gt2_info = { + .name = "Ivybridge (gen7, gt2)", .max_vs_threads = 128, .max_gs_threads = 128, .max_wm_threads = (172-1) << IVB_PS_MAX_THREADS_SHIFT, .urb = { 256, 704, 320 }, }; +static const struct gt_info vlv_gt_info = { + .name = "Valleyview (gen7)", + .max_vs_threads = 16, + .max_gs_threads = 16, + .max_wm_threads = (16-1) << IVB_PS_MAX_THREADS_SHIFT, + .urb = { 128, 64, 64 }, +}; + static const struct gt_info hsw_gt_info = { + .name = "Haswell (gen7.5)", .max_vs_threads = 8, .max_gs_threads = 8, .max_wm_threads = @@ -116,6 +129,7 @@ }; static const struct gt_info hsw_gt1_info = { + .name = "Haswell (gen7.5, gt1)", .max_vs_threads = 70, .max_gs_threads = 70, .max_wm_threads = @@ -125,6 +139,7 @@ }; static const struct gt_info hsw_gt2_info = { + .name = "Haswell (gen7.5, gt2)", .max_vs_threads = 140, .max_gs_threads = 140, .max_wm_threads = @@ -1736,7 +1751,7 @@ unsigned filter; BoxPtr box; - DBG(("%s: src=(%d, %d), dst=(%d, %d), %dx[(%d, %d), (%d, %d)...]\n", + DBG(("%s: src=(%d, %d), dst=(%d, %d), %ldx[(%d, %d), (%d, %d)...]\n", __FUNCTION__, src_width, src_height, dst_width, dst_height, REGION_NUM_RECTS(dstRegion), @@ -3718,13 +3733,12 @@ return (DEVICE_ID(sna->PciInfo) & 0xf) == 0x6; } -static const char *gen7_render_setup(struct sna *sna) +static bool gen7_render_setup(struct sna *sna) { struct gen7_render_state *state = &sna->render_state.gen7; struct sna_static_stream general; struct gen7_sampler_state *ss; int i, j, k, l, m; - const char *backend; if (sna->kgem.gen == 070) { state->info = &ivb_gt_info; @@ -3733,10 +3747,8 @@ if (is_gt2(sna)) state->info = &ivb_gt2_info; /* XXX requires GT_MODE WiZ disabled */ } - backend = "Ivybridge (gen7)"; } else if (sna->kgem.gen == 071) { - state->info = &ivb_gt_info; - backend = "Valleyview (gen7)"; + state->info = &vlv_gt_info; } else if (sna->kgem.gen == 075) { state->info = &hsw_gt_info; if (DEVICE_ID(sna->PciInfo) & 0xf) { @@ -3744,9 +3756,8 @@ if (is_gt2(sna)) state->info = &hsw_gt2_info; } - backend = "Haswell (gen7.5)"; } else - return NULL; + return false; sna_static_stream_init(&general); @@ -3807,16 +3818,13 @@ state->cc_blend = gen7_composite_create_blend_state(&general); state->general_bo = sna_static_stream_fini(sna, &general); - return state->general_bo ? backend : NULL; + return state->general_bo != NULL; } -const char *gen7_render_init(struct sna *sna, const char *parent) +const char *gen7_render_init(struct sna *sna, const char *backend) { - const char *backend; - - backend = gen7_render_setup(sna); - if (backend == NULL) - return parent; + if (!gen7_render_setup(sna)) + return backend; sna->kgem.context_switch = gen7_render_context_switch; sna->kgem.retire = gen7_render_retire; @@ -3860,5 +3868,5 @@ sna->render.max_3d_size = GEN7_MAX_SIZE; sna->render.max_3d_pitch = 1 << 18; - return backend; + return sna->render_state.gen7.info->name; } diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/kgem.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/kgem.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/kgem.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/kgem.c 2013-06-07 13:28:26.000000000 +0000 @@ -292,8 +292,8 @@ VG_CLEAR(mmap_arg); mmap_arg.handle = bo->handle; if (drmIoctl(kgem->fd, DRM_IOCTL_I915_GEM_MMAP_GTT, &mmap_arg)) { - ErrorF("%s: failed to retrieve GTT offset for handle=%d: %d\n", - __FUNCTION__, bo->handle, errno); + int err = errno; + (void)__kgem_throttle_retire(kgem, 0); if (kgem_expire_cache(kgem)) goto retry_gtt; @@ -303,6 +303,8 @@ goto retry_gtt; } + ErrorF("%s: failed to retrieve GTT offset for handle=%d: %d\n", + __FUNCTION__, bo->handle, err); return NULL; } @@ -310,8 +312,8 @@ ptr = mmap(0, bytes(bo), PROT_READ | PROT_WRITE, MAP_SHARED, kgem->fd, mmap_arg.offset); if (ptr == MAP_FAILED) { - ErrorF("%s: failed to mmap %d, %d bytes, into GTT domain: %d\n", - __FUNCTION__, bo->handle, bytes(bo), errno); + int err = errno; + if (__kgem_throttle_retire(kgem, 0)) goto retry_mmap; @@ -320,6 +322,8 @@ goto retry_mmap; } + ErrorF("%s: failed to mmap handle=%d, %d bytes, into GTT domain: %d\n", + __FUNCTION__, bo->handle, bytes(bo), err); ptr = NULL; } @@ -1771,7 +1775,7 @@ if (kgem->nexec != 1 || bo->exec == NULL) return; - DBG(("%s: only handle in batch, discarding last operations for handle=%ld\n", + DBG(("%s: only handle in batch, discarding last operations for handle=%d\n", __FUNCTION__, bo->handle)); assert(bo->exec == &kgem->exec[0]); @@ -4694,8 +4698,8 @@ mmap_arg.offset = 0; mmap_arg.size = bytes(bo); if (drmIoctl(kgem->fd, DRM_IOCTL_I915_GEM_MMAP, &mmap_arg)) { - ErrorF("%s: failed to mmap %d, %d bytes, into CPU domain: %d\n", - __FUNCTION__, bo->handle, bytes(bo), errno); + int err = errno; + if (__kgem_throttle_retire(kgem, 0)) goto retry; @@ -4704,6 +4708,8 @@ goto retry; } + ErrorF("%s: failed to mmap handle=%d, %d bytes, into CPU domain: %d\n", + __FUNCTION__, bo->handle, bytes(bo), err); return NULL; } @@ -4734,8 +4740,8 @@ mmap_arg.offset = 0; mmap_arg.size = bytes(bo); if (drmIoctl(kgem->fd, DRM_IOCTL_I915_GEM_MMAP, &mmap_arg)) { - ErrorF("%s: failed to mmap %d, %d bytes, into CPU domain: %d\n", - __FUNCTION__, bo->handle, bytes(bo), errno); + int err = errno; + if (__kgem_throttle_retire(kgem, 0)) goto retry; @@ -4744,6 +4750,8 @@ goto retry; } + ErrorF("%s: failed to mmap handle=%d, %d bytes, into CPU domain: %d\n", + __FUNCTION__, bo->handle, bytes(bo), err); return NULL; } diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_accel.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_accel.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_accel.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_accel.c 2013-06-07 13:28:26.000000000 +0000 @@ -1548,7 +1548,7 @@ { struct sna_cow *cow = COW(priv->cow); - DBG(("%s: pixmap=%ld, handle=%ld, flags=%x\n", + DBG(("%s: pixmap=%ld, handle=%d, flags=%x\n", __FUNCTION__, priv->pixmap->drawable.serialNumber, priv->gpu_bo->handle, @@ -1668,7 +1668,7 @@ if (src_priv->gpu_bo->proxy) return false; - DBG(("%s: make cow src=%ld, dst=%ld, handle=%ld (already cow? src=%d, dst=%d)\n", + DBG(("%s: make cow src=%ld, dst=%ld, handle=%d (already cow? src=%d, dst=%d)\n", __FUNCTION__, src_priv->pixmap->drawable.serialNumber, dst_priv->pixmap->drawable.serialNumber, diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_damage.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_damage.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_damage.c 2013-05-29 15:53:40.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_damage.c 2013-06-07 13:28:26.000000000 +0000 @@ -415,7 +415,7 @@ assert(damage->mode != DAMAGE_ALL); assert(damage->dirty); - DBG((" reduce: before region.n=%d\n", REGION_NUM_RECTS(region))); + DBG((" reduce: before region.n=%ld\n", REGION_NUM_RECTS(region))); nboxes = damage->embedded_box.size; list_for_each_entry(iter, &damage->embedded_box.list, list) @@ -529,7 +529,7 @@ free_list(&damage->embedded_box.list); reset_embedded_box(damage); - DBG((" reduce: after region.n=%d\n", REGION_NUM_RECTS(region))); + DBG((" reduce: after region.n=%ld\n", REGION_NUM_RECTS(region))); } static void damage_union(struct sna_damage *damage, const BoxRec *box) @@ -1251,7 +1251,6 @@ int dx, int dy) { char damage_buf[1000]; - char region_buf[120]; ErrorF("%s(%s - [(%d,%d), (%d,%d)...x%d])...\n", __FUNCTION__, _debug_describe_damage(damage_buf, sizeof(damage_buf), damage), diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_display.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_display.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_display.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_display.c 2013-06-07 13:28:26.000000000 +0000 @@ -44,6 +44,7 @@ #include #include #include /* for xf86InterpretEDID */ +#include /* for xf86OptionPtr */ #include "sna.h" #include "sna_reg.h" @@ -59,6 +60,8 @@ #define __DBG(x) #endif +extern XF86ConfigPtr xf86configptr; + struct sna_crtc { struct drm_mode_modeinfo kmode; int dpms_mode; @@ -2380,6 +2383,29 @@ } static bool +output_ignored(ScrnInfoPtr scrn, const char *name) +{ + char monitor_name[64]; + const char *monitor; + XF86ConfMonitorPtr conf; + + snprintf(monitor_name, sizeof(monitor_name), "monitor-%s", name); + monitor = xf86findOptionValue(scrn->options, monitor_name); + if (!monitor) + monitor = name; + + conf = xf86findMonitor(monitor, + xf86configptr->conf_monitor_lst); + if (conf == NULL && XF86_CRTC_CONFIG_PTR(scrn)->num_output == 0) + conf = xf86findMonitor(scrn->monitor->id, + xf86configptr->conf_monitor_lst); + if (conf == NULL) + return false; + + return xf86CheckBoolOption(conf->mon_option_lst, "Ignore", 0); +} + +static bool sna_output_init(ScrnInfoPtr scrn, struct sna_mode *mode, int num) { struct sna *sna = to_sna(scrn); @@ -2389,6 +2415,7 @@ struct sna_output *sna_output; const char *output_name; char name[32]; + bool ret = false; int i; koutput = drmModeGetConnector(sna->kgem.fd, @@ -2412,8 +2439,8 @@ str = xf86GetOptValString(sna->Options, OPTION_ZAPHOD); if (str && !sna_zaphod_match(str, name)) { - drmModeFreeConnector(koutput); - return true; + ret = true; + goto cleanup_connector; } if ((enc.possible_crtcs & (1 << scrn->confScreen->device->screen)) == 0) { @@ -2430,8 +2457,15 @@ } output = xf86OutputCreate(scrn, &sna_output_funcs, name); - if (!output) + if (!output) { + /* xf86OutputCreate does not differentiate between + * a failure to allocate the output, and a user request + * to ignore the output. So reconstruct whether the user + * explicitly ignored the output. + */ + ret = output_ignored(scrn, name); goto cleanup_connector; + } sna_output = calloc(sizeof(struct sna_output), 1); if (!sna_output) @@ -2470,7 +2504,7 @@ xf86OutputDestroy(output); cleanup_connector: drmModeFreeConnector(koutput); - return false; + return ret; } /* We need to map from kms encoder based possible_clones mask to X output based @@ -2830,7 +2864,7 @@ sna_mode_compute_possible_clones(scrn); #if HAS_PIXMAP_SHARING - xf86ProviderSetup(scrn, NULL, "Intel"); + xf86ProviderSetup(scrn, NULL, "Intel"); #endif } else { if (!sna_mode_fake_init(sna)) @@ -3437,7 +3471,7 @@ struct sna_crtc *sna_crtc = to_sna_crtc(crtc); int16_t tx, ty; - DBG(("%s: crtc %d [pipe=%d], damage (%d, %d), (%d, %d) x %d\n", + DBG(("%s: crtc %d [pipe=%d], damage (%d, %d), (%d, %d) x %ld\n", __FUNCTION__, sna_crtc->id, sna_crtc->pipe, region->extents.x1, region->extents.y1, region->extents.x2, region->extents.y2, diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_dri.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_dri.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_dri.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_dri.c 2013-06-07 13:28:26.000000000 +0000 @@ -998,6 +998,7 @@ static inline int sna_wait_vblank(struct sna *sna, drmVBlank *vbl) { + DBG(("%s\n", __FUNCTION__)); return drmIoctl(sna->kgem.fd, DRM_IOCTL_WAIT_VBLANK, vbl); } @@ -1502,6 +1503,73 @@ sna_dri_frame_event_info_free(sna, draw, info); } +static bool +sna_dri_immediate_blit(struct sna *sna, + struct sna_dri_frame_event *info, + bool sync, bool event) +{ + DrawablePtr draw = info->draw; + bool ret = false; + + if (!can_blit(sna, draw, info->front, info->back)) + goto out; + + if (sna->flags & SNA_NO_WAIT) + sync = false; + + DBG(("%s: emitting immediate blit, throttling client, synced? %d, chained? %d, send-event? %d\n", + __FUNCTION__, sync, sna_dri_window_get_chain((WindowPtr)draw) == info, + event)); + + if (sync) { + info->type = DRI2_SWAP_THROTTLE; + if (sna_dri_window_get_chain((WindowPtr)draw) == info) { + drmVBlank vbl; + + DBG(("%s: no pending blit, starting chain\n", + __FUNCTION__)); + + info->bo = sna_dri_copy_to_front(sna, draw, NULL, + get_private(info->front)->bo, + get_private(info->back)->bo, + true); + if (event) { + DRI2SwapComplete(info->client, draw, 0, 0, 0, + DRI2_BLIT_COMPLETE, + info->event_complete, + info->event_data); + + VG_CLEAR(vbl); + vbl.request.type = + DRM_VBLANK_RELATIVE | + DRM_VBLANK_NEXTONMISS | + DRM_VBLANK_EVENT | + pipe_select(info->pipe); + vbl.request.sequence = 0; + vbl.request.signal = (unsigned long)info; + ret = !sna_wait_vblank(sna, &vbl); + } + } else + ret = true; + } else { + info->bo = sna_dri_copy_to_front(sna, draw, NULL, + get_private(info->front)->bo, + get_private(info->back)->bo, + false); +out: + if (event) { + DRI2SwapComplete(info->client, draw, 0, 0, 0, + DRI2_BLIT_COMPLETE, + info->event_complete, + info->event_data); + } + } + + DBG(("%s: continue? %d\n", __FUNCTION__, ret)); + return ret; +} + + static void sna_dri_flip_get_back(struct sna *sna, struct sna_dri_frame_event *info) { @@ -1704,22 +1772,8 @@ sna_dri_frame_event_info_free(sna, flip->draw, flip); } else if (!sna_dri_flip_continue(sna, flip)) { DBG(("%s: no longer able to flip\n", __FUNCTION__)); - - if (flip->draw) { - if (can_blit(sna, flip->draw, flip->front, flip->back)) { - flip->bo = sna_dri_copy_to_front(sna, flip->draw, NULL, - get_private(flip->front)->bo, - get_private(flip->back)->bo, - false); - } - DRI2SwapComplete(flip->client, flip->draw, - 0, 0, 0, - DRI2_BLIT_COMPLETE, - flip->client ? flip->event_complete : NULL, - flip->event_data); - } - - sna_dri_frame_event_info_free(sna, flip->draw, flip); + if (flip->draw || !sna_dri_immediate_blit(sna, flip, false, flip->mode == 1)) + sna_dri_frame_event_info_free(sna, flip->draw, flip); } break; @@ -1755,59 +1809,6 @@ sna_dri_flip_event(sna, info); } -static void -sna_dri_immediate_blit(struct sna *sna, - DrawablePtr draw, - struct sna_dri_frame_event *info, - bool sync) -{ - if (sna->flags & SNA_NO_WAIT) - sync = false; - - DBG(("%s: emitting immediate blit, throttling client, synced? %d, chained? %d\n", - __FUNCTION__, sync, sna_dri_window_get_chain((WindowPtr)draw) == info)); - - if (sync) { - info->type = DRI2_SWAP_THROTTLE; - if (sna_dri_window_get_chain((WindowPtr)draw) == info) { - drmVBlank vbl; - - DBG(("%s: no pending blit, starting chain\n", - __FUNCTION__)); - - info->bo = sna_dri_copy_to_front(sna, draw, NULL, - get_private(info->front)->bo, - get_private(info->back)->bo, - true); - DRI2SwapComplete(info->client, draw, 0, 0, 0, - DRI2_BLIT_COMPLETE, - info->event_complete, - info->event_data); - - VG_CLEAR(vbl); - vbl.request.type = - DRM_VBLANK_RELATIVE | - DRM_VBLANK_NEXTONMISS | - DRM_VBLANK_EVENT | - pipe_select(info->pipe); - vbl.request.sequence = 0; - vbl.request.signal = (unsigned long)info; - if (sna_wait_vblank(sna, &vbl)) - sna_dri_frame_event_info_free(sna, draw, info); - } - } else { - info->bo = sna_dri_copy_to_front(sna, draw, NULL, - get_private(info->front)->bo, - get_private(info->back)->bo, - false); - DRI2SwapComplete(info->client, draw, 0, 0, 0, - DRI2_BLIT_COMPLETE, - info->event_complete, - info->event_data); - sna_dri_frame_event_info_free(sna, draw, info); - } -} - static CARD64 get_current_msc_for_target(struct sna *sna, CARD64 target_msc, int pipe) { @@ -2105,13 +2106,8 @@ if (divisor == 0 && current_msc >= *target_msc - 1) { bool sync = current_msc < *target_msc; - if (can_blit(sna, draw, front, back)) { - sna_dri_immediate_blit(sna, draw, info, sync); - } else { - DRI2SwapComplete(client, draw, 0, 0, 0, - DRI2_BLIT_COMPLETE, func, data); + if (!sna_dri_immediate_blit(sna, info, sync, true)) sna_dri_frame_event_info_free(sna, draw, info); - } *target_msc = current_msc + sync; return TRUE; } diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_trapezoids.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_trapezoids.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_trapezoids.c 2013-05-29 15:53:40.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_trapezoids.c 2013-06-07 13:28:26.000000000 +0000 @@ -100,8 +100,11 @@ static void apply_damage(struct sna_composite_op *op, RegionPtr region) { - DBG(("%s: damage=%p, region=%d\n", - __FUNCTION__, op->damage, REGION_NUM_RECTS(region))); + DBG(("%s: damage=%p, region=%ldx[(%d, %d), (%d, %d)]\n", + __FUNCTION__, op->damage, + REGION_NUM_RECTS(region), + region->extents.x1, region->extents.y1, + region->extents.x2, region->extents.y2)); if (op->damage == NULL) return; diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video.c 2013-06-07 13:28:26.000000000 +0000 @@ -564,6 +564,35 @@ return Success; } +int +sna_xv_fixup_formats(ScreenPtr screen, XvFormatPtr formats, int num_formats) +{ + XvFormatPtr out = formats; + int count = 0; + + while (num_formats--) { + int num_visuals = screen->numVisuals; + VisualPtr v = screen->visuals; + + while (num_visuals--) { + if (v->class == TrueColor && + v->nplanes == formats->depth) { + int tmp = out[count].depth; + out[count].depth = formats->depth; + out[count].visual = v->vid; + formats->depth = tmp; + count++; + break; + } + v++; + } + + formats++; + } + + return count; +} + static int sna_xv_query_adaptors(ScreenPtr screen, XvAdaptorPtr *adaptors, diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video.h xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video.h --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video.h 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video.h 2013-06-07 13:28:26.000000000 +0000 @@ -109,6 +109,9 @@ void sna_video_destroy_window(WindowPtr win); XvAdaptorPtr sna_xv_adaptor_alloc(struct sna *sna); +int sna_xv_fixup_formats(ScreenPtr screen, + XvFormatPtr formats, + int num_formats); int sna_xv_alloc_port(unsigned long port, XvPortPtr in, XvPortPtr *out); int sna_xv_free_port(XvPortPtr port); diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video_overlay.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video_overlay.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video_overlay.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video_overlay.c 2013-06-07 13:28:26.000000000 +0000 @@ -57,9 +57,7 @@ #define IMAGE_MAX_WIDTH_LEGACY 1024 #define IMAGE_MAX_HEIGHT_LEGACY 1088 -static const XvFormatRec Formats[] = { - {15, TrueColor}, {16, TrueColor}, {24, TrueColor} -}; +static XvFormatRec Formats[] = { {15}, {16}, {24} }; static const XvAttributeRec Attributes[] = { {XvSettable | XvGettable, 0, (1 << 24) - 1, "XV_COLORKEY"}, @@ -495,7 +493,7 @@ drw_x, drw_y, drw_w, drw_h, format->id, width, height, sync)); - DBG(("%s: region %d:(%d, %d), (%d, %d)\n", __FUNCTION__, + DBG(("%s: region %ld:(%d, %d), (%d, %d)\n", __FUNCTION__, RegionNumRects(&clip), clip.extents.x1, clip.extents.y1, clip.extents.x2, clip.extents.y2)); @@ -715,8 +713,9 @@ adaptor->pEncodings[0].height = sna->kgem.gen < 021 ? IMAGE_MAX_HEIGHT_LEGACY : IMAGE_MAX_HEIGHT; adaptor->pEncodings[0].rate.numerator = 1; adaptor->pEncodings[0].rate.denominator = 1; - adaptor->nFormats = ARRAY_SIZE(Formats); adaptor->pFormats = Formats; + adaptor->nFormats = sna_xv_fixup_formats(screen, Formats, + ARRAY_SIZE(Formats)); adaptor->nAttributes = NUM_ATTRIBUTES; if (HAS_GAMMA(sna)) adaptor->nAttributes += GAMMA_ATTRIBUTES; @@ -775,7 +774,7 @@ video->gamma1 = 0x101010; video->gamma0 = 0x080808; video->rotation = RR_Rotate_0; - RegionNil(&video->clip); + RegionNull(&video->clip); xvColorKey = MAKE_ATOM("XV_COLORKEY"); xvBrightness = MAKE_ATOM("XV_BRIGHTNESS"); diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video_sprite.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video_sprite.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video_sprite.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video_sprite.c 2013-06-07 13:28:26.000000000 +0000 @@ -50,7 +50,7 @@ static Atom xvColorKey; -static const XvFormatRec formats[] = { {15, TrueColor}, {16, TrueColor}, {24, TrueColor} }; +static XvFormatRec formats[] = { {15}, {16}, {24} }; static const XvImageRec images[] = { XVIMAGE_YUY2, XVIMAGE_UYVY, XVMC_YUV }; static const XvAttributeRec attribs[] = { { XvSettable | XvGettable, 0, 0xffffff, "XV_COLORKEY" }, @@ -489,8 +489,9 @@ adaptor->pEncodings[0].height = IMAGE_MAX_HEIGHT; adaptor->pEncodings[0].rate.numerator = 1; adaptor->pEncodings[0].rate.denominator = 1; - adaptor->nFormats = ARRAY_SIZE(formats); adaptor->pFormats = formats; + adaptor->nFormats = sna_xv_fixup_formats(screen, formats, + ARRAY_SIZE(formats)); adaptor->nAttributes = ARRAY_SIZE(attribs); adaptor->pAttributes = attribs; adaptor->nImages = ARRAY_SIZE(images); diff -Nru xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video_textured.c xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video_textured.c --- xserver-xorg-video-intel-2.21.8+git20130603.6dacaddb/src/sna/sna_video_textured.c 2013-06-03 18:56:08.000000000 +0000 +++ xserver-xorg-video-intel-2.21.9+git20130607.e85271e5/src/sna/sna_video_textured.c 2013-06-07 13:28:26.000000000 +0000 @@ -38,8 +38,8 @@ static Atom xvBrightness, xvContrast, xvSyncToVblank; -static const XvFormatRec Formats[] = { - {15, TrueColor}, {16, TrueColor}, {24, TrueColor} +static XvFormatRec Formats[] = { + {15}, {16}, {24} }; static const XvAttributeRec Attributes[] = { @@ -192,7 +192,7 @@ drw_x, drw_y, drw_w, drw_h, format->id, width, height, sync)); - DBG(("%s: region %d:(%d, %d), (%d, %d)\n", __FUNCTION__, + DBG(("%s: region %ld:(%d, %d), (%d, %d)\n", __FUNCTION__, RegionNumRects(&clip), clip.extents.x1, clip.extents.y1, clip.extents.x2, clip.extents.y2)); @@ -367,8 +367,9 @@ adaptor->pEncodings[0].height = sna->render.max_3d_size; adaptor->pEncodings[0].rate.numerator = 1; adaptor->pEncodings[0].rate.denominator = 1; - adaptor->nFormats = ARRAY_SIZE(Formats); adaptor->pFormats = Formats; + adaptor->nFormats = sna_xv_fixup_formats(screen, Formats, + ARRAY_SIZE(Formats)); adaptor->nAttributes = ARRAY_SIZE(Attributes); adaptor->pAttributes = Attributes; adaptor->nImages = ARRAY_SIZE(Images); @@ -396,7 +397,7 @@ v->textured = true; v->alignment = 4; v->rotation = RR_Rotate_0; - v->SyncToVblank = 1; + v->SyncToVblank = (sna->flags & SNA_NO_WAIT) == 0; RegionNull(&v->clip);