From 049af7a95b01eba14d33586ad5852dddaf107e53 Mon Sep 17 00:00:00 2001 From: Parabola Date: Sun, 17 Apr 2011 19:27:42 +0000 Subject: Fixed --- testing/xf86-video-intel/PKGBUILD | 30 - testing/xf86-video-intel/git-fixes.patch | 1209 ------------------------------ 2 files changed, 1239 deletions(-) delete mode 100644 testing/xf86-video-intel/PKGBUILD delete mode 100644 testing/xf86-video-intel/git-fixes.patch (limited to 'testing/xf86-video-intel') diff --git a/testing/xf86-video-intel/PKGBUILD b/testing/xf86-video-intel/PKGBUILD deleted file mode 100644 index 8218208b1..000000000 --- a/testing/xf86-video-intel/PKGBUILD +++ /dev/null @@ -1,30 +0,0 @@ -# $Id: PKGBUILD 117291 2011-03-30 17:29:24Z andyrtr $ -# Maintainer: Jan de Groot - -pkgname=xf86-video-intel -pkgver=2.14.902 -pkgrel=1 -pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers" -arch=(i686 x86_64) -url="http://xorg.freedesktop.org/" -license=('custom') -depends=(intel-dri libxvmc libpciaccess libdrm xcb-util libxfixes udev) -makedepends=('xorg-server-devel' 'libx11' 'libdrm' 'xf86driproto' 'glproto' 'mesa' 'libxvmc' 'xcb-util') -conflicts=('xorg-server<1.10.0' 'xf86-video-i810' 'xf86-video-intel-legacy') -options=('!libtool') -groups=('xorg-drivers' 'xorg') -source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2) -sha1sums=('552d6d1be754c974d140763232a2c17361d9a625') - -build() { - cd "${srcdir}/${pkgname}-${pkgver}" - ./configure --prefix=/usr --enable-dri - make -} - -package() { - cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="${pkgdir}" install - install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" - install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" -} diff --git a/testing/xf86-video-intel/git-fixes.patch b/testing/xf86-video-intel/git-fixes.patch deleted file mode 100644 index cbdbf27b5..000000000 --- a/testing/xf86-video-intel/git-fixes.patch +++ /dev/null @@ -1,1209 +0,0 @@ -diff --git a/Makefile.am b/Makefile.am -index f4239de..83948ab 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -18,6 +18,7 @@ - # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -+ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} - - SUBDIRS = uxa src man - MAINTAINERCLEANFILES = ChangeLog INSTALL -diff --git a/configure.ac b/configure.ac -index 529a294..5a1baac 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -21,18 +21,24 @@ - # Process this file with autoconf to produce a configure script - - # Initialize Autoconf --AC_PREREQ([2.60]) -+AC_PREREQ([2.63]) - AC_INIT([xf86-video-intel], - [2.14.0], - [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], - [xf86-video-intel]) - AC_CONFIG_SRCDIR([Makefile.am]) - AC_CONFIG_HEADERS([config.h]) --AC_CONFIG_AUX_DIR(.) -+AC_CONFIG_AUX_DIR([build-aux]) -+AC_CONFIG_MACRO_DIR([m4]) - - # Initialize Automake --AM_INIT_AUTOMAKE([foreign dist-bzip2]) --AM_MAINTAINER_MODE -+AM_INIT_AUTOMAKE([1.10 foreign dist-bzip2]) -+AM_MAINTAINER_MODE([enable]) -+ -+# Support silent build rules, requires at least automake-1.11. Disable -+# by either passing --disable-silent-rules to configure or passing V=1 -+# to make -+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - - # Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS - m4_ifndef([XORG_MACROS_VERSION], -@@ -50,8 +56,8 @@ m4_ifndef([XORG_DRIVER_CHECK_EXT], - depending on your distribution, try package 'xserver-xorg-dev' or 'xorg-x11-server-devel'])]) - - # Initialize libtool --AC_DISABLE_STATIC --AC_PROG_LIBTOOL -+LT_PREREQ([2.2]) -+LT_INIT([disable-static]) - - PKG_CHECK_MODULES(GEN4ASM, [intel-gen4asm >= 1.1], [gen4asm=yes], [gen4asm=no]) - AM_CONDITIONAL(HAVE_GEN4ASM, test x$gen4asm = xyes) -@@ -85,6 +91,12 @@ AC_ARG_ENABLE(kms-only, AS_HELP_STRING([--enable-kms-only], - [KMS_ONLY="$enableval"], - [KMS_ONLY=no]) - -+AC_ARG_ENABLE(debug, -+ AS_HELP_STRING([--enable-debug], -+ [Enables internal debugging [[default=yes]]]), -+ [DEBUG="$enableval"], -+ [DEBUG=yes]) -+ - # Store the list of server defined optional extensions in REQUIRED_MODULES - XORG_DRIVER_CHECK_EXT(RANDR, randrproto) - XORG_DRIVER_CHECK_EXT(RENDER, renderproto) -@@ -138,15 +150,19 @@ fi - AC_MSG_CHECKING([whether to include XvMC support]) - AC_MSG_RESULT([$XVMC]) - AM_CONDITIONAL(XVMC, test x$XVMC = xyes) --if test "$XVMC" = yes; then -+if test "x$XVMC" = xyes; then - AC_DEFINE(ENABLE_XVMC,1,[Enable XvMC support]) - fi - - AM_CONDITIONAL(KMS_ONLY, test x$KMS_ONLY = xyes) --if test "$KMS_ONLY" = yes; then -+if test "x$KMS_ONLY" = xyes; then - AC_DEFINE(KMS_ONLY,1,[Assume KMS support]) - fi - -+if test "x$DEBUG" = xno; then -+ AC_DEFINE(NDEBUG,1,[Disable internal debugging]) -+fi -+ - DRIVER_NAME=intel - AC_SUBST([DRIVER_NAME]) - AC_SUBST([moduledir]) -diff --git a/src/i915_render.c b/src/i915_render.c -index 6d844e5..d04e8e1 100644 ---- a/src/i915_render.c -+++ b/src/i915_render.c -@@ -302,12 +302,10 @@ static Bool i915_texture_setup(PicturePtr picture, PixmapPtr pixmap, int unit) - ScrnInfoPtr scrn = xf86Screens[picture->pDrawable->pScreen->myNum]; - intel_screen_private *intel = intel_get_screen_private(scrn); - uint32_t format, pitch, filter; -- int w, h, i; - uint32_t wrap_mode, tiling_bits; -+ int i; - - pitch = intel_pixmap_pitch(pixmap); -- w = picture->pDrawable->width; -- h = picture->pDrawable->height; - intel->scale_units[unit][0] = 1. / pixmap->drawable.width; - intel->scale_units[unit][1] = 1. / pixmap->drawable.height; - -@@ -546,8 +544,8 @@ i915_emit_composite_primitive(PixmapPtr dest, - { - ScrnInfoPtr scrn = xf86Screens[dest->drawable.pScreen->myNum]; - intel_screen_private *intel = intel_get_screen_private(scrn); -- Bool is_affine_src, is_affine_mask = TRUE; -- int per_vertex, num_floats; -+ Bool is_affine_src = TRUE, is_affine_mask = TRUE; -+ int per_vertex; - int tex_unit = 0; - int src_unit = -1, mask_unit = -1; - float src_x[3], src_y[3], src_w[3], mask_x[3], mask_y[3], mask_w[3]; -@@ -666,8 +664,6 @@ i915_emit_composite_primitive(PixmapPtr dest, - } - } - -- num_floats = 3 * per_vertex; -- - OUT_VERTEX(dstX + w); - OUT_VERTEX(dstY + h); - if (! intel->render_source_is_solid) { -diff --git a/src/i965_video.c b/src/i965_video.c -index 235dfb9..e16a575 100644 ---- a/src/i965_video.c -+++ b/src/i965_video.c -@@ -414,8 +414,8 @@ static void i965_create_dst_surface_state(ScrnInfoPtr scrn, - intel_emit_reloc(surf_bo, offset + offsetof(struct brw_surface_state, ss1), - pixmap_bo, 0, I915_GEM_DOMAIN_SAMPLER, 0); - -- dest_surf_state->ss2.height = scrn->virtualY - 1; -- dest_surf_state->ss2.width = scrn->virtualX - 1; -+ dest_surf_state->ss2.height = pixmap->drawable.height - 1; -+ dest_surf_state->ss2.width = pixmap->drawable.width - 1; - dest_surf_state->ss2.mip_count = 0; - dest_surf_state->ss2.render_target_rotation = 0; - dest_surf_state->ss3.pitch = intel_pixmap_pitch(pixmap) - 1; -@@ -770,7 +770,7 @@ static drm_intel_bo *i965_create_cc_state(ScrnInfoPtr scrn) - } - - static void --i965_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo * surface_state_binding_table_bo, int n_src_surf) -+i965_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo * surface_state_binding_table_bo, int n_src_surf, PixmapPtr pixmap) - { - intel_screen_private *intel = intel_get_screen_private(scrn); - int urb_vs_start, urb_vs_size; -@@ -821,20 +821,20 @@ i965_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo * surface_state_binding_tab - OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* media base addr, don't care */ - OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* Instruction base address */ - /* general state max addr, disabled */ -- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY); -+ OUT_BATCH(0 | BASE_ADDRESS_MODIFY); - /* media object state max addr, disabled */ -- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY); -+ OUT_BATCH(0 | BASE_ADDRESS_MODIFY); - /* Instruction max addr, disabled */ -- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY); -+ OUT_BATCH(0 | BASE_ADDRESS_MODIFY); - } else { - OUT_BATCH(BRW_STATE_BASE_ADDRESS | 4); - OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* Generate state base address */ - OUT_RELOC(surface_state_binding_table_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, BASE_ADDRESS_MODIFY); /* Surface state base address */ - OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* media base addr, don't care */ - /* general state max addr, disabled */ -- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY); -+ OUT_BATCH(0 | BASE_ADDRESS_MODIFY); - /* media object state max addr, disabled */ -- OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY); -+ OUT_BATCH(0 | BASE_ADDRESS_MODIFY); - } - - /* Set system instruction pointer */ -@@ -877,7 +877,7 @@ i965_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo * surface_state_binding_tab - */ - OUT_BATCH(BRW_3DSTATE_DRAWING_RECTANGLE | 2); /* XXX 3 for BLC or CTG */ - OUT_BATCH(0x00000000); /* ymin, xmin */ -- OUT_BATCH((scrn->virtualX - 1) | (scrn->virtualY - 1) << 16); /* ymax, xmax */ -+ OUT_BATCH((pixmap->drawable.width - 1) | (pixmap->drawable.height - 1) << 16); /* ymax, xmax */ - OUT_BATCH(0x00000000); /* yorigin, xorigin */ - - /* skip the depth buffer */ -@@ -1212,7 +1212,7 @@ I965DisplayVideoTextured(ScrnInfoPtr scrn, - - intel_batch_start_atomic(scrn, 100); - -- i965_emit_video_setup(scrn, surface_state_binding_table_bo, n_src_surf); -+ i965_emit_video_setup(scrn, surface_state_binding_table_bo, n_src_surf, pixmap); - - /* Set up the pointer to our vertex buffer */ - OUT_BATCH(BRW_3DSTATE_VERTEX_BUFFERS | 3); -@@ -1517,13 +1517,13 @@ gen6_upload_depth_buffer_state(ScrnInfoPtr scrn) - } - - static void --gen6_upload_drawing_rectangle(ScrnInfoPtr scrn) -+gen6_upload_drawing_rectangle(ScrnInfoPtr scrn, PixmapPtr pixmap) - { - intel_screen_private *intel = intel_get_screen_private(scrn); - - OUT_BATCH(BRW_3DSTATE_DRAWING_RECTANGLE | 2); - OUT_BATCH(0x00000000); /* ymin, xmin */ -- OUT_BATCH((scrn->virtualX - 1) | (scrn->virtualY - 1) << 16); /* ymax, xmax */ -+ OUT_BATCH((pixmap->drawable.width - 1) | (pixmap->drawable.height - 1) << 16); /* ymax, xmax */ - OUT_BATCH(0x00000000); /* yorigin, xorigin */ - } - -@@ -1673,7 +1673,7 @@ gen6_upload_vertex_element_state(ScrnInfoPtr scrn) - } - - static void --gen6_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo *surface_state_binding_table_bo, int n_src_surf) -+gen6_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo *surface_state_binding_table_bo, int n_src_surf, PixmapPtr pixmap) - { - intel_screen_private *intel = intel_get_screen_private(scrn); - -@@ -1694,7 +1694,7 @@ gen6_emit_video_setup(ScrnInfoPtr scrn, drm_intel_bo *surface_state_binding_tabl - gen6_upload_wm_state(scrn, n_src_surf == 1 ? TRUE : FALSE); - gen6_upload_binding_table(scrn, (n_src_surf + 1) * ALIGN(sizeof(struct brw_surface_state), 32));; - gen6_upload_depth_buffer_state(scrn); -- gen6_upload_drawing_rectangle(scrn); -+ gen6_upload_drawing_rectangle(scrn, pixmap); - gen6_upload_vertex_element_state(scrn); - } - -@@ -1853,7 +1853,7 @@ void Gen6DisplayVideoTextured(ScrnInfoPtr scrn, - intel_batch_submit(scrn, FALSE); - - intel_batch_start_atomic(scrn, 200); -- gen6_emit_video_setup(scrn, surface_state_binding_table_bo, n_src_surf); -+ gen6_emit_video_setup(scrn, surface_state_binding_table_bo, n_src_surf, pixmap); - - /* Set up the pointer to our vertex buffer */ - OUT_BATCH(BRW_3DSTATE_VERTEX_BUFFERS | (5 - 2)); -diff --git a/src/intel.h b/src/intel.h -index 9063328..4c755fc 100644 ---- a/src/intel.h -+++ b/src/intel.h -@@ -227,8 +227,6 @@ static inline Bool intel_pixmap_tiled(PixmapPtr pixmap) - dri_bo *intel_get_pixmap_bo(PixmapPtr pixmap); - void intel_set_pixmap_bo(PixmapPtr pixmap, dri_bo * bo); - --typedef struct _I830OutputRec I830OutputRec, *I830OutputPtr; -- - #include "common.h" - - #ifdef XvMCExtension -@@ -239,39 +237,6 @@ typedef struct _I830OutputRec I830OutputRec, *I830OutputPtr; - - #define PITCH_NONE 0 - --/** Record of a linear allocation in the aperture. */ --typedef struct _intel_memory intel_memory; --struct _intel_memory { -- /** Description of the allocation, for logging */ -- char *name; -- -- /** @{ -- * Memory allocator linked list pointers -- */ -- intel_memory *next; -- intel_memory *prev; -- /** @} */ -- -- drm_intel_bo *bo; -- uint32_t gem_name; --}; -- --typedef struct _I830CrtcPrivateRec { -- int pipe; -- int plane; -- -- Bool enabled; -- -- int dpms_mode; -- -- int x, y; -- -- /* Lookup table values to be set when the CRTC is enabled */ -- uint8_t lut_r[256], lut_g[256], lut_b[256]; --} I830CrtcPrivateRec, *I830CrtcPrivatePtr; -- --#define I830CrtcPrivate(c) ((I830CrtcPrivatePtr) (c)->driver_private) -- - /** enumeration of 3d consumers so some can maintain invariant state. */ - enum last_3d { - LAST_3D_OTHER, -@@ -288,19 +253,12 @@ enum dri_type { - - typedef struct intel_screen_private { - ScrnInfoPtr scrn; -- unsigned char *MMIOBase; - int cpp; - - #define RENDER_BATCH I915_EXEC_RENDER - #define BLT_BATCH I915_EXEC_BLT - unsigned int current_batch; - -- unsigned int bufferOffset; /* for I830SelectBuffer */ -- -- /* These are set in PreInit and never changed. */ -- long FbMapSize; -- long GTTMapSize; -- - void *modes; - drm_intel_bo *front_buffer; - long front_pitch, front_tiling; -@@ -344,7 +302,6 @@ typedef struct intel_screen_private { - Bool has_relaxed_fencing; - - int Chipset; -- unsigned long LinearAddr; - EntityInfoPtr pEnt; - struct pci_device *PciInfo; - struct intel_chipset chipset; -@@ -535,8 +492,6 @@ extern void I830InitVideo(ScreenPtr pScreen); - extern xf86CrtcPtr intel_covering_crtc(ScrnInfoPtr scrn, BoxPtr box, - xf86CrtcPtr desired, BoxPtr crtc_box_ret); - --extern xf86CrtcPtr intel_pipe_to_crtc(ScrnInfoPtr scrn, int pipe); -- - Bool I830DRI2ScreenInit(ScreenPtr pScreen); - void I830DRI2CloseScreen(ScreenPtr pScreen); - void I830DRI2FrameEventHandler(unsigned int frame, unsigned int tv_sec, -@@ -545,11 +500,7 @@ void I830DRI2FlipEventHandler(unsigned int frame, unsigned int tv_sec, - unsigned int tv_usec, void *user_data); - - extern Bool intel_crtc_on(xf86CrtcPtr crtc); --static inline int intel_crtc_to_pipe(xf86CrtcPtr crtc) --{ -- intel_screen_private *intel = intel_get_screen_private(crtc->scrn); -- return intel_get_pipe_from_crtc_id(intel->bufmgr, crtc); --} -+int intel_crtc_to_pipe(xf86CrtcPtr crtc); - - /* intel_memory.c */ - unsigned long intel_get_fence_size(intel_screen_private *intel, unsigned long size); -@@ -688,11 +639,6 @@ static inline drm_intel_bo *intel_bo_alloc_for_data(ScrnInfoPtr scrn, - return bo; - } - --/* Flags for memory allocation function */ --#define NEED_PHYSICAL_ADDR 0x00000001 --#define ALLOW_SHARING 0x00000010 --#define DISABLE_REUSE 0x00000020 -- - void intel_debug_flush(ScrnInfoPtr scrn); - - static inline PixmapPtr get_drawable_pixmap(DrawablePtr drawable) -@@ -715,7 +661,7 @@ static inline Bool pixmap_is_scanout(PixmapPtr pixmap) - const OptionInfoRec *intel_uxa_available_options(int chipid, int busid); - - Bool intel_uxa_init(ScreenPtr pScreen); --void intel_uxa_create_screen_resources(ScreenPtr pScreen); -+Bool intel_uxa_create_screen_resources(ScreenPtr pScreen); - void intel_uxa_block_handler(intel_screen_private *intel); - Bool intel_get_aperture_space(ScrnInfoPtr scrn, drm_intel_bo ** bo_table, - int num_bos); -diff --git a/src/intel_display.c b/src/intel_display.c -index 1198013..f487a6e 100644 ---- a/src/intel_display.c -+++ b/src/intel_display.c -@@ -70,6 +70,7 @@ struct intel_crtc { - struct intel_mode *mode; - drmModeModeInfo kmode; - drmModeCrtcPtr mode_crtc; -+ int pipe; - dri_bo *cursor; - dri_bo *rotate_bo; - uint32_t rotate_pitch; -@@ -118,7 +119,6 @@ intel_output_dpms_backlight(xf86OutputPtr output, int oldmode, int mode); - * List of available kernel interfaces in priority order - */ - static const char *backlight_interfaces[] = { -- "intel", /* prefer our own native backlight driver */ - "asus-laptop", - "eeepc", - "thinkpad_screen", -@@ -128,6 +128,7 @@ static const char *backlight_interfaces[] = { - "samsung", - "acpi_video1", /* finally fallback to the generic acpi drivers */ - "acpi_video0", -+ "intel_backlight", - NULL, - }; - /* -@@ -678,6 +679,9 @@ intel_crtc_init(ScrnInfoPtr scrn, struct intel_mode *mode, int num) - intel_crtc->mode = mode; - crtc->driver_private = intel_crtc; - -+ intel_crtc->pipe = drm_intel_get_pipe_from_crtc_id(intel->bufmgr, -+ crtc_id(intel_crtc)); -+ - intel_crtc->cursor = drm_intel_bo_alloc(intel->bufmgr, "ARGB cursor", - HWCURSOR_SIZE_ARGB, - GTT_PAGE_SIZE); -@@ -1671,16 +1675,15 @@ intel_mode_fini(intel_screen_private *intel) - intel->modes = NULL; - } - --int --intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, xf86CrtcPtr crtc) --{ -- return drm_intel_get_pipe_from_crtc_id(bufmgr, -- crtc_id(crtc->driver_private)); --} -- - /* for the mode overlay */ - int - intel_crtc_id(xf86CrtcPtr crtc) - { - return crtc_id(crtc->driver_private); - } -+ -+int intel_crtc_to_pipe(xf86CrtcPtr crtc) -+{ -+ struct intel_crtc *intel_crtc = crtc->driver_private; -+ return intel_crtc->pipe; -+} -diff --git a/src/intel_driver.c b/src/intel_driver.c -index 1275e4b..ebed258 100644 ---- a/src/intel_driver.c -+++ b/src/intel_driver.c -@@ -37,10 +37,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. - #include "config.h" - #endif - --#ifndef PRINT_MODE_INFO --#define PRINT_MODE_INFO 0 --#endif -- - #include - #include - #include -@@ -80,10 +76,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. - #include "i915_drm.h" - #include - --#define BIT(x) (1 << (x)) --#define MAX(a,b) ((a) > (b) ? (a) : (b)) --#define NB_OF(x) (sizeof (x) / sizeof (*x)) -- - /* *INDENT-OFF* */ - /* - * Note: "ColorKey" is provided for compatibility with the i810 driver. -@@ -174,14 +166,6 @@ I830LoadPalette(ScrnInfoPtr scrn, int numColors, int *indices, - - for (p = 0; p < xf86_config->num_crtc; p++) { - xf86CrtcPtr crtc = xf86_config->crtc[p]; -- I830CrtcPrivatePtr intel_crtc = crtc->driver_private; -- -- /* Initialize to the old lookup table values. */ -- for (i = 0; i < 256; i++) { -- lut_r[i] = intel_crtc->lut_r[i] << 8; -- lut_g[i] = intel_crtc->lut_g[i] << 8; -- lut_b[i] = intel_crtc->lut_b[i] << 8; -- } - - switch (scrn->depth) { - case 15: -@@ -250,9 +234,7 @@ static Bool i830CreateScreenResources(ScreenPtr screen) - if (!(*screen->CreateScreenResources) (screen)) - return FALSE; - -- intel_uxa_create_screen_resources(screen); -- -- return TRUE; -+ return intel_uxa_create_screen_resources(screen); - } - - static void PreInitCleanup(ScrnInfoPtr scrn) -@@ -607,12 +589,9 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags) - intel->tiling = TRUE; - - /* Allow user override if they set a value */ -- if (!ALWAYS_TILING(intel) && xf86IsOptionSet(intel->Options, OPTION_TILING)) { -- if (xf86ReturnOptValBool(intel->Options, OPTION_TILING, FALSE)) -- intel->tiling = TRUE; -- else -- intel->tiling = FALSE; -- } -+ if (!ALWAYS_TILING(intel)) -+ intel->tiling = xf86ReturnOptValBool(intel->Options, -+ OPTION_TILING, TRUE); - - intel->can_blt = can_accelerate_blt(intel); - intel->use_shadow = !intel->can_blt; -@@ -631,19 +610,11 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags) - } - - /* SwapBuffers delays to avoid tearing */ -- intel->swapbuffers_wait = TRUE; -- -- /* Allow user override if they set a value */ -- if (xf86IsOptionSet(intel->Options, OPTION_SWAPBUFFERS_WAIT)) { -- if (xf86ReturnOptValBool -- (intel->Options, OPTION_SWAPBUFFERS_WAIT, FALSE)) -- intel->swapbuffers_wait = TRUE; -- else -- intel->swapbuffers_wait = FALSE; -- } -- -+ intel->swapbuffers_wait = xf86ReturnOptValBool(intel->Options, -+ OPTION_SWAPBUFFERS_WAIT, -+ TRUE); - if (IS_GEN6(intel)) -- intel->swapbuffers_wait = FALSE; -+ intel->swapbuffers_wait = FALSE; - - xf86DrvMsg(scrn->scrnIndex, X_CONFIG, "Tiling %sabled\n", - intel->tiling ? "en" : "dis"); -@@ -679,19 +650,12 @@ static Bool I830PreInit(ScrnInfoPtr scrn, int flags) - } - - /* Load the dri2 module if requested. */ -- if (xf86ReturnOptValBool(intel->Options, OPTION_DRI, FALSE) && -- intel->directRenderingType != DRI_DISABLED) { -+ if (intel->directRenderingType != DRI_DISABLED) - xf86LoadSubModule(scrn, "dri2"); -- } - - return TRUE; - } - --enum pipe { -- PIPE_A = 0, -- PIPE_B, --}; -- - /** - * Intialiazes the hardware for the 3D pipeline use in the 2D driver. - * -@@ -733,50 +697,6 @@ I830BlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask) - intel_video_block_handler(intel); - } - --static void intel_fixup_mtrrs(ScrnInfoPtr scrn) --{ --#ifdef HAS_MTRR_SUPPORT -- intel_screen_private *intel = intel_get_screen_private(scrn); -- int fd; -- struct mtrr_gentry gentry; -- struct mtrr_sentry sentry; -- -- if ((fd = open("/proc/mtrr", O_RDONLY, 0)) != -1) { -- for (gentry.regnum = 0; -- ioctl(fd, MTRRIOC_GET_ENTRY, &gentry) == 0; -- ++gentry.regnum) { -- -- if (gentry.size < 1) { -- /* DISABLED */ -- continue; -- } -- -- /* Check the MTRR range is one we like and if not - remove it. -- * The Xserver common layer will then setup the right range -- * for us. -- */ -- if (gentry.base == intel->LinearAddr && -- gentry.size < intel->FbMapSize) { -- -- xf86DrvMsg(scrn->scrnIndex, X_INFO, -- "Removing bad MTRR range (base 0x%lx, size 0x%x)\n", -- gentry.base, gentry.size); -- -- sentry.base = gentry.base; -- sentry.size = gentry.size; -- sentry.type = gentry.type; -- -- if (ioctl(fd, MTRRIOC_DEL_ENTRY, &sentry) == -1) { -- xf86DrvMsg(scrn->scrnIndex, X_ERROR, -- "Failed to remove bad MTRR range\n"); -- } -- } -- } -- close(fd); -- } --#endif --} -- - static Bool - intel_init_initial_framebuffer(ScrnInfoPtr scrn) - { -@@ -809,7 +729,7 @@ Bool intel_crtc_on(xf86CrtcPtr crtc) - { - ScrnInfoPtr scrn = crtc->scrn; - xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); -- int i, active_outputs = 0; -+ int i; - - if (!crtc->enabled) - return FALSE; -@@ -819,11 +739,9 @@ Bool intel_crtc_on(xf86CrtcPtr crtc) - xf86OutputPtr output = xf86_config->output[i]; - if (output->crtc == crtc && - intel_output_dpms_status(output) == DPMSModeOn) -- active_outputs++; -+ return TRUE; - } - -- if (active_outputs) -- return TRUE; - return FALSE; - } - -@@ -849,103 +767,102 @@ intel_flush_callback(CallbackListPtr *list, - static void - I830HandleUEvents(int fd, void *closure) - { -- ScrnInfoPtr scrn = closure; -+ ScrnInfoPtr scrn = closure; - intel_screen_private *intel = intel_get_screen_private(scrn); -- struct udev_device *dev; -- const char *hotplug; -- struct stat s; -- dev_t udev_devnum; -- -- dev = udev_monitor_receive_device(intel->uevent_monitor); -- if (!dev) -- return; -- -- udev_devnum = udev_device_get_devnum(dev); -- fstat(intel->drmSubFD, &s); -- /* -- * Check to make sure this event is directed at our -- * device (by comparing dev_t values), then make -- * sure it's a hotplug event (HOTPLUG=1) -- */ -- -- hotplug = udev_device_get_property_value(dev, "HOTPLUG"); -- -- if (memcmp(&s.st_rdev, &udev_devnum, sizeof (dev_t)) == 0 && -- hotplug && atoi(hotplug) == 1) -- RRGetInfo(screenInfo.screens[scrn->scrnIndex], TRUE); -- -- udev_device_unref(dev); -+ struct udev_device *dev; -+ const char *hotplug; -+ struct stat s; -+ dev_t udev_devnum; -+ -+ dev = udev_monitor_receive_device(intel->uevent_monitor); -+ if (!dev) -+ return; -+ -+ udev_devnum = udev_device_get_devnum(dev); -+ fstat(intel->drmSubFD, &s); -+ /* -+ * Check to make sure this event is directed at our -+ * device (by comparing dev_t values), then make -+ * sure it's a hotplug event (HOTPLUG=1) -+ */ -+ -+ hotplug = udev_device_get_property_value(dev, "HOTPLUG"); -+ -+ if (memcmp(&s.st_rdev, &udev_devnum, sizeof (dev_t)) == 0 && -+ hotplug && atoi(hotplug) == 1) -+ RRGetInfo(screenInfo.screens[scrn->scrnIndex], TRUE); -+ -+ udev_device_unref(dev); - } - - static void - I830UeventInit(ScrnInfoPtr scrn) - { -- intel_screen_private *intel = intel_get_screen_private(scrn); -- struct udev *u; -- struct udev_monitor *mon; -- Bool hotplug; -- MessageType from = X_CONFIG; -- -- if (!xf86GetOptValBool(intel->Options, OPTION_HOTPLUG, &hotplug)) { -- from = X_DEFAULT; -- hotplug = TRUE; -- } -- -- xf86DrvMsg(scrn->scrnIndex, from, "hotplug detection: \"%s\"\n", -- hotplug ? "enabled" : "disabled"); -- if (!hotplug) -- return; -- -- u = udev_new(); -- if (!u) -- return; -- -- mon = udev_monitor_new_from_netlink(u, "udev"); -- -- if (!mon) { -- udev_unref(u); -- return; -- } -- -- if (udev_monitor_filter_add_match_subsystem_devtype(mon, -- "drm", -- "drm_minor") < 0 || -- udev_monitor_enable_receiving(mon) < 0) -- { -- udev_monitor_unref(mon); -- udev_unref(u); -- return; -- } -- -- intel->uevent_handler = -- xf86AddGeneralHandler(udev_monitor_get_fd(mon), -- I830HandleUEvents, -- scrn); -- if (!intel->uevent_handler) { -- udev_monitor_unref(mon); -- udev_unref(u); -- return; -- } -- -- intel->uevent_monitor = mon; -+ intel_screen_private *intel = intel_get_screen_private(scrn); -+ struct udev *u; -+ struct udev_monitor *mon; -+ Bool hotplug; -+ MessageType from = X_CONFIG; -+ -+ if (!xf86GetOptValBool(intel->Options, OPTION_HOTPLUG, &hotplug)) { -+ from = X_DEFAULT; -+ hotplug = TRUE; -+ } -+ -+ xf86DrvMsg(scrn->scrnIndex, from, "hotplug detection: \"%s\"\n", -+ hotplug ? "enabled" : "disabled"); -+ if (!hotplug) -+ return; -+ -+ u = udev_new(); -+ if (!u) -+ return; -+ -+ mon = udev_monitor_new_from_netlink(u, "udev"); -+ -+ if (!mon) { -+ udev_unref(u); -+ return; -+ } -+ -+ if (udev_monitor_filter_add_match_subsystem_devtype(mon, -+ "drm", -+ "drm_minor") < 0 || -+ udev_monitor_enable_receiving(mon) < 0) -+ { -+ udev_monitor_unref(mon); -+ udev_unref(u); -+ return; -+ } -+ -+ intel->uevent_handler = -+ xf86AddGeneralHandler(udev_monitor_get_fd(mon), -+ I830HandleUEvents, -+ scrn); -+ if (!intel->uevent_handler) { -+ udev_monitor_unref(mon); -+ udev_unref(u); -+ return; -+ } -+ -+ intel->uevent_monitor = mon; - } - - static void - I830UeventFini(ScrnInfoPtr scrn) - { -- intel_screen_private *intel = intel_get_screen_private(scrn); -+ intel_screen_private *intel = intel_get_screen_private(scrn); - -- if (intel->uevent_handler) -- { -- struct udev *u = udev_monitor_get_udev(intel->uevent_monitor); -+ if (intel->uevent_handler) { -+ struct udev *u = udev_monitor_get_udev(intel->uevent_monitor); - -- xf86RemoveGeneralHandler(intel->uevent_handler); -+ xf86RemoveGeneralHandler(intel->uevent_handler); - -- udev_monitor_unref(intel->uevent_monitor); -- udev_unref(u); -- intel->uevent_handler = NULL; -- intel->uevent_monitor = NULL; -- } -+ udev_monitor_unref(intel->uevent_monitor); -+ udev_unref(u); -+ intel->uevent_handler = NULL; -+ intel->uevent_monitor = NULL; -+ } - } - #endif /* HAVE_UDEV */ - -@@ -961,32 +878,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) - struct pci_device *const device = intel->PciInfo; - int fb_bar = IS_GEN2(intel) ? 0 : 2; - -- /* -- * The "VideoRam" config file parameter specifies the maximum amount of -- * memory that will be used/allocated. When not present, we allow the -- * driver to allocate as much memory as it wishes to satisfy its -- * allocations, but if agpgart support isn't available, it gets limited -- * to the amount of pre-allocated ("stolen") memory. -- * -- * Note that in using this value for allocator initialization, we're -- * limiting aperture allocation to the VideoRam option, rather than limiting -- * actual memory allocation, so alignment and things will cause less than -- * VideoRam to be actually used. -- */ -- scrn->videoRam = intel->FbMapSize / KB(1); -- if (intel->pEnt->device->videoRam != 0) { -- if (scrn->videoRam != intel->pEnt->device->videoRam) { -- xf86DrvMsg(scrn->scrnIndex, X_WARNING, -- "VideoRam configuration found, which is no " -- "longer used.\n"); -- xf86DrvMsg(scrn->scrnIndex, X_INFO, -- "Continuing with (ignored) %dkB VideoRam " -- "instead of %d kB.\n", -- scrn->videoRam, -- intel->pEnt->device->videoRam); -- } -- } -- - scrn->videoRam = device->regions[fb_bar].size / 1024; - - intel->last_3d = LAST_3D_OTHER; -@@ -998,10 +889,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) - */ - intel->XvEnabled = TRUE; - -- xf86DrvMsg(scrn->scrnIndex, -- intel->pEnt->device->videoRam ? X_CONFIG : X_DEFAULT, -- "VideoRam: %d KB\n", scrn->videoRam); -- - #ifdef DRI2 - if (intel->directRenderingType == DRI_NONE - && I830DRI2ScreenInit(screen)) -@@ -1011,8 +898,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) - if (!intel_init_initial_framebuffer(scrn)) - return FALSE; - -- intel_fixup_mtrrs(scrn); -- - intel_batch_init(scrn); - - if (INTEL_INFO(intel)->gen >= 40) -@@ -1159,7 +1044,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) - I830UeventInit(scrn); - #endif - -- return uxa_resources_init(screen); -+ return TRUE; - } - - static void i830AdjustFrame(int scrnIndex, int x, int y, int flags) -@@ -1382,22 +1267,6 @@ static Bool I830PMEvent(int scrnIndex, pmEvent event, Bool undo) - return TRUE; - } - --xf86CrtcPtr intel_pipe_to_crtc(ScrnInfoPtr scrn, int pipe) --{ -- xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn); -- int c; -- -- for (c = 0; c < config->num_crtc; c++) { -- xf86CrtcPtr crtc = config->crtc[c]; -- I830CrtcPrivatePtr intel_crtc = crtc->driver_private; -- -- if (intel_crtc->pipe == pipe) -- return crtc; -- } -- -- return NULL; --} -- - void intel_init_scrn(ScrnInfoPtr scrn) - { - scrn->PreInit = I830PreInit; -diff --git a/src/intel_uxa.c b/src/intel_uxa.c -index 1a591f1..9341b91 100644 ---- a/src/intel_uxa.c -+++ b/src/intel_uxa.c -@@ -1089,12 +1089,15 @@ static Bool intel_uxa_destroy_pixmap(PixmapPtr pixmap) - return TRUE; - } - --void intel_uxa_create_screen_resources(ScreenPtr screen) -+Bool intel_uxa_create_screen_resources(ScreenPtr screen) - { - ScrnInfoPtr scrn = xf86Screens[screen->myNum]; - intel_screen_private *intel = intel_get_screen_private(scrn); - dri_bo *bo = intel->front_buffer; - -+ if (!uxa_resources_init(screen)) -+ return FALSE; -+ - drm_intel_gem_bo_map_gtt(bo); - - if (intel->use_shadow) { -@@ -1111,6 +1114,8 @@ void intel_uxa_create_screen_resources(ScreenPtr screen) - NULL); - scrn->displayWidth = intel->front_pitch / intel->cpp; - } -+ -+ return TRUE; - } - - static void -@@ -1185,7 +1190,6 @@ Bool intel_uxa_init(ScreenPtr screen) - - memset(intel->uxa_driver, 0, sizeof(*intel->uxa_driver)); - -- intel->bufferOffset = 0; - intel->uxa_driver->uxa_major = 1; - intel->uxa_driver->uxa_minor = 0; - -diff --git a/src/intel_video.c b/src/intel_video.c -index 2786201..5294f73 100644 ---- a/src/intel_video.c -+++ b/src/intel_video.c -@@ -996,7 +996,7 @@ I830CopyPlanarData(intel_adaptor_private *adaptor_priv, - /* Copy V data for YV12, or U data for I420 */ - src2 = buf + /* start of YUV data */ - (srcH * srcPitch) + /* move over Luma plane */ -- ((top * srcPitch) >> 2) + /* move down from by top lines */ -+ ((top >> 1) * srcPitch2) + /* move down from by top lines */ - (left >> 1); /* move left by left pixels */ - - #if 0 -@@ -1015,7 +1015,7 @@ I830CopyPlanarData(intel_adaptor_private *adaptor_priv, - src3 = buf + /* start of YUV data */ - (srcH * srcPitch) + /* move over Luma plane */ - ((srcH >> 1) * srcPitch2) + /* move over Chroma plane */ -- ((top * srcPitch) >> 2) + /* move down from by top lines */ -+ ((top >> 1) * srcPitch2) + /* move down from by top lines */ - (left >> 1); /* move left by left pixels */ - #if 0 - ErrorF("src3 is %p, offset is %ld\n", src3, -diff --git a/src/xvmc/i915_xvmc.c b/src/xvmc/i915_xvmc.c -index 21a1149..fbd4555 100644 ---- a/src/xvmc/i915_xvmc.c -+++ b/src/xvmc/i915_xvmc.c -@@ -391,7 +391,6 @@ static void i915_mc_static_indirect_state_set(XvMCContext * context, - i915XvMCContext *pI915XvMC = (i915XvMCContext *) context->privData; - struct intel_xvmc_surface *intel_surf = dest->privData; - struct i915_mc_static_indirect_state_buffer *buffer_info; -- unsigned int w = dest->width; - - drm_intel_gem_bo_map_gtt(pI915XvMC->sis_bo); - buffer_info = pI915XvMC->sis_bo->virtual; -@@ -688,7 +687,7 @@ static void i915_mc_load_indirect_render_emit(XvMCContext * context) - { - i915XvMCContext *pI915XvMC = (i915XvMCContext *) context->privData; - int mem_select; -- uint32_t load_indirect, buffer_address; -+ uint32_t load_indirect; - BATCH_LOCALS; - - BEGIN_BATCH(5); -diff --git a/src/xvmc/intel_batchbuffer.c b/src/xvmc/intel_batchbuffer.c -index 337b2ce..2b5526c 100644 ---- a/src/xvmc/intel_batchbuffer.c -+++ b/src/xvmc/intel_batchbuffer.c -@@ -64,8 +64,6 @@ static void i965_end_batch(void) - - Bool intelInitBatchBuffer(void) - { -- int i; -- - if ((xvmc_driver->batch.buf = - drm_intel_bo_alloc(xvmc_driver->bufmgr, - "batch buffer", BATCH_SIZE, 0x1000)) == NULL) { -diff --git a/src/xvmc/intel_batchbuffer.h b/src/xvmc/intel_batchbuffer.h -index 6fa1c05..888abeb 100644 ---- a/src/xvmc/intel_batchbuffer.h -+++ b/src/xvmc/intel_batchbuffer.h -@@ -24,7 +24,7 @@ extern int VERBOSE; - - #define OUT_RELOC(bo,read_domains,write_domains,delta) \ - do { \ -- *(unsigned int *)batch_ptr = delta + bo->offset; \ -+ *(unsigned int *)batch_ptr = (delta) + bo->offset; \ - intel_batch_emit_reloc(bo, read_domains, write_domains, delta, batch_ptr); \ - batch_ptr += 4; \ - } while (0) -diff --git a/src/xvmc/intel_xvmc.c b/src/xvmc/intel_xvmc.c -index 6cbec80..1b96945 100644 ---- a/src/xvmc/intel_xvmc.c -+++ b/src/xvmc/intel_xvmc.c -@@ -105,8 +105,6 @@ unsigned int mb_bytes_420[] = { - - void LOCK_HARDWARE(drm_context_t ctx) - { -- char __ret = 0; -- - PPTHREAD_MUTEX_LOCK(); - assert(!xvmc_driver->locked); - -@@ -218,11 +216,6 @@ _X_EXPORT Status XvMCCreateContext(Display * display, XvPortID port, - int error_base; - int event_base; - int priv_count; -- int isCapable; -- int screen = DefaultScreen(display); -- intel_xvmc_context_ptr intel_ctx; -- int fd; -- char *driverName = NULL, *deviceName = NULL; - - /* Verify Obvious things first */ - if (!display || !context) -@@ -482,7 +475,6 @@ _X_EXPORT Status XvMCCreateBlocks(Display * display, XvMCContext * context, - unsigned int num_blocks, - XvMCBlockArray * block) - { -- Status ret; - if (!display || !context || !num_blocks || !block) - return BadValue; - -@@ -505,7 +497,6 @@ _X_EXPORT Status XvMCCreateBlocks(Display * display, XvMCContext * context, - */ - _X_EXPORT Status XvMCDestroyBlocks(Display * display, XvMCBlockArray * block) - { -- Status ret; - if (!display || !block) - return BadValue; - -@@ -678,13 +669,10 @@ _X_EXPORT Status XvMCPutSurface(Display * display, XvMCSurface * surface, - */ - _X_EXPORT Status XvMCSyncSurface(Display * display, XvMCSurface * surface) - { -- Status ret; -- int stat = 0; -- - if (!display || !surface) - return XvMCBadSurface; - -- return ret; -+ return Success; - } - - /* -@@ -739,9 +727,6 @@ _X_EXPORT Status XvMCGetSurfaceStatus(Display * display, XvMCSurface * surface, - */ - _X_EXPORT Status XvMCHideSurface(Display * display, XvMCSurface * surface) - { -- int stat = 0; -- Status ret; -- - if (!display || !surface) - return XvMCBadSurface; - -@@ -1071,7 +1056,7 @@ _X_EXPORT Status XvMCLoadQMatrix(Display * display, XvMCContext * context, - _X_EXPORT Status XvMCPutSlice(Display * display, XvMCContext * context, - char *slice, int nbytes) - { -- if (xvmc_driver->put_slice(display, context, slice, nbytes)) { -+ if (xvmc_driver->put_slice(display, context, (unsigned char *) slice, nbytes)) { - XVMC_ERR("PutSlice fail\n"); - return BadValue; - } -@@ -1082,7 +1067,7 @@ _X_EXPORT Status XvMCPutSlice2(Display * display, XvMCContext * context, - char *slice, int nbytes, int slice_code) - { - if (xvmc_driver->put_slice2 -- (display, context, slice, nbytes, slice_code)) { -+ (display, context, (unsigned char *) slice, nbytes, slice_code)) { - XVMC_ERR("PutSlice2 fail\n"); - return BadValue; - } -diff --git a/src/xvmc/intel_xvmc_dump.c b/src/xvmc/intel_xvmc_dump.c -index 974bcbb..d22d311 100644 ---- a/src/xvmc/intel_xvmc_dump.c -+++ b/src/xvmc/intel_xvmc_dump.c -@@ -38,7 +38,7 @@ void intel_xvmc_dump_open(void) - if (xvmc_dump) - return; - -- if (d = getenv("INTEL_XVMC_DUMP")) -+ if ((d = getenv("INTEL_XVMC_DUMP"))) - xvmc_dump = 1; - - if (xvmc_dump) { -diff --git a/src/xvmc/xvmc_vld.c b/src/xvmc/xvmc_vld.c -index addc7c9..d72e105 100644 ---- a/src/xvmc/xvmc_vld.c -+++ b/src/xvmc/xvmc_vld.c -@@ -785,7 +785,6 @@ static Status begin_surface(Display * display, XvMCContext * context, - XvMCSurface * future, - const XvMCMpegControl * control) - { -- struct i965_xvmc_contex *i965_ctx; - struct intel_xvmc_surface *priv_target, *priv_past, *priv_future; - intel_xvmc_context_ptr intel_ctx = context->privData; - Status ret; -diff --git a/uxa/uxa-accel.c b/uxa/uxa-accel.c -index a5066c8..0650ac2 100644 ---- a/uxa/uxa-accel.c -+++ b/uxa/uxa-accel.c -@@ -120,6 +120,10 @@ uxa_fill_spans(DrawablePtr pDrawable, GCPtr pGC, int n, - - solid = uxa_acquire_solid(screen, src->pSourcePict); - FreePicture(src, 0); -+ if (!solid) { -+ FreePicture(dst, 0); -+ goto solid; -+ } - - src = solid; - src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable, -@@ -1110,6 +1114,10 @@ try_solid: - - solid = uxa_acquire_solid(screen, src->pSourcePict); - FreePicture(src, 0); -+ if (!solid) { -+ FreePicture(dst, 0); -+ goto err; -+ } - - src = solid; - src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable, -diff --git a/uxa/uxa-glyphs.c b/uxa/uxa-glyphs.c -index 420e891..0f5ddda 100644 ---- a/uxa/uxa-glyphs.c -+++ b/uxa/uxa-glyphs.c -@@ -111,6 +111,9 @@ static void uxa_unrealize_glyph_caches(ScreenPtr pScreen) - uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); - int i; - -+ if (!uxa_screen->glyph_cache_initialized) -+ return; -+ - for (i = 0; i < UXA_NUM_GLYPH_CACHE_FORMATS; i++) { - uxa_glyph_cache_t *cache = &uxa_screen->glyphCaches[i]; - -@@ -120,6 +123,7 @@ static void uxa_unrealize_glyph_caches(ScreenPtr pScreen) - if (cache->glyphs) - free(cache->glyphs); - } -+ uxa_screen->glyph_cache_initialized = FALSE; - } - - void uxa_glyphs_fini(ScreenPtr pScreen) -@@ -145,6 +149,10 @@ static Bool uxa_realize_glyph_caches(ScreenPtr pScreen) - }; - int i; - -+ if (uxa_screen->glyph_cache_initialized) -+ return TRUE; -+ -+ uxa_screen->glyph_cache_initialized = TRUE; - memset(uxa_screen->glyphCaches, 0, sizeof(uxa_screen->glyphCaches)); - - for (i = 0; i < sizeof(formats)/sizeof(formats[0]); i++) { -@@ -214,17 +222,7 @@ Bool uxa_glyphs_init(ScreenPtr pScreen) - if (uxa_get_screen(pScreen)->force_fallback) - return TRUE; - -- /* We are trying to initialise per screen resources prior to the -- * complete initialisation of the screen. So ensure the components -- * that we depend upon are initialsed prior to our use. -- */ -- if (!CreateScratchPixmapsForScreen(pScreen->myNum)) -- return FALSE; -- -- if (!uxa_realize_glyph_caches(pScreen)) -- return FALSE; -- -- return TRUE; -+ return uxa_realize_glyph_caches(pScreen); - } - - /* The most efficient thing to way to upload the glyph to the screen -diff --git a/uxa/uxa-priv.h b/uxa/uxa-priv.h -index 92536cc..ac206af 100644 ---- a/uxa/uxa-priv.h -+++ b/uxa/uxa-priv.h -@@ -139,6 +139,7 @@ typedef struct { - unsigned offScreenCounter; - - uxa_glyph_cache_t glyphCaches[UXA_NUM_GLYPH_CACHE_FORMATS]; -+ Bool glyph_cache_initialized; - - PicturePtr solid_clear, solid_black, solid_white; - uxa_solid_cache_t solid_cache[UXA_NUM_SOLID_CACHE]; -diff --git a/uxa/uxa-render.c b/uxa/uxa-render.c -index cf8b8ea..0f06e82 100644 ---- a/uxa/uxa-render.c -+++ b/uxa/uxa-render.c -@@ -1061,6 +1061,8 @@ try_solid: - int src_off_x, src_off_y; - - solid = uxa_acquire_solid(screen, src->pSourcePict); -+ if (!solid) -+ goto err_src; - FreePicture(src, 0); - - src = solid; -@@ -1090,6 +1092,7 @@ try_solid: - /* XXX xserver-1.8: CompositeRects is not tracked by Damage, so we must - * manually append the damaged regions ourselves. - */ -+ pixman_region_translate(®ion, -dst_x, -dst_y); - DamageRegionAppend(dst->pDrawable, ®ion); - - pixman_region_fini(®ion); -- cgit v1.2.3-54-g00ecf