diff options
Diffstat (limited to 'driver')
176 files changed, 50659 insertions, 10248 deletions
diff --git a/driver/xf86-video-intel/AUTHORS b/driver/xf86-video-intel/AUTHORS new file mode 100644 index 000000000..31a1da1dd --- /dev/null +++ b/driver/xf86-video-intel/AUTHORS @@ -0,0 +1,62 @@ +Authors of xf86-video-intel (since 2003-11-14 when revision-control +history begins, sorted roughly by number of commits, descending): + +Eric Anholt +Keith Packard +Zhenyu Wang +Jesse Barnes +Alan Hourihane +Carl Worth +Dave Airlie +Michel Dänzer +Zou Nan Hai +Kristian Høgsberg +Adam Jackson +Nian Wu +Xian, Haihao +Egbert Eich +Kevin E Martin +Alan Coopersmith +Hong Liu +Julien Cristau +Ma Ling +Bryce Harrington +Daniel Stone +Kaleb Keithley +Paulo Cesar Pereira de Andrade +Eamon Walsh +Matthieu Herrb +Owain G. Ainsworth +Søren Sandmann Pedersen +Brice Goglin +Ian Romanick +Lukáš Hejtmánek +Matthias Hopf +Olivier Fourdan +Robert Noland +Rémi Cardona +Shuang He +Wu Fengguang +and many others (with 1 or 2 commits) + +Other authors (from before revision-control history begins): + +Keith Whitwell +Jonathan Bian +Matthew J Sottek +Jeff Hartmann +Mark Vojkovich +H. J. Lu +David Dawes + +If the above list is missing anyone, please accept our apologies and +let us know. + +The X.Org version of this driver is maintained by Intel Corporation: + + http://www.intellinuxgraphics.org + +The X11R6 version of this driver originally came from XFree86 4.4 rc2. + +The XFree86 version of this driver was donated to The XFree86 Project +by Precision Insight, Inc.; Cedar Park, TX; USA diff --git a/driver/xf86-video-intel/Makefile.am b/driver/xf86-video-intel/Makefile.am index b2398a884..68c124300 100644 --- a/driver/xf86-video-intel/Makefile.am +++ b/driver/xf86-video-intel/Makefile.am @@ -19,7 +19,8 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. AUTOMAKE_OPTIONS = foreign -SUBDIRS = src man -EXTRA_DIST = README +SUBDIRS = uxa src man + +EXTRA_DIST = README AUTHORS NEWS DISTCLEANFILES = doltcompile diff --git a/driver/xf86-video-intel/Makefile.in b/driver/xf86-video-intel/Makefile.in index a68569ef3..8e5a72415 100644 --- a/driver/xf86-video-intel/Makefile.in +++ b/driver/xf86-video-intel/Makefile.in @@ -57,8 +57,8 @@ build_triplet = @build@ host_triplet = @host@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(top_srcdir)/configure COPYING compile config.guess \ - config.sub depcomp install-sh ltmain.sh missing + $(top_srcdir)/configure AUTHORS COPYING NEWS compile \ + config.guess config.sub depcomp install-sh ltmain.sh missing subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ @@ -129,6 +129,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -140,6 +144,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -184,6 +189,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -191,6 +198,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -202,15 +211,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -227,6 +230,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -234,25 +240,29 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ AUTOMAKE_OPTIONS = foreign -SUBDIRS = src man -EXTRA_DIST = README +SUBDIRS = uxa src man +EXTRA_DIST = README AUTHORS NEWS DISTCLEANFILES = doltcompile all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive diff --git a/driver/xf86-video-intel/NEWS b/driver/xf86-video-intel/NEWS new file mode 100644 index 000000000..0dc3aa9c4 --- /dev/null +++ b/driver/xf86-video-intel/NEWS @@ -0,0 +1,154 @@ +Release 2.7.1 (2009-05-12) +-------------------------- +This is a maintenance release on the 2.7 branch. Compared to 2.7.0 it +consists only of a few carefully hand-picked fixes for bugs, +(including GPU crashers). We encourage all users of 2.7.0 to upgrade +to 2.7.1. + +Bug fixes since 2.7.0: + + * KMS: Hook up output properties for RANDR, (this allows output + properties to be controlled in the KMS case just as in the UMS + case). [Zhenyu Wang <zhenyu.z.wang@intel.com>] + + * Fix multiplication error when computing required batch space. + This could fix any number of cases where the driver did + inexplicable things (due to having computed the wrong + size). [Keith Packard <keithp@keithp.com>] + + * Hold reference to video binding table until all rects are + painted. This prevent general chaos in the buffer + manager. [Keith Packard <keithp@keithp.com>] + + * Split i915 textured video commands to fit into batch + buffers. Video and 3D setup commands share the same batch + buffer, so without this fix, various problems could occur when + video and 3D clients were both heavily active at the same + time. [Keith Packard <keithp@keithp.com>] + + * Fix crash with XV with large virtual display (> 2049). [Albert + Damen <albrt@gmx.net>] + + * Provide missing value to 3D_STATE_VERTEX_BUFFERS command. We + don't know that this was causing any problem, but the change + does bring the driver into conformance with what the + specification says the hardware requires here. [Keith Packard + <keithp@keithp.com>] + +Release 2.7.0 (2009-04-15) +-------------------------- +Compared to the 2.6 series, 2.7.0 has a large number of bug fixes, but +also a few significant features, such as: + + SDVO-TV support, available on ADD2 card (bug#9992) and + D945GCLF2 board (bug#17776). + + Basic SDVO-LVDS support + + XV video display without tearing + [Though this isn't working for all users yet, see + https://bugs.freedesktop.org/show_bug.cgi?id=21076 ] + + Various fixes for UXA, DRI2, and Kernel modesetting. + +We encourage users to use kernel modesetting and UXA acceleration with +this release, which should give the best performance and +robustness. When KMS is available, UXA is the default acceleration +used by the driver, (EXA is the default otherwise). + +Known issue: + + Some Linux kernel versions (such as 2.6.29) are known to have + broken PAT code that causes recent versions of this driver to + fail, (which can manifest as the X server simply not + starting). This can be verified by adding the "nopat" option + to the kernel command-line and seeing the failure go away. We + hope that newer kernels in the 2.6.29.x as well as 2.6.30 and + above will have working PAT code. + +Some of the most notable bugs fixed in 2.7.0 include: + + [GM45 965GM] bad htotal causes panel startup failure + https://bugs.freedesktop.org/show_bug.cgi?id=17292 + + [xrandr TV] need TV output property control + https://bugs.freedesktop.org/show_bug.cgi?id=12763 + + [TV] "xrandr --set TV_FORMAT" gets BadMatch error + https://bugs.freedesktop.org/show_bug.cgi?id=16566 + + [945 tiling] Low performance due to no A17 workaround + https://bugs.freedesktop.org/show_bug.cgi?id=16835 + + [TV]Flicker when launching applications in the 2.4-branch + https://bugs.freedesktop.org/show_bug.cgi?id=17405 + + [945GM FBC] FBC causes underruns & flicker + https://bugs.freedesktop.org/show_bug.cgi?id=18651 + + [xv] Textured video suffers from tearing + https://bugs.freedesktop.org/show_bug.cgi?id=19635 + + [G45] Random hangs with UXA + https://bugs.freedesktop.org/show_bug.cgi?id=19734 + + [945GM] Any 3D app is slow in resolution higher than 800x600 + with UXA+DRI2, due to tiling + https://bugs.freedesktop.org/show_bug.cgi?id=19738 + + [i915 UXA,EXA] rotation messes display with tiling on + https://bugs.freedesktop.org/show_bug.cgi?id=20265 + + [G45] DRI2/UXA gives solid white instead of transparency + https://bugs.freedesktop.org/show_bug.cgi?id=20321 + + LVDS output not detected + https://bugs.freedesktop.org/show_bug.cgi?id=20517 + + xf86-video-intel-2.6.3: Xv crashes X server + https://bugs.freedesktop.org/show_bug.cgi?id=20525 + + [G965 non-GEM] systray in KDE 4 completely broken + https://bugs.freedesktop.org/show_bug.cgi?id=20527 + + [SDVO-TV]the desktop is teared in four sections on the screen + https://bugs.freedesktop.org/show_bug.cgi?id=20550 + + Intel video driver 2.6.3 crashes with XVideo + https://bugs.freedesktop.org/show_bug.cgi?id=20563 + + [855GM] Xv crash with non-KMS + https://bugs.freedesktop.org/show_bug.cgi?id=20585 + + 2.6.99.902 breaks native 1680x1050 mode on TMDS -- EDID miss + https://bugs.freedesktop.org/show_bug.cgi?id=20594 + + [945GM TV] 2.6.99.902 sets a too high CONTRAST-value + https://bugs.freedesktop.org/show_bug.cgi?id=20670 + + [915GM] fail to detect LVDS with new VBT code + https://bugs.freedesktop.org/show_bug.cgi?id=20752 + + [regression i965]tiled output when start X + https://bugs.freedesktop.org/show_bug.cgi?id=20803 + + 2.6.99.902: LVDS wrongly detected as disconnected + https://bugs.freedesktop.org/show_bug.cgi?id=20826 + + vt switching fails and crashes X + https://bugs.freedesktop.org/show_bug.cgi?id=20863 + + [HDMI] The screen will flicker when some application runs on + G45-64 + https://bugs.freedesktop.org/show_bug.cgi?id=20875 + + TexturedVideo is offsetted wrongly on dualhead + https://bugs.freedesktop.org/show_bug.cgi?id=20980 + + [EXA] xvideo hang X + https://bugs.freedesktop.org/show_bug.cgi?id=21027 + + [EXA] x11perf performance regression + https://bugs.freedesktop.org/show_bug.cgi?id=21029 + + And many others... diff --git a/driver/xf86-video-intel/README b/driver/xf86-video-intel/README index e2061c442..96db084dc 100644 --- a/driver/xf86-video-intel/README +++ b/driver/xf86-video-intel/README @@ -1,177 +1,47 @@ - Information for Intel graphics driver users - Eric Anholt - 2006-08-04 - ____________________________________________________________ +xf86-video-intel +Open-source X.org graphics driver for Intel graphics +http://www.intellinuxgraphics.com/ - Table of Contents +What is xf86-video-intel +------------------------ +The xf86-video-intel module is an open-source 2D graphics driver for +the X Window System as implemented by X.org. It supports a variety of +Intel graphics chipsets including: + i810/i810e/i810-dc100,i815, + i830M,845G,852GM,855GM,865G, + 915G/GM,945G/GM/GME,946GZ + G/GM/GME/Q965, + G/Q33,G/Q35,G41,G/Q43,G/GM/Q45 - 1. Introduction - 2. Supported Hardware - 3. Features - 4. Technical Notes - 5. Configuration - 6. Driver Options - 7. Known Limitations - 8. Author +Where to get more information about the driver +---------------------------------------------- +The primary source of information about this and other open-source +drivers for Intel graphics is: + http://intellinuxgraphics.org/ - ______________________________________________________________________ +Documentation specific to the xf86-video-intel driver including +possible configuration options for the xorg.conf file can be found in +the intel(4) manual page. After installing the driver this +documentation can be read with the following command: - 11.. IInnttrroodduuccttiioonn + man intel - This document provides a brief summary of the Intel graphics support - provided by the xf86-video-intel driver. More information can also be - found in the i810(4) manual page. +Mailing list for communication with users and developers of +xf86-video-intel: + intel-gfx@lists.freedesktop.org. - 22.. SSuuppppoorrtteedd HHaarrddwwaarree + Note: Subscription is required before posting, but anyone is + free to subscribe. See instructions (and archives) here: + http://lists.freedesktop.org/mailman/listinfo/intel-gfx - +o i810, - - +o i810-dc100, - - +o i810e - - +o i815 - - +o i830 - - +o i845 - - +o i852 - - +o i855 - - +o i915 - - +o i945 - - +o i965 - - - - 33.. FFeeaattuurreess - - - +o Full support for 8, 15, 16, and 24 bit pixel depths. - - +o Hardware accelerated 2D drawing engine support for 8, 15, 16 and 24 - bit pixel depths. - - +o Hardware accelerated 3D drawing using OpenGL and the DRI. - - +o Hardware cursor support to reduce sprite flicker. - - +o Textured video XV implementation on i915 through i965. - - +o Hardware overlay XV implementation up through i945. - - +o Screen resize and rotation on chipsets up through i945. - - +o Screen resize on i965. - - - - 44.. TTeecchhnniiccaall NNootteess - - - +o Interlace modes cannot be supported. - - +o This driver requires kernel support for AGP, which is included in - Linux kernels 2.3.42 and higher, and FreeBSD 4.1 and higher. - - - - 55.. CCoonnffiigguurraattiioonn - - The driver auto-detects all device information necessary to initialize - the card. The only lines you should need in the "Device" section of - your xorg.conf file are: - - Section "Device" - Identifier "Intel i810" - Driver "i810" - EndSection - - - - In order to use most resolutions, it is necessary to install the - "agpgart.o" module. You will probably have to compile the module - yourself (see the notes in the module). - - - 66.. DDrriivveerr OOppttiioonnss - - Please refer to the i810(4) manual page for information on - configuration options. - - - - 77.. KKnnoowwnn LLiimmiittaattiioonnss - - - +o Many systems with Intel graphics have issues with setting video - modes at larger than some small maximum resolution. This is not - fixed in the current release, but is being actively worked on in - the modesetting branch. - - +o Bug #5795: Some systems have issues with VT switching. This should - be fixed with the modesetting brach integration. - - +o Bug #5817: Hotkey switching from LVDS to CRT breaks CRT output. - This is a known issue, but will not be fixed in the current - release. - - +o Bug #6635: Video is output from an incorrect offset in the - framebuffer. This is expected to be fixed with the modesetting - branch integration. - - +o GL_EXT_texture_compression_s3tc is not supported. We can't support - the extension due to patent restrictions on compression, but may be - able to support an option for partial extension support in the - future. For now, this prevents Quake4 and some other games from - running. - - +o Some X Test Suite cases sometimes fail due to a timeout. These - cases include: Xt8/XtResizeWindow, Xt8/XtQueryGeometry, - Xt9/XtAppAddInput, Xt9/XtRemoveInput, Xt9/XtAppAddTimeOut, - Xt9/XtRemoveTimeOut, Xt9/XtAddGrab, Xt9/XtRemoveGrab. - - +o Some X Test Suite cases fail in 64-bit mode: Xlib9/XDrawArc, - XDrawImageString, XDrawLine, XDrawRectangle, XDrawSegments, - XFillArc, XFillPolygon, XFillRectangle, XPutImage, - Xt11/XtVaGetSubresources, XtSetSubvalues, and XtVaSetSubvalues. - - +o Some GLEAN test cases fail if DRI is enabled: pointAtten, - readPixSanity, texCombine, texCube, texEnv, texgen, - coloredTexPerf2, and coloredLitPerf2. - - - - 88.. AAuutthhoorr - - - +o Eric Anholt - - +o Keith Whitwell - - The X11R7.1 version of this driver originally came from XFree86 4.4 - rc2. - - The XFree86 version of this driver was donated to The XFree86 Project - by: - - Precision Insight, Inc. - Cedar Park, TX - USA - - - - The X.Org version of this driver is maintained by Intel Corporation. - - http://www.intellinuxgraphics.org +To report bugs encountered with the driver, see: + http://intellinuxgraphics.org/how_to_report_bug.html +To see bugs that are targeted to be fixed in the next release: + https://bugs.freedesktop.org/show_bug.cgi?id=intel-2d-release diff --git a/driver/xf86-video-intel/RELEASING b/driver/xf86-video-intel/RELEASING new file mode 100644 index 000000000..2196c8fdc --- /dev/null +++ b/driver/xf86-video-intel/RELEASING @@ -0,0 +1,51 @@ +The process for releasing a new tarball is as follows: + +1. Make sure you have the latest build requirements installed: + + git://git.freedesktop.org/git/util/macros + git://git.freedesktop.org/git/util/modular + +2. Add relevant release notes to the NEWS files + + Skim the git log since the last release, and add notes in a + similar style to previous releases. + + For major releases list added features and known limitations. + + For minor releases indicate which bugs were fixed and which + are still present. + + +3. Update your module version (usually found in configure.ac) + + $ vi configure.ac # bump version + $ git push origin # make sure you're on the release branch + +4. Verify your module builds + + $ make distcheck + +5. Tag the release + + $ git tag -m "Intel <ver> release" <ver> + +6. Run the release script (this should push the tag) + + $ <path_to>/util/modular/release.sh driver <last_ver> <ver> + +7. Edit and send the generated release message. + + At the very least, add the release notes from the NEWS file. + + The message is generated as xf86-video-inte-<version>.announce + + For snapshots and release candidates, mail to: + + intel-gfx@lists.freedesktop.org + + For major releases also send to: + + xorg@lists.freedesktop.org + xorg-announce@lists.freedesktop.org + +8. Throw a release party, you're done! :) diff --git a/driver/xf86-video-intel/aclocal.m4 b/driver/xf86-video-intel/aclocal.m4 index 317352482..110c09306 100644 --- a/driver/xf86-video-intel/aclocal.m4 +++ b/driver/xf86-video-intel/aclocal.m4 @@ -7659,6 +7659,7 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR +dnl xorg-macros.m4. Generated from xorg-macros.m4.in:xorgversion.m4 by configure. dnl dnl Copyright 2005-2006 Sun Microsystems, Inc. All rights reserved. dnl @@ -7706,7 +7707,7 @@ AC_DEFUN([XORG_MACROS_VERSION],[ XORG_MACROS_needed_major=`echo $XORG_MACROS_needed_version | sed 's/\..*$//'` XORG_MACROS_needed_minor=`echo $XORG_MACROS_needed_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`] AC_MSG_CHECKING([if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}]) - [XORG_MACROS_version=1.1.6 + [XORG_MACROS_version=1.2.1 XORG_MACROS_major=`echo $XORG_MACROS_version | sed 's/\..*$//'` XORG_MACROS_minor=`echo $XORG_MACROS_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`] if test $XORG_MACROS_major -ne $XORG_MACROS_needed_major ; then @@ -7740,6 +7741,10 @@ else if test `${RAWCPP} -undef < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then RAWCPPFLAGS=-undef AC_MSG_RESULT([yes]) + # under Cygwin unix is still defined even with -undef + elif test `${RAWCPP} -undef -ansi < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then + RAWCPPFLAGS="-undef -ansi" + AC_MSG_RESULT([yes, with -ansi]) else AC_MSG_ERROR([${RAWCPP} defines unix with or without -undef. I don't know what to do.]) fi @@ -7852,7 +7857,9 @@ AC_SUBST([ADMIN_MAN_DIR]) # Whether or not the necessary tools and files are found can be checked # with the AM_CONDITIONAL "BUILD_LINUXDOC" AC_DEFUN([XORG_CHECK_LINUXDOC],[ -XORG_SGML_PATH=$prefix/share/sgml +if test x$XORG_SGML_PATH = x ; then + XORG_SGML_PATH=$prefix/share/sgml +fi HAVE_DEFS_ENT= if test x"$cross_compiling" = x"yes" ; then @@ -7908,7 +7915,9 @@ AC_SUBST(MAKE_HTML) # indicates whether the necessary tools and files are found and, if set, # $(MAKE_XXX) blah.sgml will produce blah.xxx. AC_DEFUN([XORG_CHECK_DOCBOOK],[ -XORG_SGML_PATH=$prefix/share/sgml +if test x$XORG_SGML_PATH = x ; then + XORG_SGML_PATH=$prefix/share/sgml +fi HAVE_DEFS_ENT= BUILDTXTDOC=no BUILDPDFDOC=no @@ -8085,55 +8094,31 @@ AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno]) ]) # XORG_LINT_LIBRARY -dnl Copyright 2005 Red Hat, Inc -dnl -dnl Permission to use, copy, modify, distribute, and sell this software and its -dnl documentation for any purpose is hereby granted without fee, provided that -dnl the above copyright notice appear in all copies and that both that -dnl copyright notice and this permission notice appear in supporting -dnl documentation. -dnl -dnl The above copyright notice and this permission notice shall be included -dnl in all copies or substantial portions of the Software. -dnl -dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -dnl IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR -dnl OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -dnl ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -dnl OTHER DEALINGS IN THE SOFTWARE. -dnl -dnl Except as contained in this notice, the name of the copyright holders shall -dnl not be used in advertising or otherwise to promote the sale, use or -dnl other dealings in this Software without prior written authorization -dnl from the copyright holders. -dnl - -# XORG_DRIVER_CHECK_EXT() -# -------------------------- -# Checks for the $1 define in xorg-server.h (from the sdk). If it -# is defined, then add $1 to $REQUIRED_MODULES. - -AC_DEFUN([XORG_DRIVER_CHECK_EXT],[ - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -I`pkg-config --variable=sdkdir xorg-server`" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include "xorg-server.h" -#if !defined $1 -#error $1 not defined -#endif - ]])], - [_EXT_CHECK=yes], - [_EXT_CHECK=no]) - CFLAGS="$SAVE_CFLAGS" - AC_MSG_CHECKING([if $1 is defined]) - AC_MSG_RESULT([$_EXT_CHECK]) - if test "$_EXT_CHECK" != no; then - REQUIRED_MODULES="$REQUIRED_MODULES $2" - fi -]) - +# XORG_CWARNFLAGS +# --------------- +# Minimum version: 1.2.0 +# +# Defines CWARNFLAGS to enable C compiler warnings. +# +AC_DEFUN([XORG_CWARNFLAGS], [ +AC_REQUIRE([AC_PROG_CC]) +if test "x$GCC" = xyes ; then + CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ +-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \ +-Wbad-function-cast" + case `gcc -dumpversion` in + 3.4.* | 4.*) + CWARNFLAGS+=" -Wold-style-definition -Wdeclaration-after-statement" + ;; + esac +else + AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"]) + if test "x$SUNCC" = "xyes"; then + CWARNFLAGS="-v" + fi +fi +AC_SUBST(CWARNFLAGS) +]) # XORG_CWARNFLAGS dnl Copyright 2005 Red Hat, Inc dnl dnl Permission to use, copy, modify, distribute, and sell this software and its @@ -8196,4 +8181,70 @@ AC_DEFUN([XORG_RELEASE_VERSION],[ [Patch version of this package]) ]) +# XORG_CHANGELOG() +# ---------------- +# Minimum version: 1.2.0 +# +# Defines the variable CHANGELOG_CMD as the command to generate +# ChangeLog from git. +# +# Arrange that distcleancheck ignores ChangeLog left over by distclean. +# +AC_DEFUN([XORG_CHANGELOG], [ +CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > .changelog.tmp && \ +mv .changelog.tmp ChangeLog) || (rm -f .changelog.tmp; touch ChangeLog; \ +echo 'git directory not found: installing possibly empty changelog.' >&2)" +AC_SUBST([CHANGELOG_CMD]) +AC_SUBST([distcleancheck_listfiles], ['find . -type f ! -name ChangeLog -print']) +]) # XORG_CHANGELOG + +dnl Copyright 2005 Red Hat, Inc +dnl +dnl Permission to use, copy, modify, distribute, and sell this software and its +dnl documentation for any purpose is hereby granted without fee, provided that +dnl the above copyright notice appear in all copies and that both that +dnl copyright notice and this permission notice appear in supporting +dnl documentation. +dnl +dnl The above copyright notice and this permission notice shall be included +dnl in all copies or substantial portions of the Software. +dnl +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +dnl IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +dnl OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +dnl ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +dnl OTHER DEALINGS IN THE SOFTWARE. +dnl +dnl Except as contained in this notice, the name of the copyright holders shall +dnl not be used in advertising or otherwise to promote the sale, use or +dnl other dealings in this Software without prior written authorization +dnl from the copyright holders. +dnl + +# XORG_DRIVER_CHECK_EXT() +# -------------------------- +# Checks for the $1 define in xorg-server.h (from the sdk). If it +# is defined, then add $1 to $REQUIRED_MODULES. + +AC_DEFUN([XORG_DRIVER_CHECK_EXT],[ + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -I`pkg-config --variable=sdkdir xorg-server`" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#include "xorg-server.h" +#if !defined $1 +#error $1 not defined +#endif + ]])], + [_EXT_CHECK=yes], + [_EXT_CHECK=no]) + CFLAGS="$SAVE_CFLAGS" + AC_MSG_CHECKING([if $1 is defined]) + AC_MSG_RESULT([$_EXT_CHECK]) + if test "$_EXT_CHECK" != no; then + REQUIRED_MODULES="$REQUIRED_MODULES $2" + fi +]) + m4_include([acinclude.m4]) diff --git a/driver/xf86-video-intel/autogen.sh b/driver/xf86-video-intel/autogen.sh new file mode 100755 index 000000000..904cd6746 --- /dev/null +++ b/driver/xf86-video-intel/autogen.sh @@ -0,0 +1,12 @@ +#! /bin/sh + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd $srcdir + +autoreconf -v --install || exit 1 +cd $ORIGDIR || exit $? + +$srcdir/configure --enable-maintainer-mode "$@" diff --git a/driver/xf86-video-intel/config.h.in b/driver/xf86-video-intel/config.h.in index 27ddffd8c..84e21a4f9 100644 --- a/driver/xf86-video-intel/config.h.in +++ b/driver/xf86-video-intel/config.h.in @@ -2,9 +2,6 @@ #include "xorg-server.h" -/* Use Damage extension */ -#undef DAMAGE - /* Enable XvMC support */ #undef ENABLE_XVMC @@ -14,9 +11,6 @@ /* have new FreeShadow API */ #undef HAVE_FREE_SHADOW -/* Have drm_i915_flip_t and related definitions */ -#undef HAVE_I915_FLIP - /* Define to 1 if you have the <inttypes.h> header file. */ #undef HAVE_INTTYPES_H @@ -80,6 +74,9 @@ /* Patch version of this package */ #undef PACKAGE_VERSION_PATCHLEVEL +/* Building against server 1.5 */ +#undef SERVER_1_5 + /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS @@ -95,5 +92,8 @@ /* Enable developmental DRI driver support */ #undef XF86DRI_DEVEL +/* DRM kernel modesetting */ +#undef XF86DRM_MODE + /* X server has built-in mode code */ #undef XMODES diff --git a/driver/xf86-video-intel/configure b/driver/xf86-video-intel/configure index f865b0afd..7b8d45555 100644 --- a/driver/xf86-video-intel/configure +++ b/driver/xf86-video-intel/configure @@ -1,27 +1,84 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for xf86-video-intel 2.4.3. +# Generated by GNU Autoconf 2.62 for xf86-video-intel 2.7.1. # # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>. # -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi -DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -31,33 +88,60 @@ else fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -65,157 +149,391 @@ fi # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` +# CDPATH. +$as_unset CDPATH -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no fi + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in + case $as_dir in /*) - if ("$as_dir/$as_base" -c ' + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell bug-autoconf@gnu.org about your system, + echo including any error possibly output before this message. + echo This can help us improve future autoconf versions. + echo Configuration will now proceed without shell functions. +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -if expr a : '\(a\)' >/dev/null 2>&1; then +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -224,7 +542,28 @@ else as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -233,15 +572,6 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - # Check that we are running under the correct shell. @@ -397,80 +727,297 @@ tagnames=${tagnames+${tagnames},}CXX tagnames=${tagnames+${tagnames},}F77 +exec 7<&0 </dev/null 6>&1 + # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - # Identity of this package. PACKAGE_NAME='xf86-video-intel' PACKAGE_TARNAME='xf86-video-intel' -PACKAGE_VERSION='2.4.3' -PACKAGE_STRING='xf86-video-intel 2.4.3' +PACKAGE_VERSION='2.7.1' +PACKAGE_STRING='xf86-video-intel 2.7.1' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' ac_unique_file="Makefile.am" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include <sys/types.h> #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include <sys/stat.h> #endif -#if STDC_HEADERS +#ifdef STDC_HEADERS # include <stdlib.h> # include <stddef.h> #else -# if HAVE_STDLIB_H +# ifdef HAVE_STDLIB_H # include <stdlib.h> # endif #endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include <memory.h> # endif # include <string.h> #endif -#if HAVE_STRINGS_H +#ifdef HAVE_STRINGS_H # include <strings.h> #endif -#if HAVE_INTTYPES_H +#ifdef HAVE_INTTYPES_H # include <inttypes.h> -#else -# if HAVE_STDINT_H -# include <stdint.h> -# endif #endif -#if HAVE_UNISTD_H +#ifdef HAVE_STDINT_H +# include <stdint.h> +#endif +#ifdef HAVE_UNISTD_H # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE SED EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL DOLT_BASH LTCOMPILE LTCXXCOMPILE gen4asm HAVE_GEN4ASM_TRUE HAVE_GEN4ASM_FALSE PKG_CONFIG ac_pt_PKG_CONFIG XORG_CFLAGS XORG_LIBS PCIACCESS_CFLAGS PCIACCESS_LIBS XSERVER_LIBPCIACCESS_TRUE XSERVER_LIBPCIACCESS_FALSE LIBPCIACCESS_TRUE LIBPCIACCESS_FALSE XMODES_TRUE XMODES_FALSE XMODES_CFLAGS DRI_TRUE DRI_FALSE DRI_CFLAGS DRI_LIBS VIDEO_DEBUG_TRUE VIDEO_DEBUG_FALSE XVMCLIB_CFLAGS XVMCLIB_LIBS XVMC_TRUE XVMC_FALSE WARN_CFLAGS moduledir DRIVER_NAME APP_MAN_SUFFIX LIB_MAN_SUFFIX FILE_MAN_SUFFIX MISC_MAN_SUFFIX DRIVER_MAN_SUFFIX ADMIN_MAN_SUFFIX APP_MAN_DIR LIB_MAN_DIR FILE_MAN_DIR MISC_MAN_DIR DRIVER_MAN_DIR ADMIN_MAN_DIR LINUXDOC PS2PDF BUILD_LINUXDOC_TRUE BUILD_LINUXDOC_FALSE BUILD_PDFDOC_TRUE BUILD_PDFDOC_FALSE MAKE_TEXT MAKE_PS MAKE_PDF MAKE_HTML LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +CYGPATH_W +PACKAGE +VERSION +ACLOCAL +AUTOCONF +AUTOMAKE +AUTOHEADER +MAKEINFO +install_sh +STRIP +INSTALL_STRIP_PROGRAM +mkdir_p +AWK +SET_MAKE +am__leading_dot +AMTAR +am__tar +am__untar +MAINTAINER_MODE_TRUE +MAINTAINER_MODE_FALSE +MAINT +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +DEPDIR +am__include +am__quote +AMDEP_TRUE +AMDEP_FALSE +AMDEPBACKSLASH +CCDEPMODE +am__fastdepCC_TRUE +am__fastdepCC_FALSE +SED +GREP +EGREP +LN_S +ECHO +AR +RANLIB +DSYMUTIL +NMEDIT +CPP +CXX +CXXFLAGS +ac_ct_CXX +CXXDEPMODE +am__fastdepCXX_TRUE +am__fastdepCXX_FALSE +CXXCPP +F77 +FFLAGS +ac_ct_F77 +LIBTOOL +DOLT_BASH +LTCOMPILE +LTCXXCOMPILE +gen4asm +HAVE_GEN4ASM_TRUE +HAVE_GEN4ASM_FALSE +PKG_CONFIG +XORG_CFLAGS +XORG_LIBS +SERVER_1_5_CFLAGS +SERVER_1_5_LIBS +PCIACCESS_CFLAGS +PCIACCESS_LIBS +XSERVER_LIBPCIACCESS_TRUE +XSERVER_LIBPCIACCESS_FALSE +LIBPCIACCESS_TRUE +LIBPCIACCESS_FALSE +XMODES_TRUE +XMODES_FALSE +XMODES_CFLAGS +DRM_CFLAGS +DRM_LIBS +DRI_TRUE +DRI_FALSE +DRI_CFLAGS +DRI_LIBS +DRM_MODE_CFLAGS +DRM_MODE_LIBS +VIDEO_DEBUG_TRUE +VIDEO_DEBUG_FALSE +XVMCLIB_CFLAGS +XVMCLIB_LIBS +XEXT_CFLAGS +XEXT_LIBS +XVMC_TRUE +XVMC_FALSE +WARN_CFLAGS +moduledir +DRIVER_NAME +APP_MAN_SUFFIX +LIB_MAN_SUFFIX +FILE_MAN_SUFFIX +MISC_MAN_SUFFIX +DRIVER_MAN_SUFFIX +ADMIN_MAN_SUFFIX +APP_MAN_DIR +LIB_MAN_DIR +FILE_MAN_DIR +MISC_MAN_DIR +DRIVER_MAN_DIR +ADMIN_MAN_DIR +LINUXDOC +PS2PDF +BUILD_LINUXDOC_TRUE +BUILD_LINUXDOC_FALSE +BUILD_PDFDOC_TRUE +BUILD_PDFDOC_FALSE +MAKE_TEXT +MAKE_PS +MAKE_PDF +MAKE_HTML +LIBOBJS +LTLIBOBJS' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +enable_static +enable_shared +enable_fast_install +enable_dependency_tracking +with_gnu_ld +enable_libtool_lock +with_pic +with_tags +with_xorg_module_dir +enable_dri +enable_video_debug +with_xserver_source +enable_xvmc +with_release_version +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP +F77 +FFLAGS +PKG_CONFIG +XORG_CFLAGS +XORG_LIBS +SERVER_1_5_CFLAGS +SERVER_1_5_LIBS +PCIACCESS_CFLAGS +PCIACCESS_LIBS +DRM_CFLAGS +DRM_LIBS +DRI_CFLAGS +DRI_LIBS +DRM_MODE_CFLAGS +DRM_MODE_LIBS +XVMCLIB_CFLAGS +XVMCLIB_LIBS +XEXT_CFLAGS +XEXT_LIBS' + # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -493,34 +1040,48 @@ x_libraries=NONE # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -542,33 +1103,61 @@ do --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; esac - eval "enable_$ac_feature='$ac_optarg'" ;; + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -595,6 +1184,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -619,13 +1214,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -690,6 +1288,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -740,26 +1348,38 @@ do ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; esac - eval "with_$ac_package='$ac_optarg'" ;; + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -779,7 +1399,7 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option + -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; @@ -788,17 +1408,16 @@ Try \`$0 --help' for more information." >&2 ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; @@ -807,31 +1426,39 @@ done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 + { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2 + { (exit 1); exit 1; }; } ;; + *) $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;; esac -done +fi -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var + # Remove trailing slashes. case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -845,7 +1472,7 @@ target=$target_alias if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes @@ -858,130 +1485,76 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { $as_echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CXX_set=${CXX+set} -ac_env_CXX_value=$CXX -ac_cv_env_CXX_set=${CXX+set} -ac_cv_env_CXX_value=$CXX -ac_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_env_CXXFLAGS_value=$CXXFLAGS -ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_cv_env_CXXFLAGS_value=$CXXFLAGS -ac_env_CXXCPP_set=${CXXCPP+set} -ac_env_CXXCPP_value=$CXXCPP -ac_cv_env_CXXCPP_set=${CXXCPP+set} -ac_cv_env_CXXCPP_value=$CXXCPP -ac_env_F77_set=${F77+set} -ac_env_F77_value=$F77 -ac_cv_env_F77_set=${F77+set} -ac_cv_env_F77_value=$F77 -ac_env_FFLAGS_set=${FFLAGS+set} -ac_env_FFLAGS_value=$FFLAGS -ac_cv_env_FFLAGS_set=${FFLAGS+set} -ac_cv_env_FFLAGS_value=$FFLAGS -ac_env_PKG_CONFIG_set=${PKG_CONFIG+set} -ac_env_PKG_CONFIG_value=$PKG_CONFIG -ac_cv_env_PKG_CONFIG_set=${PKG_CONFIG+set} -ac_cv_env_PKG_CONFIG_value=$PKG_CONFIG -ac_env_XORG_CFLAGS_set=${XORG_CFLAGS+set} -ac_env_XORG_CFLAGS_value=$XORG_CFLAGS -ac_cv_env_XORG_CFLAGS_set=${XORG_CFLAGS+set} -ac_cv_env_XORG_CFLAGS_value=$XORG_CFLAGS -ac_env_XORG_LIBS_set=${XORG_LIBS+set} -ac_env_XORG_LIBS_value=$XORG_LIBS -ac_cv_env_XORG_LIBS_set=${XORG_LIBS+set} -ac_cv_env_XORG_LIBS_value=$XORG_LIBS -ac_env_PCIACCESS_CFLAGS_set=${PCIACCESS_CFLAGS+set} -ac_env_PCIACCESS_CFLAGS_value=$PCIACCESS_CFLAGS -ac_cv_env_PCIACCESS_CFLAGS_set=${PCIACCESS_CFLAGS+set} -ac_cv_env_PCIACCESS_CFLAGS_value=$PCIACCESS_CFLAGS -ac_env_PCIACCESS_LIBS_set=${PCIACCESS_LIBS+set} -ac_env_PCIACCESS_LIBS_value=$PCIACCESS_LIBS -ac_cv_env_PCIACCESS_LIBS_set=${PCIACCESS_LIBS+set} -ac_cv_env_PCIACCESS_LIBS_value=$PCIACCESS_LIBS -ac_env_DRI_CFLAGS_set=${DRI_CFLAGS+set} -ac_env_DRI_CFLAGS_value=$DRI_CFLAGS -ac_cv_env_DRI_CFLAGS_set=${DRI_CFLAGS+set} -ac_cv_env_DRI_CFLAGS_value=$DRI_CFLAGS -ac_env_DRI_LIBS_set=${DRI_LIBS+set} -ac_env_DRI_LIBS_value=$DRI_LIBS -ac_cv_env_DRI_LIBS_set=${DRI_LIBS+set} -ac_cv_env_DRI_LIBS_value=$DRI_LIBS -ac_env_XVMCLIB_CFLAGS_set=${XVMCLIB_CFLAGS+set} -ac_env_XVMCLIB_CFLAGS_value=$XVMCLIB_CFLAGS -ac_cv_env_XVMCLIB_CFLAGS_set=${XVMCLIB_CFLAGS+set} -ac_cv_env_XVMCLIB_CFLAGS_value=$XVMCLIB_CFLAGS -ac_env_XVMCLIB_LIBS_set=${XVMCLIB_LIBS+set} -ac_env_XVMCLIB_LIBS_value=$XVMCLIB_LIBS -ac_cv_env_XVMCLIB_LIBS_set=${XVMCLIB_LIBS+set} -ac_cv_env_XVMCLIB_LIBS_value=$XVMCLIB_LIBS + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done # # Report the --help message. @@ -990,7 +1563,7 @@ if test "$ac_init_help" = "long"; then # 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.4.3 to adapt to many kinds of systems. +\`configure' configures xf86-video-intel 2.7.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1010,14 +1583,11 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify @@ -1027,18 +1597,26 @@ for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root + [DATAROOTDIR/doc/xf86-video-intel] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -1056,19 +1634,18 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of xf86-video-intel 2.4.3:";; + short | recursive ) echo "Configuration of xf86-video-intel 2.7.1:";; esac cat <<\_ACEOF Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer - --enable-static[=PKGS] - build static libraries [default=no] - --enable-shared[=PKGS] - build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=no] + --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-dependency-tracking speeds up one-time build @@ -1084,8 +1661,7 @@ Optional Packages: --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] - --with-tags[=TAGS] - include additional configurations [automatic] + --with-tags[=TAGS] include additional configurations [automatic] --with-xorg-module-dir=DIR Default xorg module directory [default=$libdir/xorg/modules] @@ -1099,8 +1675,9 @@ Some influential environment variables: CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> + LIBS libraries to pass to the linker, e.g. -l<library> + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if + you have headers in a nonstandard directory <include dir> CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags @@ -1110,136 +1687,116 @@ Some influential environment variables: PKG_CONFIG path to pkg-config utility XORG_CFLAGS C compiler flags for XORG, overriding pkg-config XORG_LIBS linker flags for XORG, overriding pkg-config + SERVER_1_5_CFLAGS + C compiler flags for SERVER_1_5, overriding pkg-config + SERVER_1_5_LIBS + linker flags for SERVER_1_5, overriding pkg-config PCIACCESS_CFLAGS C compiler flags for PCIACCESS, overriding pkg-config PCIACCESS_LIBS linker flags for PCIACCESS, overriding pkg-config + DRM_CFLAGS C compiler flags for DRM, overriding pkg-config + DRM_LIBS linker flags for DRM, overriding pkg-config DRI_CFLAGS C compiler flags for DRI, overriding pkg-config DRI_LIBS linker flags for DRI, overriding pkg-config + DRM_MODE_CFLAGS + C compiler flags for DRM_MODE, overriding pkg-config + DRM_MODE_LIBS + linker flags for DRM_MODE, overriding pkg-config XVMCLIB_CFLAGS C compiler flags for XVMCLIB, overriding pkg-config XVMCLIB_LIBS linker flags for XVMCLIB, overriding pkg-config + XEXT_CFLAGS C compiler flags for XEXT, overriding pkg-config + XEXT_LIBS linker flags for XEXT, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>. _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue ac_builddir=. -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -xf86-video-intel configure 2.4.3 -generated by GNU Autoconf 2.59 +xf86-video-intel configure 2.7.1 +generated by GNU Autoconf 2.62 -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF +cat >config.log <<_ACEOF 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.4.3, which was -generated by GNU Autoconf 2.59. Invocation command line was +It was created by xf86-video-intel $as_me 2.7.1, which was +generated by GNU Autoconf 2.62. Invocation command line was $ $0 $@ _ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -1258,7 +1815,7 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -1270,8 +1827,9 @@ for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" + $as_echo "PATH: $as_dir" done +IFS=$as_save_IFS } >&5 @@ -1293,7 +1851,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1304,8 +1861,8 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; @@ -1326,9 +1883,7 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1339,8 +1894,8 @@ $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1353,20 +1908,35 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1377,22 +1947,28 @@ _ASBOX echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1404,26 +1980,24 @@ _ASBOX ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h # Predefined preprocessor variables. @@ -1453,18 +2027,24 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} + { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi @@ -1474,54 +2054,61 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1531,19 +2118,13 @@ echo "$as_me: current value: $ac_new_val" >&2;} fi done if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - @@ -1568,36 +2149,47 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - ac_config_headers="$ac_config_headers config.h" +ac_config_headers="$ac_config_headers config.h" ac_aux_dir= -for ac_dir in . $srcdir/.; do - if test -f $ac_dir/install-sh; then +for ac_dir in . "$srcdir"/.; do + if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break - elif test -f $ac_dir/install.sh; then + elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break - elif test -f $ac_dir/shtool; then + elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . $srcdir/." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in . $srcdir/." >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in . \"$srcdir\"/." >&5 +$as_echo "$as_me: error: cannot find install-sh or install.sh in . \"$srcdir\"/." >&2;} { (exit 1); exit 1; }; } fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + am__api_version="1.9" @@ -1614,11 +2206,12 @@ am__api_version="1.9" # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH @@ -1637,7 +2230,7 @@ case $as_dir/ in # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -1647,30 +2240,43 @@ case $as_dir/ in # program-specific install script used by HP pwplus--don't use. : else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac + done +IFS=$as_save_IFS +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is - # removed, or if the path is relative. + # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -1681,17 +2287,14 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" + program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` @@ -1702,8 +2305,8 @@ if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then @@ -1743,10 +2346,10 @@ for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. @@ -1757,54 +2360,58 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 + { $as_echo "$as_me:$LINENO: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$AWK" && break done -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF +SHELL = /bin/sh all: - @echo 'ac_maketemp="$(MAKE)"' + @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac rm -f conftest.make fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -1820,8 +2427,8 @@ rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi @@ -1837,7 +2444,7 @@ fi # Define the identity of the package. PACKAGE='xf86-video-intel' - VERSION='2.4.3' + VERSION='2.7.1' cat >>confdefs.h <<_ACEOF @@ -1875,10 +2482,10 @@ if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -1889,34 +2496,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -1927,27 +2536,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - STRIP=$ac_ct_STRIP + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi else STRIP="$ac_cv_prog_STRIP" fi @@ -1968,17 +2591,17 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' -echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 -echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 - # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +{ $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then - enableval="$enable_maintainer_mode" - USE_MAINTAINER_MODE=$enableval + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no -fi; - echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 -echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 +fi + + { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then @@ -1994,10 +2617,9 @@ fi # Checks for programs. -# Check whether --enable-static or --disable-static was given. +# Check whether --enable-static was given. if test "${enable_static+set}" = set; then - enableval="$enable_static" - p=${PACKAGE-default} + enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; @@ -2016,13 +2638,13 @@ if test "${enable_static+set}" = set; then esac else enable_static=no -fi; +fi + -# Check whether --enable-shared or --disable-shared was given. +# Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - p=${PACKAGE-default} + enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; @@ -2041,12 +2663,12 @@ if test "${enable_shared+set}" = set; then esac else enable_shared=yes -fi; +fi + -# Check whether --enable-fast-install or --disable-fast-install was given. +# Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then - enableval="$enable_fast_install" - p=${PACKAGE-default} + enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; @@ -2065,65 +2687,95 @@ if test "${enable_fast_install+set}" = set; then esac else enable_fast_install=yes -fi; +fi + # Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +$as_echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:$LINENO: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } +fi fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +$as_echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac DEPDIR="${am__leading_dot}deps" - ac_config_commands="$ac_config_commands depfiles" +ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} @@ -2133,8 +2785,8 @@ am__doit: .PHONY: am__doit END # If we don't find an include directive, just comment out the code. -echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none @@ -2161,15 +2813,15 @@ if test "$am__include" = "#"; then fi -echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6 +{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } rm -f confinc confmf -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +# Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" + enableval=$enable_dependency_tracking; +fi -fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' @@ -2194,10 +2846,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2208,34 +2860,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2246,38 +2900,53 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2288,76 +2957,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi + fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2369,17 +2998,18 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -2397,24 +3027,25 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2425,38 +3056,40 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2467,58 +3100,92 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF @@ -2537,111 +3204,146 @@ main () } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. break;; * ) break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else - echo "$as_me: failed program was:" >&5 + ac_file='' +fi + +{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables +$as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. + { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. +$as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } -rm -f a.out a.exe conftest$ac_cv_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will @@ -2650,32 +3352,31 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext break;; * ) break;; esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link + { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2693,39 +3394,46 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile +$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2746,50 +3454,54 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -2805,38 +3517,121 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -2852,12 +3647,12 @@ else CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + $as_echo_n "(cached) " >&6 else - ac_cv_prog_cc_stdc=no + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -2891,12 +3686,17 @@ static char *f (char * (*g) (char **, int), char **p, ...) /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get + as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ + that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2911,205 +3711,58 @@ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; return 0; } _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest.$ac_ext conftest.$ac_objext +rm -f conftest.$ac_ext CC=$ac_save_CC fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include <stdlib.h> -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3118,10 +3771,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3208,8 +3861,8 @@ else fi fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type @@ -3225,10 +3878,10 @@ else fi -echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 -echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${lt_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. @@ -3239,7 +3892,7 @@ do test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done @@ -3281,37 +3934,156 @@ fi SED=$lt_cv_path_SED -echo "$as_me:$LINENO: result: $SED" >&5 -echo "${ECHO_T}$SED" >&6 +{ $as_echo "$as_me:$LINENO: result: $SED" >&5 +$as_echo "$SED" >&6; } + +{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + $as_echo_n "(cached) " >&6 else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_EGREP=$EGREP fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" -# Check whether --with-gnu-ld or --without-gnu-ld was given. + +# Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no -fi; +fi + ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -3340,14 +4112,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 ;; esac elif test "$with_gnu_ld" = yes; then - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -3377,19 +4149,19 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 + { $as_echo "$as_me:$LINENO: result: $LD" >&5 +$as_echo "$LD" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} +test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in @@ -3401,20 +4173,20 @@ case `$LD -v 2>&1 </dev/null` in ;; esac fi -echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld -echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi -echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; @@ -3431,10 +4203,10 @@ case $host_os in ;; esac -echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 -echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +$as_echo_n "checking for BSD-compatible nm... " >&6; } if test "${lt_cv_path_NM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. @@ -3480,25 +4252,25 @@ else test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi -echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 -echo "${ECHO_T}$lt_cv_path_NM" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } NM="$lt_cv_path_NM" -echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } else - echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6 + { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } fi -echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 -echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= @@ -3681,8 +4453,8 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) esac fi -echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown @@ -3700,11 +4472,11 @@ LTCFLAGS=${LTCFLAGS-"$CFLAGS"} compiler=$CC -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +# Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" + enableval=$enable_libtool_lock; +fi -fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good @@ -3716,7 +4488,7 @@ ia64-*-hpux*) if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) @@ -3731,11 +4503,11 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 3734 "configure"' > conftest.$ac_ext + echo '#line 4506 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in @@ -3773,7 +4545,7 @@ s390*-*linux*|sparc*-*linux*) if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) @@ -3823,10 +4595,10 @@ s390*-*linux*|sparc*-*linux*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" - echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -3850,35 +4622,36 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_cv_cc_needs_belf=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -lt_cv_cc_needs_belf=no + lt_cv_cc_needs_belf=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -3887,8 +4660,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" @@ -3900,7 +4673,7 @@ sparc*-*solaris*) if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) @@ -3929,15 +4702,15 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" @@ -3964,35 +4737,35 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -4002,34 +4775,34 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -4047,8 +4820,8 @@ fi else ac_cv_prog_CPP=$CPP fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 +{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 +$as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do @@ -4071,35 +4844,35 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -4109,34 +4882,34 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -4145,9 +4918,9 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check + { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi @@ -4159,10 +4932,10 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -4184,35 +4957,32 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -4268,6 +5038,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ctype.h> +#include <stdlib.h> #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -4287,36 +5058,50 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -4338,11 +5123,11 @@ fi for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -4355,41 +5140,41 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` = yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -4400,19 +5185,21 @@ done for ac_header in dlfcn.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4423,41 +5210,38 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -4466,101 +5250,106 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX ## ---------------------------------------------------------------------- ## ## Report this to https://bugs.freedesktop.org/enter_bug.cgi?product=xorg ## ## ---------------------------------------------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +if test `eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` = yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done -ac_ext=cc +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. @@ -4571,38 +5360,40 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 + { $as_echo "$as_me:$LINENO: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. @@ -4613,57 +5404,91 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$ac_ct_CXX" && break done -test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - CXX=$ac_ct_CXX + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi fi - + fi +fi # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 +$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -4684,50 +5509,54 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 -GXX=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -CXXFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -4743,160 +5572,137 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cxx_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_declaration -#include <stdlib.h> + int main () { -exit (42); + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_declaration + int main () { -exit (42); + ; return 0; } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -ac_ext=cc +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -4904,10 +5710,10 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -4994,8 +5800,8 @@ else fi fi -echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type @@ -5016,16 +5822,16 @@ fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then - ac_ext=cc + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" @@ -5052,35 +5858,35 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -5090,34 +5896,34 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -5135,8 +5941,8 @@ fi else ac_cv_prog_CXXCPP=$CXXCPP fi -echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6 +{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do @@ -5159,35 +5965,35 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi + rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers + # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -5197,34 +6003,34 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then # Broken: success on invalid input. continue else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi + rm -f conftest.err conftest.$ac_ext done @@ -5233,14 +6039,14 @@ rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else - { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check + { { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 -echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +$as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi -ac_ext=cc +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -5254,14 +6060,14 @@ ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then - for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$F77"; then ac_cv_prog_F77="$F77" # Let the user override the test. @@ -5272,38 +6078,40 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_F77="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi F77=$ac_cv_prog_F77 if test -n "$F77"; then - echo "$as_me:$LINENO: result: $F77" >&5 -echo "${ECHO_T}$F77" >&6 + { $as_echo "$as_me:$LINENO: result: $F77" >&5 +$as_echo "$F77" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$F77" && break done fi if test -z "$F77"; then ac_ct_F77=$F77 - for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_F77"; then ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. @@ -5314,50 +6122,84 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_F77="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_F77=$ac_cv_prog_ac_ct_F77 if test -n "$ac_ct_F77"; then - echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 -echo "${ECHO_T}$ac_ct_F77" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +$as_echo "$ac_ct_F77" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$ac_ct_F77" && break done - F77=$ac_ct_F77 + if test "x$ac_ct_F77" = x; then + F77="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + F77=$ac_ct_F77 + fi fi # Provide some information about the compiler. -echo "$as_me:5344:" \ - "checking for Fortran 77 compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 +$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -f a.out @@ -5365,10 +6207,10 @@ rm -f a.out # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F -echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } if test "${ac_cv_f77_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF program main @@ -5379,48 +6221,45 @@ else end _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_f77_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +$as_echo "$ac_cv_f77_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FFLAGS=${FFLAGS+set} ac_save_FFLAGS=$FFLAGS FFLAGS= -echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 -echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +$as_echo_n "checking whether $F77 accepts -g... " >&6; } if test "${ac_cv_prog_f77_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else FFLAGS=-g cat >conftest.$ac_ext <<_ACEOF @@ -5429,39 +6268,36 @@ cat >conftest.$ac_ext <<_ACEOF end _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_f77_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_f77_g=no + ac_cv_prog_f77_g=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 -echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +$as_echo "$ac_cv_prog_f77_g" >&6; } if test "$ac_test_FFLAGS" = set; then FFLAGS=$ac_save_FFLAGS elif test $ac_cv_prog_f77_g = yes; then @@ -5478,7 +6314,11 @@ else fi fi -G77=`test $ac_compiler_gnu = yes && echo yes` +if test $ac_compiler_gnu = yes; then + G77=yes +else + G77= +fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -5489,10 +6329,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! # find the maximum length of command line arguments -echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" @@ -5601,11 +6441,11 @@ else fi if test -n $lt_cv_sys_max_cmd_len ; then - echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 + { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } else - echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6 + { $as_echo "$as_me:$LINENO: result: none" >&5 +$as_echo "none" >&6; } fi @@ -5613,10 +6453,10 @@ fi # Check for command to grab the raw symbol name followed by C symbol from nm. -echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 -echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. @@ -5721,14 +6561,14 @@ EOF if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then @@ -5783,7 +6623,7 @@ EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi @@ -5818,17 +6658,17 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6 + { $as_echo "$as_me:$LINENO: result: failed" >&5 +$as_echo "failed" >&6; } else - echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6 + { $as_echo "$as_me:$LINENO: result: ok" >&5 +$as_echo "ok" >&6; } fi -echo "$as_me:$LINENO: checking for objdir" >&5 -echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null @@ -5840,8 +6680,8 @@ else fi rmdir .libs 2>/dev/null fi -echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 -echo "${ECHO_T}$lt_cv_objdir" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir @@ -5892,10 +6732,10 @@ with_gnu_ld="$lt_cv_prog_gnu_ld" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. @@ -5906,34 +6746,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then - echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 + { $as_echo "$as_me:$LINENO: result: $AR" >&5 +$as_echo "$AR" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. @@ -5944,27 +6786,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then - echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - AR=$ac_ct_AR + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi else AR="$ac_cv_prog_AR" fi @@ -5972,10 +6828,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -5986,34 +6842,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. @@ -6024,27 +6882,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - RANLIB=$ac_ct_RANLIB + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi else RANLIB="$ac_cv_prog_RANLIB" fi @@ -6052,10 +6924,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. @@ -6066,34 +6938,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. @@ -6104,27 +6978,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - STRIP=$ac_ct_STRIP + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi else STRIP="$ac_cv_prog_STRIP" fi @@ -6183,10 +7071,10 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then - echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -6236,19 +7124,19 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 + { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then - echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) @@ -6298,11 +7186,11 @@ fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 + { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi else @@ -6320,10 +7208,10 @@ esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. @@ -6334,34 +7222,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then - echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 -echo "${ECHO_T}$DSYMUTIL" >&6 + { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. @@ -6372,27 +7262,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_DSYMUTIL" && ac_cv_prog_ac_ct_DSYMUTIL=":" fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then - echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 -echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - DSYMUTIL=$ac_ct_DSYMUTIL + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi @@ -6400,10 +7304,10 @@ fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. @@ -6414,34 +7318,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then - echo "$as_me:$LINENO: result: $NMEDIT" >&5 -echo "${ECHO_T}$NMEDIT" >&6 + { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. @@ -6452,36 +7358,50 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_NMEDIT" && ac_cv_prog_ac_ct_NMEDIT=":" fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then - echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 -echo "${ECHO_T}$ac_ct_NMEDIT" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - NMEDIT=$ac_ct_NMEDIT + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi else NMEDIT="$ac_cv_prog_NMEDIT" fi - echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 -echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then @@ -6499,12 +7419,12 @@ else rm conftest.c fi fi -echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 -echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6 - echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 -echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS @@ -6526,41 +7446,42 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_cv_ld_exported_symbols_list=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -lt_cv_ld_exported_symbols_list=no + lt_cv_ld_exported_symbols_list=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi -echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 -echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[0123]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; @@ -6600,21 +7521,21 @@ echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6 enable_dlopen=no enable_win32_dll=no -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +# Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" + enableval=$enable_libtool_lock; +fi -fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes -# Check whether --with-pic or --without-pic was given. +# Check whether --with-pic was given. if test "${with_pic+set}" = set; then - withval="$with_pic" - pic_mode="$withval" + withval=$with_pic; pic_mode="$withval" else pic_mode=default -fi; +fi + test -z "$pic_mode" && pic_mode=default # Use C for the default configuration in the libtool script @@ -6672,10 +7593,10 @@ if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' -echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext @@ -6690,11 +7611,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6693: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7614: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6697: \$? = $ac_status" >&5 + echo "$as_me:7618: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -6707,8 +7628,8 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" @@ -6722,8 +7643,8 @@ lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' @@ -6954,18 +7875,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 esac fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext @@ -6980,11 +7901,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6983: $lt_compile\"" >&5) + (eval echo "\"\$as_me:7904: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6987: \$? = $ac_status" >&5 + echo "$as_me:7908: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -6997,8 +7918,8 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in @@ -7025,10 +7946,10 @@ esac # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" @@ -7053,8 +7974,8 @@ else LDFLAGS="$save_LDFLAGS" fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : @@ -7063,10 +7984,10 @@ else fi -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $rm -r conftest 2>/dev/null @@ -7084,11 +8005,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7087: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8008: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7091: \$? = $ac_status" >&5 + echo "$as_me:8012: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -7110,34 +8031,34 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= @@ -7562,27 +8483,26 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -7597,11 +8517,14 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -7630,27 +8553,26 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -7665,11 +8587,14 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -8120,8 +9045,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac fi -echo "$as_me:$LINENO: result: $ld_shlibs" >&5 -echo "${ECHO_T}$ld_shlibs" >&6 +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no # @@ -8141,15 +9066,15 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest @@ -8167,7 +9092,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no @@ -8179,16 +9104,16 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& cat conftest.err 1>&5 fi $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 -echo "${ECHO_T}$archive_cmds_need_lc" >&6 + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -8789,19 +9714,19 @@ uts4*) dynamic_linker=no ;; esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -8813,8 +9738,8 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var" || \ @@ -8838,8 +9763,8 @@ else # directories. hardcode_action=unsupported fi -echo "$as_me:$LINENO: result: $hardcode_action" >&5 -echo "${ECHO_T}$hardcode_action" >&6 +{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink; then # Fast installation is not supported @@ -8852,13 +9777,13 @@ fi striplib= old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in @@ -8866,16 +9791,16 @@ else if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi ;; *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } ;; esac fi @@ -8907,10 +9832,10 @@ else darwin*) # if libdl is installed we need to link against it - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" @@ -8921,56 +9846,57 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dlopen (); int main () { -dlopen (); +return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else @@ -8984,10 +9910,10 @@ fi ;; *) - echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 +$as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -9012,75 +9938,70 @@ cat >>conftest.$ac_ext <<_ACEOF #undef shl_load -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) +#if defined __stub_shl_load || defined __stub___shl_load choke me -#else -char (*f) () = shl_load; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != shl_load; +return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_shl_load=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_shl_load=no + ac_cv_func_shl_load=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +$as_echo "$ac_cv_func_shl_load" >&6; } if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" @@ -9091,63 +10012,64 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char shl_load (); int main () { -shl_load (); +return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dld_shl_load=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_dld_shl_load=no + ac_cv_lib_dld_shl_load=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else - echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 +$as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -9172,75 +10094,70 @@ cat >>conftest.$ac_ext <<_ACEOF #undef dlopen -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) +#if defined __stub_dlopen || defined __stub___dlopen choke me -#else -char (*f) () = dlopen; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != dlopen; +return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_func_dlopen=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_dlopen=no + ac_cv_func_dlopen=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +$as_echo "$ac_cv_func_dlopen" >&6; } if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" @@ -9251,63 +10168,64 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dlopen (); int main () { -dlopen (); +return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dl_dlopen=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_dl_dlopen=no + ac_cv_lib_dl_dlopen=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else - echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" @@ -9318,63 +10236,64 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dlopen (); int main () { -dlopen (); +return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_svld_dlopen=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_svld_dlopen=no + ac_cv_lib_svld_dlopen=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else - echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" @@ -9385,56 +10304,57 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char dld_link (); int main () { -dld_link (); +return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then ac_cv_lib_dld_dld_link=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_dld_dld_link=no + ac_cv_lib_dld_dld_link=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -9474,10 +10394,10 @@ fi save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" - echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross @@ -9485,7 +10405,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9488 "configure" +#line 10408 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -9551,7 +10471,7 @@ EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -9569,15 +10489,15 @@ rm -fr conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross @@ -9585,7 +10505,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9588 "configure" +#line 10508 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -9651,7 +10571,7 @@ EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? @@ -9669,8 +10589,8 @@ rm -fr conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" @@ -9692,13 +10612,13 @@ fi # Report which library types will actually be built -echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6 +{ $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } -echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -9718,15 +10638,15 @@ aix[4-9]*) fi ;; esac -echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6 +{ $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } -echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes -echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6 +{ $as_echo "$as_me:$LINENO: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } # The else clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh @@ -9819,8 +10739,8 @@ if test -f "$ltmain"; then cfgfile="${ofile}T" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 $rm -f "$cfgfile" - { echo "$as_me:$LINENO: creating $ofile" >&5 -echo "$as_me: creating $ofile" >&6;} + { $as_echo "$as_me:$LINENO: creating $ofile" >&5 +$as_echo "$as_me: creating $ofile" >&6;} cat <<__EOF__ >> "$cfgfile" #! $SHELL @@ -10224,26 +11144,26 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" -# Check whether --with-tags or --without-tags was given. +# Check whether --with-tags was given. if test "${with_tags+set}" = set; then - withval="$with_tags" - tagnames="$withval" -fi; + withval=$with_tags; tagnames="$withval" +fi + if test -f "$ltmain" && test -n "$tagnames"; then if test ! -f "${ofile}"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} fi if test -z "$LTCC"; then eval "`$SHELL ${ofile} --config | grep '^LTCC='`" if test -z "$LTCC"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} else - { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 -echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +$as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} fi fi if test -z "$LTCFLAGS"; then @@ -10260,16 +11180,16 @@ echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} # Check whether tagname contains only valid characters case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in "") ;; - *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 -echo "$as_me: error: invalid tag name: $tagname" >&2;} + *) { { $as_echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +$as_echo "$as_me: error: invalid tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null then - { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 -echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { { $as_echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +$as_echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} { (exit 1); exit 1; }; } fi @@ -10282,7 +11202,7 @@ echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then - ac_ext=cc + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -10402,18 +11322,18 @@ if test "$GXX" = yes; then # Set up default GNU C++ configuration -# Check whether --with-gnu-ld or --without-gnu-ld was given. +# Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no -fi; +fi + ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -10442,14 +11362,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 ;; esac elif test "$with_gnu_ld" = yes; then - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR @@ -10479,19 +11399,19 @@ fi LD="$lt_cv_path_LD" if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 + { $as_echo "$as_me:$LINENO: result: $LD" >&5 +$as_echo "$LD" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} +test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in @@ -10503,8 +11423,8 @@ case `$LD -v 2>&1 </dev/null` in ;; esac fi -echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld @@ -10554,8 +11474,8 @@ else fi # PORTME: fill in a description of your system's C++ link characteristics -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) @@ -10667,27 +11587,26 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -10702,11 +11621,14 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -10736,27 +11658,26 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -10771,11 +11692,14 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -11504,8 +12428,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ld_shlibs_CXX=no ;; esac -echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6 +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" @@ -11524,7 +12448,7 @@ EOF if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. @@ -11680,8 +12604,8 @@ lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then @@ -11964,18 +12888,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 esac fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext @@ -11990,11 +12914,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11993: $lt_compile\"" >&5) + (eval echo "\"\$as_me:12917: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:11997: \$? = $ac_status" >&5 + echo "$as_me:12921: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -12007,8 +12931,8 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in @@ -12035,10 +12959,10 @@ esac # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" @@ -12063,8 +12987,8 @@ else LDFLAGS="$save_LDFLAGS" fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : @@ -12073,10 +12997,10 @@ else fi -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $rm -r conftest 2>/dev/null @@ -12094,11 +13018,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:12097: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13021: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:12101: \$? = $ac_status" >&5 + echo "$as_me:13025: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12120,34 +13044,34 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in @@ -12172,8 +13096,8 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6 +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no # @@ -12193,15 +13117,15 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest @@ -12219,7 +13143,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no @@ -12231,16 +13155,16 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& cat conftest.err 1>&5 fi $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +$as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -12789,19 +13713,19 @@ uts4*) dynamic_linker=no ;; esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -12813,8 +13737,8 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || \ test -n "$runpath_var_CXX" || \ @@ -12838,8 +13762,8 @@ else # directories. hardcode_action_CXX=unsupported fi -echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 -echo "${ECHO_T}$hardcode_action_CXX" >&6 +{ $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink; then # Fast installation is not supported @@ -13377,13 +14301,13 @@ done cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6 +{ $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } -echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and @@ -13402,15 +14326,15 @@ aix[4-9]*) fi ;; esac -echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6 +{ $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } -echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes -echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6 +{ $as_echo "$as_me:$LINENO: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } GCC_F77="$G77" LD_F77="$LD" @@ -13419,8 +14343,8 @@ lt_prog_compiler_wl_F77= lt_prog_compiler_pic_F77= lt_prog_compiler_static_F77= -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_F77='-Wl,' @@ -13651,18 +14575,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 esac fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +$as_echo "$lt_prog_compiler_pic_F77" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_F77"; then -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_F77=no ac_outfile=conftest.$ac_objext @@ -13677,11 +14601,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13680: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14604: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13684: \$? = $ac_status" >&5 + echo "$as_me:14608: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -13694,8 +14618,8 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then case $lt_prog_compiler_pic_F77 in @@ -13722,10 +14646,10 @@ esac # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" -echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_F77=no save_LDFLAGS="$LDFLAGS" @@ -13750,8 +14674,8 @@ else LDFLAGS="$save_LDFLAGS" fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then : @@ -13760,10 +14684,10 @@ else fi -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_F77=no $rm -r conftest 2>/dev/null @@ -13781,11 +14705,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13784: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14708: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13788: \$? = $ac_status" >&5 + echo "$as_me:14712: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -13807,34 +14731,34 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_F77= @@ -14249,27 +15173,26 @@ _LT_EOF end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -14284,11 +15207,14 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -14307,27 +15233,26 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi end _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -14342,11 +15267,14 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -14797,8 +15725,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac fi -echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 -echo "${ECHO_T}$ld_shlibs_F77" >&6 +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +$as_echo "$ld_shlibs_F77" >&6; } test "$ld_shlibs_F77" = no && can_build_shared=no # @@ -14818,15 +15746,15 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest @@ -14844,7 +15772,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_F77=no @@ -14856,16 +15784,16 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& cat conftest.err 1>&5 fi $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +$as_echo "$archive_cmds_need_lc_F77" >&6; } ;; esac fi ;; esac -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -15414,19 +16342,19 @@ uts4*) dynamic_linker=no ;; esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -15438,8 +16366,8 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_F77= if test -n "$hardcode_libdir_flag_spec_F77" || \ test -n "$runpath_var_F77" || \ @@ -15463,8 +16391,8 @@ else # directories. hardcode_action_F77=unsupported fi -echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 -echo "${ECHO_T}$hardcode_action_F77" >&6 +{ $as_echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +$as_echo "$hardcode_action_F77" >&6; } if test "$hardcode_action_F77" = relink; then # Fast installation is not supported @@ -15907,7 +16835,6 @@ CC="$lt_save_CC" if test -n "$GCJ" && test "X$GCJ" != "Xno"; then - # Source file extension for Java test sources. ac_ext=java @@ -15975,10 +16902,10 @@ if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' -echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext @@ -15993,11 +16920,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15996: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16923: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16000: \$? = $ac_status" >&5 + echo "$as_me:16927: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16010,8 +16937,8 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" @@ -16025,8 +16952,8 @@ lt_prog_compiler_wl_GCJ= lt_prog_compiler_pic_GCJ= lt_prog_compiler_static_GCJ= -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl_GCJ='-Wl,' @@ -16257,18 +17184,18 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 esac fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +$as_echo "$lt_prog_compiler_pic_GCJ" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_GCJ"; then -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_GCJ=no ac_outfile=conftest.$ac_objext @@ -16283,11 +17210,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16286: $lt_compile\"" >&5) + (eval echo "\"\$as_me:17213: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:16290: \$? = $ac_status" >&5 + echo "$as_me:17217: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16300,8 +17227,8 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then case $lt_prog_compiler_pic_GCJ in @@ -16328,10 +17255,10 @@ esac # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" -echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_GCJ=no save_LDFLAGS="$LDFLAGS" @@ -16356,8 +17283,8 @@ else LDFLAGS="$save_LDFLAGS" fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then : @@ -16366,10 +17293,10 @@ else fi -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_GCJ=no $rm -r conftest 2>/dev/null @@ -16387,11 +17314,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16390: $lt_compile\"" >&5) + (eval echo "\"\$as_me:17317: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16394: \$? = $ac_status" >&5 + echo "$as_me:17321: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -16413,34 +17340,34 @@ else $rm conftest* fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_GCJ= @@ -16865,27 +17792,26 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -16900,11 +17826,14 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -16933,27 +17862,26 @@ main () } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { @@ -16968,11 +17896,14 @@ if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi @@ -17423,8 +18354,8 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi esac fi -echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 -echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +$as_echo "$ld_shlibs_GCJ" >&6; } test "$ld_shlibs_GCJ" = no && can_build_shared=no # @@ -17444,15 +18375,15 @@ x|xyes) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $rm conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest @@ -17470,7 +18401,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_GCJ=no @@ -17482,16 +18413,16 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >& cat conftest.err 1>&5 fi $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +$as_echo "$archive_cmds_need_lc_GCJ" >&6; } ;; esac fi ;; esac -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= @@ -18040,19 +18971,19 @@ uts4*) dynamic_linker=no ;; esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" fi sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" fi @@ -18064,8 +18995,8 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_GCJ= if test -n "$hardcode_libdir_flag_spec_GCJ" || \ test -n "$runpath_var_GCJ" || \ @@ -18089,8 +19020,8 @@ else # directories. hardcode_action_GCJ=unsupported fi -echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 -echo "${ECHO_T}$hardcode_action_GCJ" >&6 +{ $as_echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +$as_echo "$hardcode_action_GCJ" >&6; } if test "$hardcode_action_GCJ" = relink; then # Fast installation is not supported @@ -18532,7 +19463,6 @@ CC="$lt_save_CC" RC) - # Source file extension for RC test sources. ac_ext=rc @@ -19014,8 +19944,8 @@ CC="$lt_save_CC" ;; *) - { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 -echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { { $as_echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +$as_echo "$as_me: error: Unsupported tag name: $tagname" >&2;} { (exit 1); exit 1; }; } ;; esac @@ -19034,8 +19964,8 @@ echo "$as_me: error: Unsupported tag name: $tagname" >&2;} chmod +x "$ofile" else rm -f "${ofile}T" - { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 -echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { { $as_echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +$as_echo "$as_me: error: unable to update list of available tagged configurations." >&2;} { (exit 1); exit 1; }; } fi fi @@ -19075,10 +20005,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Josh Triplett <josh@freedesktop.org> # Extract the first word of "bash", so it can be a program name with args. set dummy bash; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_DOLT_BASH+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else case $DOLT_BASH in [\\/]* | ?:[\\/]*) @@ -19091,33 +20021,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_DOLT_BASH="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS ;; esac fi DOLT_BASH=$ac_cv_path_DOLT_BASH - if test -n "$DOLT_BASH"; then - echo "$as_me:$LINENO: result: $DOLT_BASH" >&5 -echo "${ECHO_T}$DOLT_BASH" >&6 + { $as_echo "$as_me:$LINENO: result: $DOLT_BASH" >&5 +$as_echo "$DOLT_BASH" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi -echo "$as_me:$LINENO: checking if libtool sucks" >&5 -echo $ECHO_N "checking if libtool sucks... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: yup, it does" >&5 -echo "${ECHO_T}yup, it does" >&6 -echo "$as_me:$LINENO: checking if dolt supports this host" >&5 -echo $ECHO_N "checking if dolt supports this host... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking if libtool sucks" >&5 +$as_echo_n "checking if libtool sucks... " >&6; } +{ $as_echo "$as_me:$LINENO: result: yup, it does" >&5 +$as_echo "yup, it does" >&6; } +{ $as_echo "$as_me:$LINENO: checking if dolt supports this host" >&5 +$as_echo_n "checking if dolt supports this host... " >&6; } dolt_supported=yes if test x$DOLT_BASH = x; then dolt_supported=no @@ -19131,13 +20062,13 @@ amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*) ;; *) dolt_supported=no ;; esac if test x$dolt_supported = xno ; then - echo "$as_me:$LINENO: result: no, falling back to libtool" >&5 -echo "${ECHO_T}no, falling back to libtool" >&6 + { $as_echo "$as_me:$LINENO: result: no, falling back to libtool" >&5 +$as_echo "no, falling back to libtool" >&6; } LTCOMPILE='$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)' LTCXXCOMPILE='$(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)' else - echo "$as_me:$LINENO: result: yes, replacing libtool" >&5 -echo "${ECHO_T}yes, replacing libtool" >&6 + { $as_echo "$as_me:$LINENO: result: yes, replacing libtool" >&5 +$as_echo "yes, replacing libtool" >&6; } cat <<__DOLTCOMPILE__EOF__ >doltcompile #!$DOLT_BASH @@ -19242,10 +20173,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -19256,34 +20187,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -19294,38 +20227,53 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -19336,76 +20284,36 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi + fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -19417,17 +20325,18 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -19445,24 +20354,25 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -19473,38 +20383,40 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -19515,64 +20427,98 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -19593,50 +20539,54 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -19652,38 +20602,121 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -19699,12 +20732,12 @@ else CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + $as_echo_n "(cached) " >&6 else - ac_cv_prog_cc_stdc=no + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -19738,12 +20771,17 @@ static char *f (char * (*g) (char **, int), char **p, ...) /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get + as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ + that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -19758,205 +20796,58 @@ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; return 0; } _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + fi -rm -f conftest.err conftest.$ac_objext + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest.$ac_ext conftest.$ac_objext +rm -f conftest.$ac_ext CC=$ac_save_CC fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include <stdlib.h> -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -19965,10 +20856,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -20055,8 +20946,8 @@ else fi fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type @@ -20073,16 +20964,16 @@ fi if test "x$CC" != xcc; then - echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 -echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 +$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else - echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 -echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 +$as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi -set dummy $CC; ac_cc=`echo $2 | +set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -20102,37 +20993,64 @@ _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. -ac_try='$CC -c conftest.$ac_ext -o conftest.$ac_objext >&5' -if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 +ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' +rm -f conftest2.* +if { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + test -f conftest2.$ac_objext && { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_try='cc -c conftest.$ac_ext -o conftest.$ac_objext >&5' - if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' + rm -f conftest2.* + if { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + test -f conftest2.$ac_objext && { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # cc works too. @@ -20146,15 +21064,15 @@ then else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi -rm -f conftest* +rm -f core conftest* fi -if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } cat >>confdefs.h <<\_ACEOF #define NO_MINUS_C_MINUS_O 1 @@ -20178,10 +21096,10 @@ fi # Extract the first word of "intel-gen4asm", so it can be a program name with args. set dummy intel-gen4asm; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_gen4asm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else if test -n "$gen4asm"; then ac_cv_prog_gen4asm="$gen4asm" # Let the user override the test. @@ -20192,28 +21110,30 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_gen4asm="yes" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS test -z "$ac_cv_prog_gen4asm" && ac_cv_prog_gen4asm="no" fi fi gen4asm=$ac_cv_prog_gen4asm if test -n "$gen4asm"; then - echo "$as_me:$LINENO: result: $gen4asm" >&5 -echo "${ECHO_T}$gen4asm" >&6 + { $as_echo "$as_me:$LINENO: result: $gen4asm" >&5 +$as_echo "$gen4asm" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + if test x$gen4asm = xyes; then HAVE_GEN4ASM_TRUE= HAVE_GEN4ASM_FALSE='#' @@ -20226,19 +21146,21 @@ fi for ac_header in sys/mman.h do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } else # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -20249,41 +21171,38 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_header_compiler=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no + ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } # Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -20292,81 +21211,82 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then ac_header_preproc=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi + rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( cat <<\_ASBOX ## ---------------------------------------------------------------------- ## ## Report this to https://bugs.freedesktop.org/enter_bug.cgi?product=xorg ## ## ---------------------------------------------------------------------- ## _ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 + ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then +if test `eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` = yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi @@ -20376,11 +21296,11 @@ done for ac_func in mprotect do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -20405,71 +21325,69 @@ cat >>conftest.$ac_ext <<_ACEOF #undef $ac_func -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" -{ #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +#if defined __stub_$ac_func || defined __stub___$ac_func choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} #endif int main () { -return f != $ac_func; +return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then eval "$as_ac_var=yes" else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -eval "$as_ac_var=no" + eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` = yes; then cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi @@ -20480,46 +21398,46 @@ done -# Check whether --with-xorg-module-dir or --without-xorg-module-dir was given. +# Check whether --with-xorg-module-dir was given. if test "${with_xorg_module_dir+set}" = set; then - withval="$with_xorg_module_dir" - moduledir="$withval" + withval=$with_xorg_module_dir; moduledir="$withval" else moduledir="$libdir/xorg/modules" -fi; +fi -# Check whether --enable-dri or --disable-dri was given. + +# Check whether --enable-dri was given. if test "${enable_dri+set}" = set; then - enableval="$enable_dri" - DRI="$enableval" + enableval=$enable_dri; DRI="$enableval" else DRI=auto -fi; +fi -# Check whether --enable-video-debug or --disable-video-debug was given. + +# Check whether --enable-video-debug was given. if test "${enable_video_debug+set}" = set; then - enableval="$enable_video_debug" - VIDEO_DEBUG="$enableval" + enableval=$enable_video_debug; VIDEO_DEBUG="$enableval" else VIDEO_DEBUG=no -fi; +fi -# Check whether --with-xserver-source or --without-xserver-source was given. + +# Check whether --with-xserver-source was given. if test "${with_xserver_source+set}" = set; then - withval="$with_xserver_source" - XSERVER_SOURCE="$withval" + withval=$with_xserver_source; XSERVER_SOURCE="$withval" else XSERVER_SOURCE="" -fi; +fi -# Check whether --enable-xvmc or --disable-xvmc was given. + +# Check whether --enable-xvmc was given. if test "${enable_xvmc+set}" = set; then - enableval="$enable_xvmc" - XVMC="$enableval" + enableval=$enable_xvmc; XVMC="$enableval" else XVMC=auto -fi; +fi + # Checks for extensions @@ -20546,40 +21464,37 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then _EXT_CHECK=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -_EXT_CHECK=no + _EXT_CHECK=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$SAVE_CFLAGS" - echo "$as_me:$LINENO: checking if XINERAMA is defined" >&5 -echo $ECHO_N "checking if XINERAMA is defined... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 -echo "${ECHO_T}$_EXT_CHECK" >&6 + { $as_echo "$as_me:$LINENO: checking if XINERAMA is defined" >&5 +$as_echo_n "checking if XINERAMA is defined... " >&6; } + { $as_echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 +$as_echo "$_EXT_CHECK" >&6; } if test "$_EXT_CHECK" != no; then REQUIRED_MODULES="$REQUIRED_MODULES xineramaproto" fi @@ -20608,40 +21523,37 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then _EXT_CHECK=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -_EXT_CHECK=no + _EXT_CHECK=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$SAVE_CFLAGS" - echo "$as_me:$LINENO: checking if RANDR is defined" >&5 -echo $ECHO_N "checking if RANDR is defined... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 -echo "${ECHO_T}$_EXT_CHECK" >&6 + { $as_echo "$as_me:$LINENO: checking if RANDR is defined" >&5 +$as_echo_n "checking if RANDR is defined... " >&6; } + { $as_echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 +$as_echo "$_EXT_CHECK" >&6; } if test "$_EXT_CHECK" != no; then REQUIRED_MODULES="$REQUIRED_MODULES randrproto" fi @@ -20670,40 +21582,37 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then _EXT_CHECK=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -_EXT_CHECK=no + _EXT_CHECK=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$SAVE_CFLAGS" - echo "$as_me:$LINENO: checking if RENDER is defined" >&5 -echo $ECHO_N "checking if RENDER is defined... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 -echo "${ECHO_T}$_EXT_CHECK" >&6 + { $as_echo "$as_me:$LINENO: checking if RENDER is defined" >&5 +$as_echo_n "checking if RENDER is defined... " >&6; } + { $as_echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 +$as_echo "$_EXT_CHECK" >&6; } if test "$_EXT_CHECK" != no; then REQUIRED_MODULES="$REQUIRED_MODULES renderproto" fi @@ -20732,40 +21641,37 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then _EXT_CHECK=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -_EXT_CHECK=no + _EXT_CHECK=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$SAVE_CFLAGS" - echo "$as_me:$LINENO: checking if XF86DRI is defined" >&5 -echo $ECHO_N "checking if XF86DRI is defined... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 -echo "${ECHO_T}$_EXT_CHECK" >&6 + { $as_echo "$as_me:$LINENO: checking if XF86DRI is defined" >&5 +$as_echo_n "checking if XF86DRI is defined... " >&6; } + { $as_echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 +$as_echo "$_EXT_CHECK" >&6; } if test "$_EXT_CHECK" != no; then REQUIRED_MODULES="$REQUIRED_MODULES xextproto x11" fi @@ -20794,40 +21700,37 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then _EXT_CHECK=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -_EXT_CHECK=no + _EXT_CHECK=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$SAVE_CFLAGS" - echo "$as_me:$LINENO: checking if DPMSExtension is defined" >&5 -echo $ECHO_N "checking if DPMSExtension is defined... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 -echo "${ECHO_T}$_EXT_CHECK" >&6 + { $as_echo "$as_me:$LINENO: checking if DPMSExtension is defined" >&5 +$as_echo_n "checking if DPMSExtension is defined... " >&6; } + { $as_echo "$as_me:$LINENO: result: $_EXT_CHECK" >&5 +$as_echo "$_EXT_CHECK" >&6; } if test "$_EXT_CHECK" != no; then REQUIRED_MODULES="$REQUIRED_MODULES xextproto" fi @@ -20840,10 +21743,10 @@ if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) @@ -20856,36 +21759,37 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG - if test -n "$PKG_CONFIG"; then - echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 -echo "${ECHO_T}$PKG_CONFIG" >&6 + { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) @@ -20898,28 +21802,42 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG - if test -n "$ac_pt_PKG_CONFIG"; then - echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 -echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 + { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi - PKG_CONFIG=$ac_pt_PKG_CONFIG + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi @@ -20927,32 +21845,32 @@ fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 - echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 -echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6 + { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no -echo "$as_me:$LINENO: checking for XORG" >&5 -echo $ECHO_N "checking for XORG... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for XORG" >&5 +$as_echo_n "checking for XORG... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$XORG_CFLAGS"; then pkg_cv_XORG_CFLAGS="$XORG_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server xproto fontsproto \$REQUIRED_MODULES\"") >&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server xproto fontsproto \$REQUIRED_MODULES\"") >&5 ($PKG_CONFIG --exists --print-errors "xorg-server xproto fontsproto $REQUIRED_MODULES") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_XORG_CFLAGS=`$PKG_CONFIG --cflags "xorg-server xproto fontsproto $REQUIRED_MODULES" 2>/dev/null` else @@ -20967,10 +21885,10 @@ if test -n "$PKG_CONFIG"; then pkg_cv_XORG_LIBS="$XORG_LIBS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server xproto fontsproto \$REQUIRED_MODULES\"") >&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server xproto fontsproto \$REQUIRED_MODULES\"") >&5 ($PKG_CONFIG --exists --print-errors "xorg-server xproto fontsproto $REQUIRED_MODULES") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_XORG_LIBS=`$PKG_CONFIG --libs "xorg-server xproto fontsproto $REQUIRED_MODULES" 2>/dev/null` else @@ -20998,7 +21916,7 @@ fi # Put the nasty error message in config.log where it belongs echo "$XORG_PKG_ERRORS" >&5 - { { echo "$as_me:$LINENO: error: Package requirements (xorg-server xproto fontsproto $REQUIRED_MODULES) were not met: + { { $as_echo "$as_me:$LINENO: error: Package requirements (xorg-server xproto fontsproto $REQUIRED_MODULES) were not met: $XORG_PKG_ERRORS @@ -21009,7 +21927,7 @@ Alternatively, you may set the environment variables XORG_CFLAGS and XORG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -echo "$as_me: error: Package requirements (xorg-server xproto fontsproto $REQUIRED_MODULES) were not met: +$as_echo "$as_me: error: Package requirements (xorg-server xproto fontsproto $REQUIRED_MODULES) were not met: $XORG_PKG_ERRORS @@ -21022,7 +21940,7 @@ See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it + { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -21032,7 +21950,7 @@ See the pkg-config man page for more details. To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>. See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +$as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -21046,19 +21964,101 @@ See \`config.log' for more details." >&2;} else XORG_CFLAGS=$pkg_cv_XORG_CFLAGS XORG_LIBS=$pkg_cv_XORG_LIBS - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } : fi + + +pkg_failed=no +{ $as_echo "$as_me:$LINENO: checking for SERVER_1_5" >&5 +$as_echo_n "checking for SERVER_1_5... " >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$SERVER_1_5_CFLAGS"; then + pkg_cv_SERVER_1_5_CFLAGS="$SERVER_1_5_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server >= 1.5\"") >&5 + ($PKG_CONFIG --exists --print-errors "xorg-server >= 1.5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_SERVER_1_5_CFLAGS=`$PKG_CONFIG --cflags "xorg-server >= 1.5" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$SERVER_1_5_LIBS"; then + pkg_cv_SERVER_1_5_LIBS="$SERVER_1_5_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server >= 1.5\"") >&5 + ($PKG_CONFIG --exists --print-errors "xorg-server >= 1.5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_SERVER_1_5_LIBS=`$PKG_CONFIG --libs "xorg-server >= 1.5" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SERVER_1_5_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xorg-server >= 1.5"` + else + SERVER_1_5_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xorg-server >= 1.5"` + fi + # Put the nasty error message in config.log where it belongs + echo "$SERVER_1_5_PKG_ERRORS" >&5 + + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + SERVER_1_5=no +elif test $pkg_failed = untried; then + SERVER_1_5=no +else + SERVER_1_5_CFLAGS=$pkg_cv_SERVER_1_5_CFLAGS + SERVER_1_5_LIBS=$pkg_cv_SERVER_1_5_LIBS + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + SERVER_1_5=yes +fi + +if test "$SERVER_1_5" = yes; then + +cat >>confdefs.h <<\_ACEOF +#define SERVER_1_5 1 +_ACEOF + +fi + sdkdir=$(pkg-config --variable=sdkdir xorg-server) +drm_cflags=$(pkg-config --cflags libdrm) # Checks for libraries. # Checks for header files. -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -21080,35 +22080,32 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_stdc=no + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -21164,6 +22161,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <ctype.h> +#include <stdlib.h> #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) @@ -21183,36 +22181,50 @@ main () for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); + return 2; + return 0; } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @@ -21222,16 +22234,21 @@ _ACEOF fi +save_CFLAGS="$CFLAGS" +CFLAGS="$XORG_CFLAGS $DRI_CFLAGS $drm_cflags" +CPPFLAGS="$XORG_CFLAGS $DRI_CFLAGS $drm_cflags" +{ $as_echo "$as_me:$LINENO: checking whether to include DRI support" >&5 +$as_echo_n "checking whether to include DRI support... " >&6; } if test x$DRI != xno; then - as_ac_File=`echo "ac_cv_file_${sdkdir}/dri.h" | $as_tr_sh` -echo "$as_me:$LINENO: checking for ${sdkdir}/dri.h" >&5 -echo $ECHO_N "checking for ${sdkdir}/dri.h... $ECHO_C" >&6 -if eval "test \"\${$as_ac_File+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + as_ac_File=`$as_echo "ac_cv_file_${sdkdir}/dri.h" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for ${sdkdir}/dri.h" >&5 +$as_echo_n "checking for ${sdkdir}/dri.h... " >&6; } +if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && - { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 +$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "${sdkdir}/dri.h"; then eval "$as_ac_File=yes" @@ -21239,23 +22256,26 @@ else eval "$as_ac_File=no" fi fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 -if test `eval echo '${'$as_ac_File'}'` = yes; then +ac_res=`eval 'as_val=${'$as_ac_File'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_File'} + $as_echo "$as_val"'` = yes; then have_dri_h="yes" else have_dri_h="no" fi - as_ac_File=`echo "ac_cv_file_${sdkdir}/sarea.h" | $as_tr_sh` -echo "$as_me:$LINENO: checking for ${sdkdir}/sarea.h" >&5 -echo $ECHO_N "checking for ${sdkdir}/sarea.h... $ECHO_C" >&6 -if eval "test \"\${$as_ac_File+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + as_ac_File=`$as_echo "ac_cv_file_${sdkdir}/sarea.h" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for ${sdkdir}/sarea.h" >&5 +$as_echo_n "checking for ${sdkdir}/sarea.h... " >&6; } +if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && - { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 +$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "${sdkdir}/sarea.h"; then eval "$as_ac_File=yes" @@ -21263,23 +22283,26 @@ else eval "$as_ac_File=no" fi fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 -if test `eval echo '${'$as_ac_File'}'` = yes; then +ac_res=`eval 'as_val=${'$as_ac_File'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_File'} + $as_echo "$as_val"'` = yes; then have_sarea_h="yes" else have_sarea_h="no" fi - as_ac_File=`echo "ac_cv_file_${sdkdir}/dristruct.h" | $as_tr_sh` -echo "$as_me:$LINENO: checking for ${sdkdir}/dristruct.h" >&5 -echo $ECHO_N "checking for ${sdkdir}/dristruct.h... $ECHO_C" >&6 -if eval "test \"\${$as_ac_File+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + as_ac_File=`$as_echo "ac_cv_file_${sdkdir}/dristruct.h" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for ${sdkdir}/dristruct.h" >&5 +$as_echo_n "checking for ${sdkdir}/dristruct.h... " >&6; } +if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && - { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 +$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "${sdkdir}/dristruct.h"; then eval "$as_ac_File=yes" @@ -21287,41 +22310,20 @@ else eval "$as_ac_File=no" fi fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 -if test `eval echo '${'$as_ac_File'}'` = yes; then +ac_res=`eval 'as_val=${'$as_ac_File'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_File'} + $as_echo "$as_val"'` = yes; then have_dristruct_h="yes" else have_dristruct_h="no" fi - as_ac_File=`echo "ac_cv_file_${sdkdir}/damage.h" | $as_tr_sh` -echo "$as_me:$LINENO: checking for ${sdkdir}/damage.h" >&5 -echo $ECHO_N "checking for ${sdkdir}/damage.h... $ECHO_C" >&6 -if eval "test \"\${$as_ac_File+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - test "$cross_compiling" = yes && - { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} - { (exit 1); exit 1; }; } -if test -r "${sdkdir}/damage.h"; then - eval "$as_ac_File=yes" -else - eval "$as_ac_File=no" -fi -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 -if test `eval echo '${'$as_ac_File'}'` = yes; then - have_damage_h="yes" -else - have_damage_h="no" -fi - fi -echo "$as_me:$LINENO: checking whether to include DRI support" >&5 -echo $ECHO_N "checking whether to include DRI support... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether to include DRI support" >&5 +$as_echo_n "checking whether to include DRI support... " >&6; } if test x$DRI = xauto; then if test "$have_dri_h" = yes -a \ "$have_sarea_h" = yes -a \ @@ -21331,15 +22333,13 @@ if test x$DRI = xauto; then DRI="no" fi fi -echo "$as_me:$LINENO: result: $DRI" >&5 -echo "${ECHO_T}$DRI" >&6 +{ $as_echo "$as_me:$LINENO: result: $DRI" >&5 +$as_echo "$DRI" >&6; } -save_CFLAGS="$CFLAGS" -CFLAGS="$XORG_CFLAGS" -echo "$as_me:$LINENO: checking for xf86Modes.h" >&5 -echo $ECHO_N "checking for xf86Modes.h... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for xf86Modes.h" >&5 +$as_echo_n "checking for xf86Modes.h... " >&6; } if test "${ac_cv_header_xf86Modes_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -21352,38 +22352,35 @@ cat >>conftest.$ac_ext <<_ACEOF #include <xf86Modes.h> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_header_xf86Modes_h=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_header_xf86Modes_h=no + ac_cv_header_xf86Modes_h=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_header_xf86Modes_h" >&5 -echo "${ECHO_T}$ac_cv_header_xf86Modes_h" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_xf86Modes_h" >&5 +$as_echo "$ac_cv_header_xf86Modes_h" >&6; } if test $ac_cv_header_xf86Modes_h = yes; then XMODES=yes else @@ -21391,10 +22388,10 @@ else fi -echo "$as_me:$LINENO: checking whether XSERVER_LIBPCIACCESS is declared" >&5 -echo $ECHO_N "checking whether XSERVER_LIBPCIACCESS is declared... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether XSERVER_LIBPCIACCESS is declared" >&5 +$as_echo_n "checking whether XSERVER_LIBPCIACCESS is declared... " >&6; } if test "${ac_cv_have_decl_XSERVER_LIBPCIACCESS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -21408,7 +22405,7 @@ int main () { #ifndef XSERVER_LIBPCIACCESS - char *p = (char *) XSERVER_LIBPCIACCESS; + (void) XSERVER_LIBPCIACCESS; #endif ; @@ -21416,38 +22413,35 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_XSERVER_LIBPCIACCESS=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_have_decl_XSERVER_LIBPCIACCESS=no + ac_cv_have_decl_XSERVER_LIBPCIACCESS=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_XSERVER_LIBPCIACCESS" >&5 -echo "${ECHO_T}$ac_cv_have_decl_XSERVER_LIBPCIACCESS" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_XSERVER_LIBPCIACCESS" >&5 +$as_echo "$ac_cv_have_decl_XSERVER_LIBPCIACCESS" >&6; } if test $ac_cv_have_decl_XSERVER_LIBPCIACCESS = yes; then XSERVER_LIBPCIACCESS=yes else @@ -21459,18 +22453,18 @@ CFLAGS="$save_CFLAGS" if test x$XSERVER_LIBPCIACCESS = xyes; then pkg_failed=no -echo "$as_me:$LINENO: checking for PCIACCESS" >&5 -echo $ECHO_N "checking for PCIACCESS... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for PCIACCESS" >&5 +$as_echo_n "checking for PCIACCESS... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$PCIACCESS_CFLAGS"; then pkg_cv_PCIACCESS_CFLAGS="$PCIACCESS_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pciaccess >= 0.10\"") >&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pciaccess >= 0.10\"") >&5 ($PKG_CONFIG --exists --print-errors "pciaccess >= 0.10") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PCIACCESS_CFLAGS=`$PKG_CONFIG --cflags "pciaccess >= 0.10" 2>/dev/null` else @@ -21485,10 +22479,10 @@ if test -n "$PKG_CONFIG"; then pkg_cv_PCIACCESS_LIBS="$PCIACCESS_LIBS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pciaccess >= 0.10\"") >&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pciaccess >= 0.10\"") >&5 ($PKG_CONFIG --exists --print-errors "pciaccess >= 0.10") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PCIACCESS_LIBS=`$PKG_CONFIG --libs "pciaccess >= 0.10" 2>/dev/null` else @@ -21516,7 +22510,7 @@ fi # Put the nasty error message in config.log where it belongs echo "$PCIACCESS_PKG_ERRORS" >&5 - { { echo "$as_me:$LINENO: error: Package requirements (pciaccess >= 0.10) were not met: + { { $as_echo "$as_me:$LINENO: error: Package requirements (pciaccess >= 0.10) were not met: $PCIACCESS_PKG_ERRORS @@ -21527,7 +22521,7 @@ Alternatively, you may set the environment variables PCIACCESS_CFLAGS and PCIACCESS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -echo "$as_me: error: Package requirements (pciaccess >= 0.10) were not met: +$as_echo "$as_me: error: Package requirements (pciaccess >= 0.10) were not met: $PCIACCESS_PKG_ERRORS @@ -21540,7 +22534,7 @@ See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it + { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -21550,7 +22544,7 @@ See the pkg-config man page for more details. To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>. See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +$as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -21564,25 +22558,25 @@ See \`config.log' for more details." >&2;} else PCIACCESS_CFLAGS=$pkg_cv_PCIACCESS_CFLAGS PCIACCESS_LIBS=$pkg_cv_PCIACCESS_LIBS - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } : fi else pkg_failed=no -echo "$as_me:$LINENO: checking for PCIACCESS" >&5 -echo $ECHO_N "checking for PCIACCESS... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for PCIACCESS" >&5 +$as_echo_n "checking for PCIACCESS... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$PCIACCESS_CFLAGS"; then pkg_cv_PCIACCESS_CFLAGS="$PCIACCESS_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pciaccess >= 0.10\"") >&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pciaccess >= 0.10\"") >&5 ($PKG_CONFIG --exists --print-errors "pciaccess >= 0.10") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PCIACCESS_CFLAGS=`$PKG_CONFIG --cflags "pciaccess >= 0.10" 2>/dev/null` else @@ -21597,10 +22591,10 @@ if test -n "$PKG_CONFIG"; then pkg_cv_PCIACCESS_LIBS="$PCIACCESS_LIBS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pciaccess >= 0.10\"") >&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"pciaccess >= 0.10\"") >&5 ($PKG_CONFIG --exists --print-errors "pciaccess >= 0.10") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_PCIACCESS_LIBS=`$PKG_CONFIG --libs "pciaccess >= 0.10" 2>/dev/null` else @@ -21628,16 +22622,16 @@ fi # Put the nasty error message in config.log where it belongs echo "$PCIACCESS_PKG_ERRORS" >&5 - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } have_libpciaccess=no elif test $pkg_failed = untried; then have_libpciaccess=no else PCIACCESS_CFLAGS=$pkg_cv_PCIACCESS_CFLAGS PCIACCESS_LIBS=$pkg_cv_PCIACCESS_LIBS - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } have_libpciaccess=yes fi fi @@ -21700,8 +22694,8 @@ if test -d "$XSERVER_SOURCE"; then fi if test "x$XMODES" = xyes; then - { echo "$as_me:$LINENO: X server has new mode code" >&5 -echo "$as_me: X server has new mode code" >&6;} + { $as_echo "$as_me:$LINENO: X server has new mode code" >&5 +$as_echo "$as_me: X server has new mode code" >&6;} cat >>confdefs.h <<\_ACEOF #define XMODES 1 @@ -21710,11 +22704,11 @@ _ACEOF XMODES_CFLAGS= else if test -f $srcdir/src/modes/xf86Modes.h -a -f $srcdir/src/parser/xf86Parser.h; then - { echo "$as_me:$LINENO: X server is missing new mode code, using local copy" >&5 -echo "$as_me: X server is missing new mode code, using local copy" >&6;} + { $as_echo "$as_me:$LINENO: X server is missing new mode code, using local copy" >&5 +$as_echo "$as_me: X server is missing new mode code, using local copy" >&6;} else - { { echo "$as_me:$LINENO: error: Must have X server >= 1.3 source tree for mode setting code. Please specify --with-xserver-source" >&5 -echo "$as_me: error: Must have X server >= 1.3 source tree for mode setting code. Please specify --with-xserver-source" >&2;} + { { $as_echo "$as_me:$LINENO: error: Must have X server >= 1.3 source tree for mode setting code. Please specify --with-xserver-source" >&5 +$as_echo "$as_me: error: Must have X server >= 1.3 source tree for mode setting code. Please specify --with-xserver-source" >&2;} { (exit 1); exit 1; }; } fi XMODES_CFLAGS='-DXF86_MODES_RENAME -I$(top_srcdir)/src -I$(top_srcdir)/src/modes -I$(top_srcdir)/src/parser' @@ -21725,10 +22719,10 @@ fi SAVE_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $XORG_CFLAGS" -echo "$as_me:$LINENO: checking whether xf86RotateFreeShadow is declared" >&5 -echo $ECHO_N "checking whether xf86RotateFreeShadow is declared... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking whether xf86RotateFreeShadow is declared" >&5 +$as_echo_n "checking whether xf86RotateFreeShadow is declared... " >&6; } if test "${ac_cv_have_decl_xf86RotateFreeShadow+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ @@ -21744,7 +22738,7 @@ int main () { #ifndef xf86RotateFreeShadow - char *p = (char *) xf86RotateFreeShadow; + (void) xf86RotateFreeShadow; #endif ; @@ -21752,38 +22746,35 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_have_decl_xf86RotateFreeShadow=yes else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_have_decl_xf86RotateFreeShadow=no + ac_cv_have_decl_xf86RotateFreeShadow=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_xf86RotateFreeShadow" >&5 -echo "${ECHO_T}$ac_cv_have_decl_xf86RotateFreeShadow" >&6 +{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_decl_xf86RotateFreeShadow" >&5 +$as_echo "$ac_cv_have_decl_xf86RotateFreeShadow" >&6; } if test $ac_cv_have_decl_xf86RotateFreeShadow = yes; then cat >>confdefs.h <<\_ACEOF @@ -21805,6 +22796,117 @@ if test "x$GCC" = "xyes"; then fi +pkg_failed=no +{ $as_echo "$as_me:$LINENO: checking for DRM" >&5 +$as_echo_n "checking for DRM... " >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$DRM_CFLAGS"; then + pkg_cv_DRM_CFLAGS="$DRM_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libdrm >= 2.4.6\"") >&5 + ($PKG_CONFIG --exists --print-errors "libdrm >= 2.4.6") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_DRM_CFLAGS=`$PKG_CONFIG --cflags "libdrm >= 2.4.6" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$DRM_LIBS"; then + pkg_cv_DRM_LIBS="$DRM_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libdrm >= 2.4.6\"") >&5 + ($PKG_CONFIG --exists --print-errors "libdrm >= 2.4.6") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_DRM_LIBS=`$PKG_CONFIG --libs "libdrm >= 2.4.6" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + DRM_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libdrm >= 2.4.6"` + else + DRM_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libdrm >= 2.4.6"` + fi + # Put the nasty error message in config.log where it belongs + echo "$DRM_PKG_ERRORS" >&5 + + { { $as_echo "$as_me:$LINENO: error: Package requirements (libdrm >= 2.4.6) were not met: + +$DRM_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables DRM_CFLAGS +and DRM_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&5 +$as_echo "$as_me: error: Package requirements (libdrm >= 2.4.6) were not met: + +$DRM_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables DRM_CFLAGS +and DRM_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&2;} + { (exit 1); exit 1; }; } +elif test $pkg_failed = untried; then + { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables DRM_CFLAGS +and DRM_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>. +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables DRM_CFLAGS +and DRM_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + DRM_CFLAGS=$pkg_cv_DRM_CFLAGS + DRM_LIBS=$pkg_cv_DRM_LIBS + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + : +fi + if test x$DRI = xyes; then DRI_TRUE= @@ -21817,20 +22919,20 @@ fi if test "$DRI" = yes; then pkg_failed=no -echo "$as_me:$LINENO: checking for DRI" >&5 -echo $ECHO_N "checking for DRI... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for DRI" >&5 +$as_echo_n "checking for DRI... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$DRI_CFLAGS"; then pkg_cv_DRI_CFLAGS="$DRI_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libdrm xf86driproto glproto\"") >&5 - ($PKG_CONFIG --exists --print-errors "libdrm xf86driproto glproto") 2>&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xf86driproto glproto\"") >&5 + ($PKG_CONFIG --exists --print-errors "xf86driproto glproto") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - pkg_cv_DRI_CFLAGS=`$PKG_CONFIG --cflags "libdrm xf86driproto glproto" 2>/dev/null` + pkg_cv_DRI_CFLAGS=`$PKG_CONFIG --cflags "xf86driproto glproto" 2>/dev/null` else pkg_failed=yes fi @@ -21843,12 +22945,12 @@ if test -n "$PKG_CONFIG"; then pkg_cv_DRI_LIBS="$DRI_LIBS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libdrm xf86driproto glproto\"") >&5 - ($PKG_CONFIG --exists --print-errors "libdrm xf86driproto glproto") 2>&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xf86driproto glproto\"") >&5 + ($PKG_CONFIG --exists --print-errors "xf86driproto glproto") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - pkg_cv_DRI_LIBS=`$PKG_CONFIG --libs "libdrm xf86driproto glproto" 2>/dev/null` + pkg_cv_DRI_LIBS=`$PKG_CONFIG --libs "xf86driproto glproto" 2>/dev/null` else pkg_failed=yes fi @@ -21867,14 +22969,14 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - DRI_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libdrm xf86driproto glproto"` + DRI_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xf86driproto glproto"` else - DRI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libdrm xf86driproto glproto"` + DRI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xf86driproto glproto"` fi # Put the nasty error message in config.log where it belongs echo "$DRI_PKG_ERRORS" >&5 - { { echo "$as_me:$LINENO: error: Package requirements (libdrm xf86driproto glproto) were not met: + { { $as_echo "$as_me:$LINENO: error: Package requirements (xf86driproto glproto) were not met: $DRI_PKG_ERRORS @@ -21885,7 +22987,7 @@ Alternatively, you may set the environment variables DRI_CFLAGS and DRI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 -echo "$as_me: error: Package requirements (libdrm xf86driproto glproto) were not met: +$as_echo "$as_me: error: Package requirements (xf86driproto glproto) were not met: $DRI_PKG_ERRORS @@ -21898,7 +23000,7 @@ See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then - { { echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it + { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -21908,7 +23010,7 @@ See the pkg-config man page for more details. To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>. See \`config.log' for more details." >&5 -echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +$as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -21922,8 +23024,8 @@ See \`config.log' for more details." >&2;} else DRI_CFLAGS=$pkg_cv_DRI_CFLAGS DRI_LIBS=$pkg_cv_DRI_LIBS - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } : fi @@ -21936,87 +23038,87 @@ cat >>confdefs.h <<\_ACEOF #define XF86DRI_DEVEL 1 _ACEOF - if test "$have_damage_h" = yes; then +fi -cat >>confdefs.h <<\_ACEOF -#define DAMAGE 1 -_ACEOF - fi +pkg_failed=no +{ $as_echo "$as_me:$LINENO: checking for DRM_MODE" >&5 +$as_echo_n "checking for DRM_MODE... " >&6; } - save_CFLAGS="$CFLAGS" - CFLAGS="$XORG_CFLAGS $DRI_CFLAGS" - echo "$as_me:$LINENO: checking for drm_i915_flip_t" >&5 -echo $ECHO_N "checking for drm_i915_flip_t... $ECHO_C" >&6 -if test "${ac_cv_type_drm_i915_flip_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -n "$PKG_CONFIG"; then + if test -n "$DRM_MODE_CFLAGS"; then + pkg_cv_DRM_MODE_CFLAGS="$DRM_MODE_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server >= 1.5\"") >&5 + ($PKG_CONFIG --exists --print-errors "xorg-server >= 1.5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_DRM_MODE_CFLAGS=`$PKG_CONFIG --cflags "xorg-server >= 1.5" 2>/dev/null` else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$DRM_MODE_LIBS"; then + pkg_cv_DRM_MODE_LIBS="$DRM_MODE_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xorg-server >= 1.5\"") >&5 + ($PKG_CONFIG --exists --print-errors "xorg-server >= 1.5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_DRM_MODE_LIBS=`$PKG_CONFIG --libs "xorg-server >= 1.5" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi -#include <inttypes.h> -#include <i915_drm.h> -int -main () -{ -if ((drm_i915_flip_t *) 0) - return 0; -if (sizeof (drm_i915_flip_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_drm_i915_flip_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if test $pkg_failed = yes; then -ac_cv_type_drm_i915_flip_t=no +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + if test $_pkg_short_errors_supported = yes; then + DRM_MODE_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xorg-server >= 1.5"` + else + DRM_MODE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xorg-server >= 1.5"` + fi + # Put the nasty error message in config.log where it belongs + echo "$DRM_MODE_PKG_ERRORS" >&5 + + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + DRM_MODE=no +elif test $pkg_failed = untried; then + DRM_MODE=no +else + DRM_MODE_CFLAGS=$pkg_cv_DRM_MODE_CFLAGS + DRM_MODE_LIBS=$pkg_cv_DRM_MODE_LIBS + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + DRM_MODE=yes fi -echo "$as_me:$LINENO: result: $ac_cv_type_drm_i915_flip_t" >&5 -echo "${ECHO_T}$ac_cv_type_drm_i915_flip_t" >&6 -if test $ac_cv_type_drm_i915_flip_t = yes; then +if test "x$DRM_MODE" = xyes; then cat >>confdefs.h <<\_ACEOF -#define HAVE_I915_FLIP 1 +#define XF86DRM_MODE 1 _ACEOF fi - CFLAGS="$save_CFLAGS" -fi - if test x$VIDEO_DEBUG = xyes; then @@ -22039,25 +23141,25 @@ if test "$XVMC" = auto; then XVMC="$DRI" fi if test "$XVMC" = yes && test "$DRI" = no; then - { { echo "$as_me:$LINENO: error: XvMC can't be enabled without DRI" >&5 -echo "$as_me: error: XvMC can't be enabled without DRI" >&2;} + { { $as_echo "$as_me:$LINENO: error: XvMC can't be enabled without DRI" >&5 +$as_echo "$as_me: error: XvMC can't be enabled without DRI" >&2;} { (exit 1); exit 1; }; } fi if test "$XVMC" = yes; then pkg_failed=no -echo "$as_me:$LINENO: checking for XVMCLIB" >&5 -echo $ECHO_N "checking for XVMCLIB... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for XVMCLIB" >&5 +$as_echo_n "checking for XVMCLIB... " >&6; } if test -n "$PKG_CONFIG"; then if test -n "$XVMCLIB_CFLAGS"; then pkg_cv_XVMCLIB_CFLAGS="$XVMCLIB_CFLAGS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xvmc\"") >&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xvmc\"") >&5 ($PKG_CONFIG --exists --print-errors "xvmc") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_XVMCLIB_CFLAGS=`$PKG_CONFIG --cflags "xvmc" 2>/dev/null` else @@ -22072,10 +23174,10 @@ if test -n "$PKG_CONFIG"; then pkg_cv_XVMCLIB_LIBS="$XVMCLIB_LIBS" else if test -n "$PKG_CONFIG" && \ - { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xvmc\"") >&5 + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xvmc\"") >&5 ($PKG_CONFIG --exists --print-errors "xvmc") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_XVMCLIB_LIBS=`$PKG_CONFIG --libs "xvmc" 2>/dev/null` else @@ -22103,23 +23205,134 @@ fi # Put the nasty error message in config.log where it belongs echo "$XVMCLIB_PKG_ERRORS" >&5 - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } XVMC=no elif test $pkg_failed = untried; then XVMC=no else XVMCLIB_CFLAGS=$pkg_cv_XVMCLIB_CFLAGS XVMCLIB_LIBS=$pkg_cv_XVMCLIB_LIBS - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } XVMC=yes fi + +pkg_failed=no +{ $as_echo "$as_me:$LINENO: checking for XEXT" >&5 +$as_echo_n "checking for XEXT... " >&6; } + +if test -n "$PKG_CONFIG"; then + if test -n "$XEXT_CFLAGS"; then + pkg_cv_XEXT_CFLAGS="$XEXT_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xext\"") >&5 + ($PKG_CONFIG --exists --print-errors "xext") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_XEXT_CFLAGS=`$PKG_CONFIG --cflags "xext" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$XEXT_LIBS"; then + pkg_cv_XEXT_LIBS="$XEXT_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"xext\"") >&5 + ($PKG_CONFIG --exists --print-errors "xext") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + pkg_cv_XEXT_LIBS=`$PKG_CONFIG --libs "xext" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried fi -echo "$as_me:$LINENO: checking whether to include XvMC support" >&5 -echo $ECHO_N "checking whether to include XvMC support... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $XVMC" >&5 -echo "${ECHO_T}$XVMC" >&6 + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + XEXT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "xext"` + else + XEXT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "xext"` + fi + # Put the nasty error message in config.log where it belongs + echo "$XEXT_PKG_ERRORS" >&5 + + { { $as_echo "$as_me:$LINENO: error: Package requirements (xext) were not met: + +$XEXT_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables XEXT_CFLAGS +and XEXT_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&5 +$as_echo "$as_me: error: Package requirements (xext) were not met: + +$XEXT_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables XEXT_CFLAGS +and XEXT_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. +" >&2;} + { (exit 1); exit 1; }; } +elif test $pkg_failed = untried; then + { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables XEXT_CFLAGS +and XEXT_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>. +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables XEXT_CFLAGS +and XEXT_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +else + XEXT_CFLAGS=$pkg_cv_XEXT_CFLAGS + XEXT_LIBS=$pkg_cv_XEXT_LIBS + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + : +fi +fi +{ $as_echo "$as_me:$LINENO: checking whether to include XvMC support" >&5 +$as_echo_n "checking whether to include XvMC support... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $XVMC" >&5 +$as_echo "$XVMC" >&6; } if test x$XVMC = xyes; then @@ -22144,7 +23357,6 @@ fi - DRIVER_NAME=intel @@ -22153,23 +23365,23 @@ DRIVER_NAME=intel XORG_MACROS_needed_version=1.1.3 XORG_MACROS_needed_major=`echo $XORG_MACROS_needed_version | sed 's/\..*$//'` XORG_MACROS_needed_minor=`echo $XORG_MACROS_needed_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'` - echo "$as_me:$LINENO: checking if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}" >&5 -echo $ECHO_N "checking if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}... $ECHO_C" >&6 - XORG_MACROS_version=1.1.6 + { $as_echo "$as_me:$LINENO: checking if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}" >&5 +$as_echo_n "checking if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}... " >&6; } + XORG_MACROS_version=1.2.1 XORG_MACROS_major=`echo $XORG_MACROS_version | sed 's/\..*$//'` XORG_MACROS_minor=`echo $XORG_MACROS_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'` if test $XORG_MACROS_major -ne $XORG_MACROS_needed_major ; then - { { echo "$as_me:$LINENO: error: configure built with incompatible version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.x" >&5 -echo "$as_me: error: configure built with incompatible version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.x" >&2;} + { { $as_echo "$as_me:$LINENO: error: configure built with incompatible version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.x" >&5 +$as_echo "$as_me: error: configure built with incompatible version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.x" >&2;} { (exit 1); exit 1; }; } fi if test $XORG_MACROS_minor -lt $XORG_MACROS_needed_minor ; then - { { echo "$as_me:$LINENO: error: configure built with too old of a version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.${XORG_MACROS_minor}.0 or newer" >&5 -echo "$as_me: error: configure built with too old of a version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.${XORG_MACROS_minor}.0 or newer" >&2;} + { { $as_echo "$as_me:$LINENO: error: configure built with too old of a version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.${XORG_MACROS_minor}.0 or newer" >&5 +$as_echo "$as_me: error: configure built with too old of a version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.${XORG_MACROS_minor}.0 or newer" >&2;} { (exit 1); exit 1; }; } fi - echo "$as_me:$LINENO: result: yes, $XORG_MACROS_version" >&5 -echo "${ECHO_T}yes, $XORG_MACROS_version" >&6 + { $as_echo "$as_me:$LINENO: result: yes, $XORG_MACROS_version" >&5 +$as_echo "yes, $XORG_MACROS_version" >&6; } @@ -22244,18 +23456,18 @@ fi -# Check whether --with-release-version or --without-release-version was given. +# Check whether --with-release-version was given. if test "${with_release_version+set}" = set; then - withval="$with_release_version" - RELEASE_VERSION="$withval" + withval=$with_release_version; RELEASE_VERSION="$withval" else RELEASE_VERSION="" -fi; +fi + if test "x$RELEASE_VERSION" != "x"; then PACKAGE="$PACKAGE-$RELEASE_VERSION" PACKAGE_TARNAME="$PACKAGE_TARNAME-$RELEASE_VERSION" - { echo "$as_me:$LINENO: Building with package name set to $PACKAGE" >&5 -echo "$as_me: Building with package name set to $PACKAGE" >&6;} + { $as_echo "$as_me:$LINENO: Building with package name set to $PACKAGE" >&5 +$as_echo "$as_me: Building with package name set to $PACKAGE" >&6;} fi cat >>confdefs.h <<_ACEOF @@ -22283,21 +23495,23 @@ _ACEOF -XORG_SGML_PATH=$prefix/share/sgml +if test x$XORG_SGML_PATH = x ; then + XORG_SGML_PATH=$prefix/share/sgml +fi HAVE_DEFS_ENT= if test x"$cross_compiling" = x"yes" ; then HAVE_DEFS_ENT=no else - as_ac_File=`echo "ac_cv_file_$XORG_SGML_PATH/X11/defs.ent" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $XORG_SGML_PATH/X11/defs.ent" >&5 -echo $ECHO_N "checking for $XORG_SGML_PATH/X11/defs.ent... $ECHO_C" >&6 -if eval "test \"\${$as_ac_File+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + as_ac_File=`$as_echo "ac_cv_file_$XORG_SGML_PATH/X11/defs.ent" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $XORG_SGML_PATH/X11/defs.ent" >&5 +$as_echo_n "checking for $XORG_SGML_PATH/X11/defs.ent... " >&6; } +if { as_var=$as_ac_File; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 else test "$cross_compiling" = yes && - { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 -echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} + { { $as_echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 +$as_echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "$XORG_SGML_PATH/X11/defs.ent"; then eval "$as_ac_File=yes" @@ -22305,9 +23519,12 @@ else eval "$as_ac_File=no" fi fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 -if test `eval echo '${'$as_ac_File'}'` = yes; then +ac_res=`eval 'as_val=${'$as_ac_File'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_File'} + $as_echo "$as_val"'` = yes; then HAVE_DEFS_ENT=yes fi @@ -22315,10 +23532,10 @@ fi # Extract the first word of "linuxdoc", so it can be a program name with args. set dummy linuxdoc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_LINUXDOC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else case $LINUXDOC in [\\/]* | ?:[\\/]*) @@ -22331,33 +23548,34 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LINUXDOC="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS ;; esac fi LINUXDOC=$ac_cv_path_LINUXDOC - if test -n "$LINUXDOC"; then - echo "$as_me:$LINENO: result: $LINUXDOC" >&5 -echo "${ECHO_T}$LINUXDOC" >&6 + { $as_echo "$as_me:$LINENO: result: $LINUXDOC" >&5 +$as_echo "$LINUXDOC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi + # Extract the first word of "ps2pdf", so it can be a program name with args. set dummy ps2pdf; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PS2PDF+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + $as_echo_n "(cached) " >&6 else case $PS2PDF in [\\/]* | ?:[\\/]*) @@ -22370,30 +23588,31 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PS2PDF="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS ;; esac fi PS2PDF=$ac_cv_path_PS2PDF - if test -n "$PS2PDF"; then - echo "$as_me:$LINENO: result: $PS2PDF" >&5 -echo "${ECHO_T}$PS2PDF" >&6 + { $as_echo "$as_me:$LINENO: result: $PS2PDF" >&5 +$as_echo "$PS2PDF" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } fi -echo "$as_me:$LINENO: checking Whether to build documentation" >&5 -echo $ECHO_N "checking Whether to build documentation... $ECHO_C" >&6 + +{ $as_echo "$as_me:$LINENO: checking Whether to build documentation" >&5 +$as_echo_n "checking Whether to build documentation... " >&6; } if test x$HAVE_DEFS_ENT != x && test x$LINUXDOC != x ; then BUILDDOC=yes @@ -22412,11 +23631,11 @@ else fi -echo "$as_me:$LINENO: result: $BUILDDOC" >&5 -echo "${ECHO_T}$BUILDDOC" >&6 +{ $as_echo "$as_me:$LINENO: result: $BUILDDOC" >&5 +$as_echo "$BUILDDOC" >&6; } -echo "$as_me:$LINENO: checking Whether to build pdf documentation" >&5 -echo $ECHO_N "checking Whether to build pdf documentation... $ECHO_C" >&6 +{ $as_echo "$as_me:$LINENO: checking Whether to build pdf documentation" >&5 +$as_echo_n "checking Whether to build pdf documentation... " >&6; } if test x$PS2PDF != x && test x$BUILD_PDFDOC != xno; then BUILDPDFDOC=yes @@ -22435,8 +23654,8 @@ else fi -echo "$as_me:$LINENO: result: $BUILDPDFDOC" >&5 -echo "${ECHO_T}$BUILDPDFDOC" >&6 +{ $as_echo "$as_me:$LINENO: result: $BUILDPDFDOC" >&5 +$as_echo "$BUILDPDFDOC" >&6; } MAKE_TEXT="SGML_SEARCH_PATH=$XORG_SGML_PATH GROFF_NO_SGR=y $LINUXDOC -B txt" MAKE_PS="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B latex --papersize=letter --output=ps" @@ -22449,7 +23668,8 @@ MAKE_HTML="SGML_SEARCH_PATH=$XORG_SGML_PATH $LINUXDOC -B html --split=0" - ac_config_files="$ac_config_files Makefile src/Makefile src/xvmc/Makefile src/bios_reader/Makefile src/ch7017/Makefile src/ch7xxx/Makefile src/ivch/Makefile src/reg_dumper/Makefile src/sil164/Makefile src/tfp410/Makefile man/Makefile" +ac_config_files="$ac_config_files Makefile uxa/Makefile src/Makefile src/xvmc/Makefile src/bios_reader/Makefile src/ch7017/Makefile src/ch7xxx/Makefile src/ivch/Makefile src/reg_dumper/Makefile src/sil164/Makefile src/tfp410/Makefile man/Makefile" + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -22468,39 +23688,59 @@ _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. +# So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. -{ +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; + ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} | + esac | + sort +) | sed ' + /^ac_cv_env_/b end t clear - : clear + :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else - echo "not updating unwritable cache $cache_file" + { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -22509,32 +23749,18 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs @@ -22542,110 +23768,111 @@ LTLIBOBJS=$ac_ltlibobjs if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +$as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. +$as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_GEN4ASM_TRUE}" && test -z "${HAVE_GEN4ASM_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"HAVE_GEN4ASM\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"HAVE_GEN4ASM\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"HAVE_GEN4ASM\" was never defined. +$as_echo "$as_me: error: conditional \"HAVE_GEN4ASM\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${XSERVER_LIBPCIACCESS_TRUE}" && test -z "${XSERVER_LIBPCIACCESS_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"XSERVER_LIBPCIACCESS\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"XSERVER_LIBPCIACCESS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"XSERVER_LIBPCIACCESS\" was never defined. +$as_echo "$as_me: error: conditional \"XSERVER_LIBPCIACCESS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${LIBPCIACCESS_TRUE}" && test -z "${LIBPCIACCESS_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"LIBPCIACCESS\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"LIBPCIACCESS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"LIBPCIACCESS\" was never defined. +$as_echo "$as_me: error: conditional \"LIBPCIACCESS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${XMODES_TRUE}" && test -z "${XMODES_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"XMODES\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"XMODES\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"XMODES\" was never defined. +$as_echo "$as_me: error: conditional \"XMODES\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${DRI_TRUE}" && test -z "${DRI_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"DRI\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"DRI\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"DRI\" was never defined. +$as_echo "$as_me: error: conditional \"DRI\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${VIDEO_DEBUG_TRUE}" && test -z "${VIDEO_DEBUG_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"VIDEO_DEBUG\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"VIDEO_DEBUG\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"VIDEO_DEBUG\" was never defined. +$as_echo "$as_me: error: conditional \"VIDEO_DEBUG\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${XVMC_TRUE}" && test -z "${XVMC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"XVMC\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"XVMC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"XVMC\" was never defined. +$as_echo "$as_me: error: conditional \"XVMC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_LINUXDOC_TRUE}" && test -z "${BUILD_LINUXDOC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"BUILD_LINUXDOC\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_LINUXDOC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"BUILD_LINUXDOC\" was never defined. +$as_echo "$as_me: error: conditional \"BUILD_LINUXDOC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_PDFDOC_TRUE}" && test -z "${BUILD_PDFDOC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"BUILD_PDFDOC\" was never defined. + { { $as_echo "$as_me:$LINENO: error: conditional \"BUILD_PDFDOC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"BUILD_PDFDOC\" was never defined. +$as_echo "$as_me: error: conditional \"BUILD_PDFDOC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} +ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF +{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. @@ -22658,22 +23885,78 @@ ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi -DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then @@ -22683,33 +23966,60 @@ else fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE # Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false @@ -22717,159 +24027,122 @@ fi # Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi +# CDPATH. +$as_unset CDPATH - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -if expr a : '\(a\)' >/dev/null 2>&1; then +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -22878,7 +24151,28 @@ else as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -22887,31 +24181,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - exec 6>&1 -# Open the log real soon, to keep \$[0] and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by xf86-video-intel $as_me 2.4.3, which was -generated by GNU Autoconf 2.59. Invocation command line was +# values after options handling. +ac_log=" +This file was extended by xf86-video-intel $as_me 2.7.1, which was +generated by GNU Autoconf 2.62. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -22919,30 +24196,20 @@ generated by GNU Autoconf 2.59. Invocation command line was CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + _ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" -cat >>$CONFIG_STATUS <<\_ACEOF +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -22950,14 +24217,14 @@ current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number, then exit + -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] - instantiate the configuration file FILE + instantiate the configuration file FILE --header=FILE[:TEMPLATE] - instantiate the configuration header FILE + instantiate the configuration header FILE Configuration files: $config_files @@ -22969,83 +24236,83 @@ Configuration commands: $config_commands Report bugs to <bug-autoconf@gnu.org>." -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ -xf86-video-intel config.status 2.4.3 -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +xf86-video-intel config.status 2.7.1 +configured by $0, generated by GNU Autoconf 2.62, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +AWK='$AWK' +test -n "\$AWK" || AWK=awk _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - -*) + *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { $as_echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { $as_echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift @@ -23059,49 +24326,64 @@ if $ac_cs_silent; then fi _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" fi _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 -cat >>$CONFIG_STATUS <<_ACEOF +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # -# INIT-COMMANDS section. +# INIT-COMMANDS # - AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "src/xvmc/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/xvmc/Makefile" ;; - "src/bios_reader/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/bios_reader/Makefile" ;; - "src/ch7017/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ch7017/Makefile" ;; - "src/ch7xxx/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ch7xxx/Makefile" ;; - "src/ivch/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/ivch/Makefile" ;; - "src/reg_dumper/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/reg_dumper/Makefile" ;; - "src/sil164/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/sil164/Makefile" ;; - "src/tfp410/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/tfp410/Makefile" ;; - "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "uxa/Makefile") CONFIG_FILES="$CONFIG_FILES uxa/Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/xvmc/Makefile") CONFIG_FILES="$CONFIG_FILES src/xvmc/Makefile" ;; + "src/bios_reader/Makefile") CONFIG_FILES="$CONFIG_FILES src/bios_reader/Makefile" ;; + "src/ch7017/Makefile") CONFIG_FILES="$CONFIG_FILES src/ch7017/Makefile" ;; + "src/ch7xxx/Makefile") CONFIG_FILES="$CONFIG_FILES src/ch7xxx/Makefile" ;; + "src/ivch/Makefile") CONFIG_FILES="$CONFIG_FILES src/ivch/Makefile" ;; + "src/reg_dumper/Makefile") CONFIG_FILES="$CONFIG_FILES src/reg_dumper/Makefile" ;; + "src/sil164/Makefile") CONFIG_FILES="$CONFIG_FILES src/sil164/Makefile" ;; + "src/tfp410/Makefile") CONFIG_FILES="$CONFIG_FILES src/tfp410/Makefile" ;; + "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + + *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done + # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -23113,801 +24395,634 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, +# simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. $debug || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { - echo "$me: cannot create a temporary directory in ." >&2 + $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr='
' +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -# -# CONFIG_FILES section. -# +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@CYGPATH_W@,$CYGPATH_W,;t t -s,@PACKAGE@,$PACKAGE,;t t -s,@VERSION@,$VERSION,;t t -s,@ACLOCAL@,$ACLOCAL,;t t -s,@AUTOCONF@,$AUTOCONF,;t t -s,@AUTOMAKE@,$AUTOMAKE,;t t -s,@AUTOHEADER@,$AUTOHEADER,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@install_sh@,$install_sh,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -s,@mkdir_p@,$mkdir_p,;t t -s,@AWK@,$AWK,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@am__leading_dot@,$am__leading_dot,;t t -s,@AMTAR@,$AMTAR,;t t -s,@am__tar@,$am__tar,;t t -s,@am__untar@,$am__untar,;t t -s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t -s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t -s,@MAINT@,$MAINT,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@DEPDIR@,$DEPDIR,;t t -s,@am__include@,$am__include,;t t -s,@am__quote@,$am__quote,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@CCDEPMODE@,$CCDEPMODE,;t t -s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t -s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t -s,@SED@,$SED,;t t -s,@EGREP@,$EGREP,;t t -s,@LN_S@,$LN_S,;t t -s,@ECHO@,$ECHO,;t t -s,@AR@,$AR,;t t -s,@ac_ct_AR@,$ac_ct_AR,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@DSYMUTIL@,$DSYMUTIL,;t t -s,@ac_ct_DSYMUTIL@,$ac_ct_DSYMUTIL,;t t -s,@NMEDIT@,$NMEDIT,;t t -s,@ac_ct_NMEDIT@,$ac_ct_NMEDIT,;t t -s,@CPP@,$CPP,;t t -s,@CXX@,$CXX,;t t -s,@CXXFLAGS@,$CXXFLAGS,;t t -s,@ac_ct_CXX@,$ac_ct_CXX,;t t -s,@CXXDEPMODE@,$CXXDEPMODE,;t t -s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t -s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t -s,@CXXCPP@,$CXXCPP,;t t -s,@F77@,$F77,;t t -s,@FFLAGS@,$FFLAGS,;t t -s,@ac_ct_F77@,$ac_ct_F77,;t t -s,@LIBTOOL@,$LIBTOOL,;t t -s,@DOLT_BASH@,$DOLT_BASH,;t t -s,@LTCOMPILE@,$LTCOMPILE,;t t -s,@LTCXXCOMPILE@,$LTCXXCOMPILE,;t t -s,@gen4asm@,$gen4asm,;t t -s,@HAVE_GEN4ASM_TRUE@,$HAVE_GEN4ASM_TRUE,;t t -s,@HAVE_GEN4ASM_FALSE@,$HAVE_GEN4ASM_FALSE,;t t -s,@PKG_CONFIG@,$PKG_CONFIG,;t t -s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t -s,@XORG_CFLAGS@,$XORG_CFLAGS,;t t -s,@XORG_LIBS@,$XORG_LIBS,;t t -s,@PCIACCESS_CFLAGS@,$PCIACCESS_CFLAGS,;t t -s,@PCIACCESS_LIBS@,$PCIACCESS_LIBS,;t t -s,@XSERVER_LIBPCIACCESS_TRUE@,$XSERVER_LIBPCIACCESS_TRUE,;t t -s,@XSERVER_LIBPCIACCESS_FALSE@,$XSERVER_LIBPCIACCESS_FALSE,;t t -s,@LIBPCIACCESS_TRUE@,$LIBPCIACCESS_TRUE,;t t -s,@LIBPCIACCESS_FALSE@,$LIBPCIACCESS_FALSE,;t t -s,@XMODES_TRUE@,$XMODES_TRUE,;t t -s,@XMODES_FALSE@,$XMODES_FALSE,;t t -s,@XMODES_CFLAGS@,$XMODES_CFLAGS,;t t -s,@DRI_TRUE@,$DRI_TRUE,;t t -s,@DRI_FALSE@,$DRI_FALSE,;t t -s,@DRI_CFLAGS@,$DRI_CFLAGS,;t t -s,@DRI_LIBS@,$DRI_LIBS,;t t -s,@VIDEO_DEBUG_TRUE@,$VIDEO_DEBUG_TRUE,;t t -s,@VIDEO_DEBUG_FALSE@,$VIDEO_DEBUG_FALSE,;t t -s,@XVMCLIB_CFLAGS@,$XVMCLIB_CFLAGS,;t t -s,@XVMCLIB_LIBS@,$XVMCLIB_LIBS,;t t -s,@XVMC_TRUE@,$XVMC_TRUE,;t t -s,@XVMC_FALSE@,$XVMC_FALSE,;t t -s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t -s,@moduledir@,$moduledir,;t t -s,@DRIVER_NAME@,$DRIVER_NAME,;t t -s,@APP_MAN_SUFFIX@,$APP_MAN_SUFFIX,;t t -s,@LIB_MAN_SUFFIX@,$LIB_MAN_SUFFIX,;t t -s,@FILE_MAN_SUFFIX@,$FILE_MAN_SUFFIX,;t t -s,@MISC_MAN_SUFFIX@,$MISC_MAN_SUFFIX,;t t -s,@DRIVER_MAN_SUFFIX@,$DRIVER_MAN_SUFFIX,;t t -s,@ADMIN_MAN_SUFFIX@,$ADMIN_MAN_SUFFIX,;t t -s,@APP_MAN_DIR@,$APP_MAN_DIR,;t t -s,@LIB_MAN_DIR@,$LIB_MAN_DIR,;t t -s,@FILE_MAN_DIR@,$FILE_MAN_DIR,;t t -s,@MISC_MAN_DIR@,$MISC_MAN_DIR,;t t -s,@DRIVER_MAN_DIR@,$DRIVER_MAN_DIR,;t t -s,@ADMIN_MAN_DIR@,$ADMIN_MAN_DIR,;t t -s,@LINUXDOC@,$LINUXDOC,;t t -s,@PS2PDF@,$PS2PDF,;t t -s,@BUILD_LINUXDOC_TRUE@,$BUILD_LINUXDOC_TRUE,;t t -s,@BUILD_LINUXDOC_FALSE@,$BUILD_LINUXDOC_FALSE,;t t -s,@BUILD_PDFDOC_TRUE@,$BUILD_PDFDOC_TRUE,;t t -s,@BUILD_PDFDOC_FALSE@,$BUILD_PDFDOC_FALSE,;t t -s,@MAKE_TEXT@,$MAKE_TEXT,;t t -s,@MAKE_PS@,$MAKE_PS,;t t -s,@MAKE_PDF@,$MAKE_PDF,;t t -s,@MAKE_HTML@,$MAKE_HTML,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' <conf$$subs.awk | sed ' +/^[^""]/{ + N + s/\n// +} +' >>$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +$as_echo "$as_me: error: could not setup config files machinery" >&2;} + { (exit 1); exit 1; }; } +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' <confdefs.h | sed ' +s/'"$ac_delim"'/"\\\ +"/g' >>$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + prefix = substr(line, 1, index(line, defundef) - 1) + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", line, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 +$as_echo "$as_me: error: could not setup config headers machinery" >&2;} + { (exit 1); exit 1; }; } +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +$as_echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + ac_file_inputs="$ac_file_inputs '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; + esac + ;; esac - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || + ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - ac_builddir=. -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac + case $ac_mode in + :F) + # + # CONFIG_FILE + # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac +_ACEOF - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac _ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub $extrasub _ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } -# -# CONFIG_HEADER section. -# +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + rm -f "$tmp/stdin" case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in + ;; + :H) + # + # CONFIG_HEADER + # if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } fi else - cat $tmp/config.h - rm -f $tmp/config.h + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 +$as_echo "$as_me: error: could not create -" >&2;} + { (exit 1); exit 1; }; } fi -# Compute $ac_file's index in $config_headers. +# Compute "$ac_file"'s index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in - $ac_file | $ac_file:* ) + "$ac_file" | "$ac_file":* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done -echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || -$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X$ac_file : 'X\(//\)[^/]' \| \ - X$ac_file : 'X\(//\)$' \| \ - X$ac_file : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X$ac_file | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'`/stamp-h$_am_stamp_count -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac +echo "timestamp for "$ac_file"" >`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac + :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. @@ -23917,18 +25032,29 @@ echo "$as_me: executing $ac_dest commands" >&6;} # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || + dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` else continue fi @@ -23950,59 +25076,90 @@ echo X"$mf" | sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || + fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; + esac -done -_ACEOF +done # for ac_tag -cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -24024,4 +25181,8 @@ if test "$no_create" != yes; then # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;} +fi diff --git a/driver/xf86-video-intel/configure.ac b/driver/xf86-video-intel/configure.ac index 3129489df..c70d7a659 100644 --- a/driver/xf86-video-intel/configure.ac +++ b/driver/xf86-video-intel/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-video-intel], - 2.4.3, + 2.7.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-video-intel) @@ -84,13 +84,26 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto) # Checks for pkg-config packages PKG_CHECK_MODULES(XORG, [xorg-server xproto fontsproto $REQUIRED_MODULES]) + +PKG_CHECK_MODULES(SERVER_1_5, [xorg-server >= 1.5], + [SERVER_1_5=yes], [SERVER_1_5=no]) + +if test "$SERVER_1_5" = yes; then + AC_DEFINE(SERVER_1_5, 1, [Building against server 1.5]) +fi + sdkdir=$(pkg-config --variable=sdkdir xorg-server) +drm_cflags=$(pkg-config --cflags libdrm) # Checks for libraries. # Checks for header files. AC_HEADER_STDC +save_CFLAGS="$CFLAGS" +CFLAGS="$XORG_CFLAGS $DRI_CFLAGS $drm_cflags" +CPPFLAGS="$XORG_CFLAGS $DRI_CFLAGS $drm_cflags" +AC_MSG_CHECKING([whether to include DRI support]) if test x$DRI != xno; then AC_CHECK_FILE([${sdkdir}/dri.h], [have_dri_h="yes"], [have_dri_h="no"]) @@ -98,8 +111,6 @@ if test x$DRI != xno; then [have_sarea_h="yes"], [have_sarea_h="no"]) AC_CHECK_FILE([${sdkdir}/dristruct.h], [have_dristruct_h="yes"], [have_dristruct_h="no"]) - AC_CHECK_FILE([${sdkdir}/damage.h], - [have_damage_h="yes"], [have_damage_h="no"]) fi AC_MSG_CHECKING([whether to include DRI support]) if test x$DRI = xauto; then @@ -113,8 +124,6 @@ if test x$DRI = xauto; then fi AC_MSG_RESULT([$DRI]) -save_CFLAGS="$CFLAGS" -CFLAGS="$XORG_CFLAGS" AC_CHECK_HEADER(xf86Modes.h,[XMODES=yes],[XMODES=no],[#include "xorg-server.h"]) AC_CHECK_DECL(XSERVER_LIBPCIACCESS, [XSERVER_LIBPCIACCESS=yes],[XSERVER_LIBPCIACCESS=no], @@ -197,25 +206,19 @@ if test "x$GCC" = "xyes"; then -Wnested-externs -fno-strict-aliasing" fi +PKG_CHECK_MODULES(DRM, [libdrm >= 2.4.6]) AM_CONDITIONAL(DRI, test x$DRI = xyes) if test "$DRI" = yes; then - PKG_CHECK_MODULES(DRI, [libdrm xf86driproto glproto]) + PKG_CHECK_MODULES(DRI, [xf86driproto glproto]) AC_DEFINE(XF86DRI,1,[Enable DRI driver support]) AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support]) - if test "$have_damage_h" = yes; then - AC_DEFINE(DAMAGE,1,[Use Damage extension]) - fi +fi - save_CFLAGS="$CFLAGS" - CFLAGS="$XORG_CFLAGS $DRI_CFLAGS" - AC_CHECK_TYPE(drm_i915_flip_t, - [AC_DEFINE(HAVE_I915_FLIP, 1, - [Have drm_i915_flip_t and related definitions])], - [], [ -#include <inttypes.h> -#include <i915_drm.h> -]) - CFLAGS="$save_CFLAGS" +dnl Server 1.5's set_mode_major required for DRM_MODE. +PKG_CHECK_MODULES(DRM_MODE, [xorg-server >= 1.5], + [DRM_MODE=yes], [DRM_MODE=no]) +if test "x$DRM_MODE" = xyes; then + AC_DEFINE(XF86DRM_MODE,1,[DRM kernel modesetting]) fi AM_CONDITIONAL(VIDEO_DEBUG, test x$VIDEO_DEBUG = xyes) @@ -231,6 +234,7 @@ if test "$XVMC" = yes && test "$DRI" = no; then fi if test "$XVMC" = yes; then PKG_CHECK_MODULES(XVMCLIB, [xvmc], [XVMC=yes], [XVMC=no]) + PKG_CHECK_MODULES(XEXT, [xext]) fi AC_MSG_CHECKING([whether to include XvMC support]) AC_MSG_RESULT([$XVMC]) @@ -240,7 +244,6 @@ if test "$XVMC" = yes; then AC_SUBST([XVMCLIB_CFLAGS]) fi - AC_SUBST([DRI_CFLAGS]) AC_SUBST([XORG_CFLAGS]) AC_SUBST([WARN_CFLAGS]) @@ -258,6 +261,7 @@ XORG_CHECK_LINUXDOC AC_OUTPUT([ Makefile + uxa/Makefile src/Makefile src/xvmc/Makefile src/bios_reader/Makefile diff --git a/driver/xf86-video-intel/ltmain.sh b/driver/xf86-video-intel/ltmain.sh index 248cd4047..fccf69e28 100644 --- a/driver/xf86-video-intel/ltmain.sh +++ b/driver/xf86-video-intel/ltmain.sh @@ -2127,17 +2127,6 @@ EOF ;; esac for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" diff --git a/driver/xf86-video-intel/man/Makefile.am b/driver/xf86-video-intel/man/Makefile.am index 37937803b..ac0862153 100644 --- a/driver/xf86-video-intel/man/Makefile.am +++ b/driver/xf86-video-intel/man/Makefile.am @@ -25,20 +25,12 @@ # drivermandir = $(DRIVER_MAN_DIR) +driverman_DATA = $(DRIVER_NAME).$(DRIVER_MAN_SUFFIX) -DRIVER_MAN_DIR_SUFFIX = $(DRIVER_MAN_DIR:@mandir@/man%=%) - -driverman_PRE = @DRIVER_NAME@.man - -driverman_DATA = \ - $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@) - -EXTRA_DIST = @DRIVER_NAME@.man +EXTRA_DIST = $(DRIVER_NAME).man CLEANFILES = $(driverman_DATA) -SED = sed - # Strings to replace in man pages XORGRELSTRING = @PACKAGE_STRING@ XORGMANNAME = X Version 11 @@ -59,4 +51,3 @@ SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man .man.$(DRIVER_MAN_SUFFIX): sed $(MAN_SUBSTS) < $< > $@ - diff --git a/driver/xf86-video-intel/man/Makefile.in b/driver/xf86-video-intel/man/Makefile.in index eb29b619b..352c51cf8 100644 --- a/driver/xf86-video-intel/man/Makefile.in +++ b/driver/xf86-video-intel/man/Makefile.in @@ -121,6 +121,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -132,6 +136,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -175,7 +180,9 @@ PCIACCESS_LIBS = @PCIACCESS_LIBS@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ -SED = sed +SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -183,6 +190,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -194,15 +203,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -219,6 +222,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -226,29 +232,29 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ drivermandir = $(DRIVER_MAN_DIR) -DRIVER_MAN_DIR_SUFFIX = $(DRIVER_MAN_DIR:@mandir@/man%=%) -driverman_PRE = @DRIVER_NAME@.man -driverman_DATA = \ - $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@) - -EXTRA_DIST = @DRIVER_NAME@.man +driverman_DATA = $(DRIVER_NAME).$(DRIVER_MAN_SUFFIX) +EXTRA_DIST = $(DRIVER_NAME).man CLEANFILES = $(driverman_DATA) # Strings to replace in man pages diff --git a/driver/xf86-video-intel/man/intel.man b/driver/xf86-video-intel/man/intel.man index aac0efa61..4f8db8171 100644 --- a/driver/xf86-video-intel/man/intel.man +++ b/driver/xf86-video-intel/man/intel.man @@ -25,7 +25,7 @@ the 830M and later. .B intel supports the i810, i810-DC100, i810e, i815, i830M, 845G, 852GM, 855GM, 865G, 915G, 915GM, 945G, 945GM, 965G, 965Q, 946GZ, 965GM, 945GME, -G33, Q33, and Q35 chipsets. +G33, Q33, Q35, G35, GM45, G45, Q45, G43 and G41 chipsets. .SH CONFIGURATION DETAILS Please refer to __xconfigfile__(__filemansuffix__) for general configuration @@ -33,18 +33,21 @@ details. This section only covers configuration details specific to this driver. .PP The Intel 8xx and 9xx families of integrated graphics chipsets have a unified -memory architecture and uses system memory for video ram. For the i810 and -i815 family of chipset, operating system support for allocating system -memory for video use is required in order to use this driver. For the 830M -and later, this is required in order for the driver to use more video ram +memory architecture meaning that system memory is used as video RAM. For the +i810 and i815 family of chipsets, operating system support for allocating system +memory is required in order to use this driver. For the 830M +and later, this is required in order for the driver to use more video RAM than has been pre-allocated at boot time by the BIOS. This is usually achieved with an "agpgart" or "agp" kernel driver. Linux, FreeBSD, OpenBSD, NetBSD, and Solaris have such kernel drivers available. .PP -By default, the i810 will use 8 megabytes -of system memory for graphics. For the 830M and later, the driver will -automatically size its memory allocation according to the features it will -support. The +By default, the i810/i815 will use 8 MB of system memory for graphics if AGP +allocable memory is < 128 MB, 16 MB if < 192 MB or 24 MB if higher. Use the +.B VideoRam +option to change the default value. +.PP +For the 830M and later, the driver will automatically size its memory +allocation according to the features it will support. Therefore, the .B VideoRam option, which in the past had been necessary to allow more than some small amount of memory to be allocated, is now ignored. @@ -54,15 +57,13 @@ The following driver are supported .TP .BI "Option \*qNoAccel\*q \*q" boolean \*q -Disable or enable acceleration. Default: acceleration is enabled. -.TP -.BI "Option \*qSWCursor\*q \*q" boolean \*q -Disable or enable software cursor. Default: software cursor is disable -and a hardware cursor is used for configurations where the hardware cursor -is available. +Disable or enable acceleration. +.IP +Default: acceleration is enabled. .TP .BI "Option \*qColorKey\*q \*q" integer \*q This sets the default pixel value for the YUV video overlay key. +.IP Default: undefined. .TP .BI "Option \*qCacheLines\*q \*q" integer \*q @@ -70,6 +71,7 @@ This allows the user to change the amount of graphics memory used for 2D acceleration and video when XAA acceleration is enabled. Decreasing this amount leaves more for 3D textures. Increasing it can improve 2D performance at the expense of 3D performance. +.IP Default: depends on the resolution, depth, and available video memory. The driver attempts to allocate space for at 3 screenfuls of pixmaps plus an HD-sized XV video. The default used for a specific configuration can be found @@ -80,15 +82,19 @@ This option controls whether the framebuffer compression feature is enabled. If possible, the front buffer will be allocated in a tiled format and compressed periodically to save memory bandwidth and power. This option is only available on mobile chipsets. +.IP Default: enabled on supported configurations. .TP .BI "Option \*qTiling\*q \*q" boolean \*q This option controls whether memory buffers are allocated in tiled mode. In -many cases (especially for complex rendering), tiling can improve performance. +most cases (especially for complex rendering), tiling dramatically improves +performance. +.IP Default: enabled. .TP .BI "Option \*qDRI\*q \*q" boolean \*q Disable or enable DRI support. +.IP Default: DRI is enabled for configurations where it is supported. .PP @@ -98,16 +104,26 @@ are supported for the i810 and i815 chipsets: .TP .BI "Option \*qDDC\*q \*q" boolean \*q Disable or enable DDC support. +.IP Default: enabled. .TP .BI "Option \*qDac6Bit\*q \*q" boolean \*q Enable or disable 6-bits per RGB for 8-bit modes. +.IP Default: 8-bits per RGB for 8-bit modes. .TP .BI "Option \*qXvMCSurfaces\*q \*q" integer \*q This option enables XvMC. The integer parameter specifies the number of surfaces to use. Valid values are 6 and 7. +.IP Default: XvMC is disabled. +.TP +.BI "VideoRam " integer +This option specifies the amount of system memory to use for graphics, in KB. +.IP +The default is 8192 if AGP allocable memory is < 128 MB, 16384 if < 192 MB, +24576 if higher. DRI require at least a value of 16384. Higher values may give +better 3D performance, at expense of available system memory. .PP The following driver @@ -120,68 +136,43 @@ This is the same as the option described above. It is provided for compatibility with most other drivers. .TP -.BI "Option \*qXVideo\*q \*q" boolean \*q -Disable or enable XVideo support. -Default: XVideo is enabled for configurations where it is supported. -.TP -.BI "Option \*qLegacy3D\*q \*q" boolean \*q -Enable support for the legacy i915_dri.so 3D driver. -This will, among other things, make the 2D driver tell libGL to -load the 3D driver i915_dri.so instead of the newer i915tex_dri.so. -This option is only used for chipsets in the range i830-i945. -Default for i830-i945 series: Enabled. -Default for i810: The option is not used. -Default for i965: The option is always true. -.TP -.BI "Option \*qAperTexSize\*q \*q" integer \*q -Give the size in kiB of the AGP aperture area that is reserved for the -DRM memory manager present in i915 drm from version 1.7.0 and upwards, -and that is used with the 3D driver in Mesa from version 6.5.2 and -upwards. If the size is set too high to make room for pre-allocated -VideoRam, the driver will try to reduce it automatically. If you use only -older Mesa or DRM versions, you may set this value to zero, and -activate the legacy texture pool (see -.B "Option \*qLegacy3D\*q" -). If you run 3D programs with large texture memory requirements, you might -gain some performance by increasing this value. -Default: 32768. -.TP -.BI "Option \*qPageFlip\*q \*q" boolean \*q -Enable support for page flipping. This should improve 3D performance at the -potential cost of worse performance with mixed 2D/3D. Also note that this gives -no benefit without corresponding support in the Mesa 3D driver and may not give -the full benefit without triple buffering (see -.B "Option \*qTripleBuffer\*q" -). -Default for i810: The option is not used. -Default for i830 and above: Disabled (This option is currently unstable). -.TP -.BI "Option \*qTripleBuffer\*q \*q" boolean \*q -Enable support for triple buffering. This should improve 3D performance at the -potential cost of worse performance with mixed 2D/3D. Also note that this gives -no benefit without corresponding support in the Mesa 3D driver and may not give -any benefit without page flipping either (see -.B "Option \*qPageFlip\*q" -). -Default for i810: The option is not used. -Default for i830 and above: Disabled. +.BI "Option \*qXvPreferOverlay\*q \*q" boolean \*q +Make hardware overlay be the first XV adaptor. +The overlay behaves incorrectly in the presence of compositing, but some prefer +it due to it syncing to vblank in the absence of compositing. While most +XV-using applications have options to select which XV adaptor to use, this +option can be used to place the overlay first for applications which don't +have options for selecting adaptors. +.IP +Default: Textured video adaptor is preferred. .TP .BI "Option \*qAccelMethod\*q \*q" string \*q -Choose acceleration architecture, either "XAA" or "EXA". XAA is the old -XFree86 based acceleration architecture. EXA is a newer and simpler +Choose acceleration architecture, either "XAA", "EXA", or "UXA". XAA is the old +XFree86 based acceleration architecture. EXA is a simpler acceleration architecture designed to better accelerate the X Render extension. -Default: "EXA". +UXA is a newer acceleration architecture built from the EXA acceleration +code but taking advantage of kernel memory management to provide simpler, +faster code. +.IP +Default: "UXA" if kernel-modesetting is available, "EXA" otherwise. .TP .BI "Option \*qModeDebug\*q \*q" boolean \*q Enable printing of additional debugging information about modesetting to the server log. +.IP +Default: Disabled +.TP +.BI "Option \*qFallbackDebug\*q \*q" boolean \*q +Enable printing of debugging information on acceleration fallbacks to the +server log. +.IP +Default: Disabled .TP .BI "Option \*qForceEnablePipeA\*q \*q" boolean \*q Force the driver to leave pipe A enabled. May be necessary in configurations where the BIOS accesses pipe registers during display hotswitch or lid close, causing a crash. If you find that your platform needs this option, please file -a bug against xf86-video-intel at http://bugs.freedesktop.org which includes -the output of 'lspci -v' and 'lspci -vn'. +a bug (see REPORTING BUGS below) including the output of 'lspci -v' and 'lspci -vn'. .TP .BI "Option \*qLVDS24Bit\*q \*q" boolean \*q Specify 24 bit pixel format (i.e. 8 bits per color) to be used for the @@ -194,7 +185,9 @@ within the X server. This option instead selects the physical format / sequencing of the digital bits sent to the display. Setting the frame buffer color depth is really a matter of preference by the user, while setting the pixel format here is a requirement of the connected -hardware. Leaving this unset implies the default value of false, +hardware. +.IP +Leaving this unset implies the default value of false, which is almost always going to be right choice. If your LVDS-connected display on the other hand is extremely washed out (e.g. white on a lighter white), trying this option might clear the @@ -202,7 +195,9 @@ problem. .TP .BI "Option \*qLVDSFixedMode\*q \*q" boolean \*q Use a fixed set of timings for the LVDS output, independent of normal -xorg specified timings. The default value if left unspecified is +xorg specified timings. +.IP +The default value if left unspecified is true, which is what you want for a normal LVDS-connected LCD type of panel. If you are not sure about this, leave it at its default, which allows the driver to automatically figure out the correct fixed panel @@ -212,6 +207,7 @@ information. .BI "Option \*qXvMC\*q \*q" boolean \*q Enable XvMC driver. Current support MPEG2 MC on 915/945 and G33 series. User should provide absolute path to libIntelXvMC.so in XvMCConfig file. +.IP Default: Disabled. .SH OUTPUT CONFIGURATION @@ -220,7 +216,7 @@ detected outputs. You can use the .B xrandr tool to control outputs on the command line. Each output listed below may have one or more properties associated with it (like a binary EDID block if one is -found). Some outputs have unique properties which are described below. +found). Some outputs have unique properties which are described below. See the "MULTIHEAD CONFIGURATIONS" section below for additional information. .SS "VGA" VGA output port (typically exposed via an HD15 connector). @@ -281,7 +277,31 @@ Integrated TV output. Available properties include: .B BOTTOM, RIGHT, TOP, LEFT - margins .TP 2 -Adjusting these properties allows you to control the placement of your TV output buffer on the screen. +Adjusting these properties allows you to control the placement of your TV output buffer on the screen. The options with the same name can also be set in xorg.conf with integer value. + +.PP +.B BRIGHTNESS +- TV brightness, range 0-255 +.TP 2 +Adjust TV brightness, default value is 128. + +.PP +.B CONTRAST +- TV contrast, range 0-255 +.TP 2 +Adjust TV contrast, default value is 1.0 in chipset specific format. + +.PP +.B SATURATION +- TV saturation, range 0-255 +.TP 2 +Adjust TV saturation, default value is 1.0 in chipset specific format. + +.PP +.B HUE +- TV hue, range 0-255 +.TP 2 +Adjust TV hue, default value is 0. .PP .B TV_FORMAT @@ -289,12 +309,26 @@ Adjusting these properties allows you to control the placement of your TV output .TP 2 This property allows you to control the output standard used on your TV output port. You can select between NTSC-M, NTSC-443, NTSC-J, PAL-M, PAL-N, and PAL. +.PP +.B TV_Connector +- connector type +.TP 2 +This config option should be added to xorg.conf TV monitor's section, it allows you to force the TV output connector type, which bypass load detect and TV will always be taken as connected. You can select between S-Video, Composite and Component. + .SS "TMDS-1" First DVI SDVO output .SS "TMDS-2" Second DVI SDVO output +.SS "TMDS-1", "TMDS-2", "HDMI-1", "HDMI-2" +DVI/HDMI outputs. Avaliable common properties include: +.PP +.B BROADCAST_RGB +- method used to set RGB color range(full range 0-255, not full range 16-235) +.TP 2 +Adjusting this propertie allows you to set RGB color range on each channel in order to match HDTV requirment(default 0 for full range). Setting 1 means RGB color range is 16-235, 0 means RGB color range is 0-255 on each channel. + .PP SDVO and DVO TV outputs are not supported by the driver at this time. @@ -382,8 +416,71 @@ what is needed. Set LVDSFixedMode to false and then the user has full control over the resolution and timings sent to the LVDS-connected device, through the usual means in xorg. +.SH MULTIHEAD CONFIGURATIONS + +The number of independent outputs is dictated by the number of CRTCs +(in X parlance) a given chip supports. Most recent Intel chips have +two CRTCs, meaning that two separate framebuffers can be displayed +simultaneously, in an extended desktop configuration. If a chip +supports more outputs than it has CRTCs (say local flat panel, VGA and +TV in the case of many outputs), two of the outputs will have to be +"cloned", meaning that they display the same framebuffer contents (or +one displays a subset of another's framebuffer if the modes aren't +equal). + +You can use the "xrandr" tool, or various desktop utilities, to change +your output configuration at runtime. To statically configure your +outputs, you can use the "Monitor-<type>" options along with +additional monitor sections in your xorg.conf to create your screen +topology. The example below puts the VGA output to the right of the +builtin laptop screen, both running at 1024x768. + +.nf +.B "Section \*qMonitor\*q" +.BI " Identifier \*qLaptop FooBar Internal Display\*q" +.BI " Option \*qPosition\*q \*q0 0\*q" +.B "EndSection" + +.B "Section \*qMonitor\*q" +.BI " Identifier \*qSome Random CRT\*q" +.BI " Option \*qPosition\*q \*q1024 0\*q" +.BI " Option \*qRightOf\*q \*qLaptop FoodBar Internal Display\*q" +.B "EndSection" + +.B "Section \*qDevice\*q" +.BI " Driver \*qintel\*q" +.BI " Option \*qmonitor-LVDS\*q \*qLaptop FooBar Internal Display\*q" +.BI " Option \*qmonitor-VGA\*q \*qSome Random CRT\*q" +.B "EndSection" + +.SH TEXTURED VIDEO ATTRIBUTES +The driver supports the following X11 Xv attributes for Textured Video. +You can use the "xvattr" tool to query/set those attributes at runtime. + +.SS "XV_SYNC_TO_VBLANK" +XV_SYNC_TO_VBLANK is used to control whether textured adapter synchronizes +the screen update to the vblank to eliminate tearing. It is a Boolean +attribute with values of 0 (never sync) or 1 (always sync). An historic +value of -1 (sync for large windows only) will now be interpreted as 1, +(since the current approach for sync is not costly even with small +video windows). + +.SS "XV_BRIGHTNESS" + +.SS "XV_CONTRAST" + +.SH REPORTING BUGS + +The xf86-video-intel driver is part of the X.Org and Freedesktop.org +umbrella projects. Details on bug reporting can be found at +http://www.intellinuxgraphics.org/how_to_report_bug.html. Mailing +lists are also commonly used to report experiences and ask questions +about configuration and other topics. See lists.freedesktop.org for +more information (the xorg@lists.freedesktop.org mailing list is the +most appropriate place to ask X.Org and driver related questions). + .SH "SEE ALSO" -__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) +__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) .SH AUTHORS Authors include: Keith Whitwell, and also Jonathan Bian, Matthew J Sottek, Jeff Hartmann, Mark Vojkovich, Alan Hourihane, H. J. Lu. 830M and 845G diff --git a/driver/xf86-video-intel/src/Makefile.am b/driver/xf86-video-intel/src/Makefile.am index 6507a2b07..ad87afcc4 100644 --- a/driver/xf86-video-intel/src/Makefile.am +++ b/driver/xf86-video-intel/src/Makefile.am @@ -30,13 +30,14 @@ SUBDIRS = xvmc bios_reader ch7017 ch7xxx ivch sil164 tfp410 $(REGDUMPER) # _ladir passes a dummy rpath to libtool so the thing will actually link # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc. -AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRI_CFLAGS@ @PCIACCESS_CFLAGS@ \ - @XMODES_CFLAGS@ -DI830_XV -DI830_USE_XAA -DI830_USE_EXA +AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ \ + @PCIACCESS_CFLAGS@ -I$(top_srcdir)/uxa \ + @XMODES_CFLAGS@ -DI830_XV -DI830_USE_XAA -DI830_USE_EXA -DI830_USE_UXA intel_drv_la_LTLIBRARIES = intel_drv.la intel_drv_la_LDFLAGS = -module -avoid-version intel_drv_ladir = @moduledir@/drivers -intel_drv_la_LIBADD = +intel_drv_la_LIBADD = -lm @DRM_LIBS@ -ldrm_intel ../uxa/libuxa.la if XSERVER_LIBPCIACCESS intel_drv_la_LIBADD += @PCIACCESS_LIBS@ endif @@ -69,7 +70,9 @@ INTEL_XVMC_SRCS = \ i830_hwmc.h \ i830_hwmc.c \ i915_hwmc.c \ - i915_hwmc.h + i915_hwmc.h \ + i965_hwmc.c \ + i965_hwmc.h intel_drv_la_SOURCES = \ @@ -93,6 +96,8 @@ intel_drv_la_SOURCES = \ i830_accel.c \ i830_bios.c \ i830_bios.h \ + i830_batchbuffer.c \ + i830_batchbuffer.h \ i830_common.h \ i830_crt.c \ i830_cursor.c \ @@ -127,7 +132,8 @@ intel_drv_la_SOURCES = \ i830_xaa.c \ i830_render.c \ i915_render.c \ - i965_render.c + i965_render.c \ + drmmode_display.c INTEL_G4A = \ packed_yuv_sf.g4a \ @@ -155,7 +161,6 @@ INTEL_G4I = \ exa_wm_affine.g4i \ exa_wm_projective.g4i - INTEL_G4B = \ packed_yuv_sf.g4b \ packed_yuv_wm.g4b \ diff --git a/driver/xf86-video-intel/src/Makefile.in b/driver/xf86-video-intel/src/Makefile.in index fbdf2f79a..c5dc4856e 100644 --- a/driver/xf86-video-intel/src/Makefile.in +++ b/driver/xf86-video-intel/src/Makefile.in @@ -90,44 +90,47 @@ intel_drv_laLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(intel_drv_la_LTLIBRARIES) am__DEPENDENCIES_1 = @DRI_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -intel_drv_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ +intel_drv_la_DEPENDENCIES = ../uxa/libuxa.la $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_2) am__intel_drv_la_SOURCES_DIST = brw_defines.h brw_structs.h common.h \ i2c_vid.h i810_accel.c i810_common.h i810_cursor.c i810_dga.c \ i810_driver.c i810.h i810_io.c i810_memory.c i810_reg.h \ i810_ring.h i810_video.c i810_wmark.c i830_3d.c i830_accel.c \ - i830_bios.c i830_bios.h i830_common.h i830_crt.c i830_cursor.c \ - i830_debug.c i830_debug.h i830_display.c i830_display.h \ - i830_quirks.c i830_driver.c i830_dvo.c i830.h i830_hdmi.c \ - i830_i2c.c i830_io.c i830_lvds.c i830_memory.c i830_modes.c \ - i830_video.c i830_video.h i830_reg.h i830_ring.h i830_sdvo.c \ - i830_sdvo.h i830_sdvo_regs.h i830_tv.c i915_3d.c i915_3d.h \ - i915_reg.h i915_video.c i965_video.c i830_exa.c i830_xaa.c \ - i830_render.c i915_render.c i965_render.c local_xf86Rename.h \ - parser/xf86Parser.h parser/xf86Optrec.h modes/xf86Modes.h \ - modes/xf86Modes.c modes/xf86cvt.c modes/xf86Crtc.h \ - modes/xf86Crtc.c modes/xf86Cursors.c modes/xf86EdidModes.c \ - modes/xf86RandR12.c modes/xf86RandR12.h modes/xf86Rename.h \ - modes/xf86Rotate.c modes/xf86DiDGA.c i810_dri.c i810_dri.h \ - i830_dri.c i810_hwmc.c i830_dri.h i830_hwmc.h i830_hwmc.c \ - i915_hwmc.c i915_hwmc.h + i830_bios.c i830_bios.h i830_batchbuffer.c i830_batchbuffer.h \ + i830_common.h i830_crt.c i830_cursor.c i830_debug.c \ + i830_debug.h i830_display.c i830_display.h i830_quirks.c \ + i830_driver.c i830_dvo.c i830.h i830_hdmi.c i830_i2c.c \ + i830_io.c i830_lvds.c i830_memory.c i830_modes.c i830_video.c \ + i830_video.h i830_reg.h i830_ring.h i830_sdvo.c i830_sdvo.h \ + i830_sdvo_regs.h i830_tv.c i915_3d.c i915_3d.h i915_reg.h \ + i915_video.c i965_video.c i830_exa.c i830_xaa.c i830_render.c \ + i915_render.c i965_render.c drmmode_display.c \ + local_xf86Rename.h parser/xf86Parser.h parser/xf86Optrec.h \ + modes/xf86Modes.h modes/xf86Modes.c modes/xf86cvt.c \ + modes/xf86Crtc.h modes/xf86Crtc.c modes/xf86Cursors.c \ + modes/xf86EdidModes.c modes/xf86RandR12.c modes/xf86RandR12.h \ + modes/xf86Rename.h modes/xf86Rotate.c modes/xf86DiDGA.c \ + i810_dri.c i810_dri.h i830_dri.c i810_hwmc.c i830_dri.h \ + i830_hwmc.h i830_hwmc.c i915_hwmc.c i915_hwmc.h i965_hwmc.c \ + i965_hwmc.h am__objects_1 = xf86Modes.lo xf86cvt.lo xf86Crtc.lo xf86Cursors.lo \ xf86EdidModes.lo xf86RandR12.lo xf86Rotate.lo xf86DiDGA.lo @XMODES_TRUE@am__objects_2 = $(am__objects_1) am__objects_3 = i810_dri.lo i830_dri.lo i810_hwmc.lo @DRI_TRUE@am__objects_4 = $(am__objects_3) -am__objects_5 = i830_hwmc.lo i915_hwmc.lo +am__objects_5 = i830_hwmc.lo i915_hwmc.lo i965_hwmc.lo @XVMC_TRUE@am__objects_6 = $(am__objects_5) am_intel_drv_la_OBJECTS = i810_accel.lo i810_cursor.lo i810_dga.lo \ i810_driver.lo i810_io.lo i810_memory.lo i810_video.lo \ i810_wmark.lo i830_3d.lo i830_accel.lo i830_bios.lo \ - i830_crt.lo i830_cursor.lo i830_debug.lo i830_display.lo \ - i830_quirks.lo i830_driver.lo i830_dvo.lo i830_hdmi.lo \ - i830_i2c.lo i830_io.lo i830_lvds.lo i830_memory.lo \ - i830_modes.lo i830_video.lo i830_sdvo.lo i830_tv.lo i915_3d.lo \ - i915_video.lo i965_video.lo i830_exa.lo i830_xaa.lo \ - i830_render.lo i915_render.lo i965_render.lo $(am__objects_2) \ - $(am__objects_4) $(am__objects_6) + i830_batchbuffer.lo i830_crt.lo i830_cursor.lo i830_debug.lo \ + i830_display.lo i830_quirks.lo i830_driver.lo i830_dvo.lo \ + i830_hdmi.lo i830_i2c.lo i830_io.lo i830_lvds.lo \ + i830_memory.lo i830_modes.lo i830_video.lo i830_sdvo.lo \ + i830_tv.lo i915_3d.lo i915_video.lo i965_video.lo i830_exa.lo \ + i830_xaa.lo i830_render.lo i915_render.lo i965_render.lo \ + drmmode_display.lo $(am__objects_2) $(am__objects_4) \ + $(am__objects_6) intel_drv_la_OBJECTS = $(am_intel_drv_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -187,6 +190,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -198,6 +205,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -242,6 +250,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -249,6 +259,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -260,15 +272,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -285,6 +291,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -292,18 +301,22 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ @@ -316,13 +329,15 @@ SUBDIRS = xvmc bios_reader ch7017 ch7xxx ivch sil164 tfp410 $(REGDUMPER) # -avoid-version prevents gratuitous .0.0.0 version numbers on the end # _ladir passes a dummy rpath to libtool so the thing will actually link # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc. -AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRI_CFLAGS@ @PCIACCESS_CFLAGS@ \ - @XMODES_CFLAGS@ -DI830_XV -DI830_USE_XAA -DI830_USE_EXA +AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ \ + @PCIACCESS_CFLAGS@ -I$(top_srcdir)/uxa \ + @XMODES_CFLAGS@ -DI830_XV -DI830_USE_XAA -DI830_USE_EXA -DI830_USE_UXA intel_drv_la_LTLIBRARIES = intel_drv.la intel_drv_la_LDFLAGS = -module -avoid-version intel_drv_ladir = @moduledir@/drivers -intel_drv_la_LIBADD = $(am__append_1) $(am__append_4) +intel_drv_la_LIBADD = -lm @DRM_LIBS@ -ldrm_intel ../uxa/libuxa.la \ + $(am__append_1) $(am__append_4) XMODE_SRCS = \ local_xf86Rename.h \ parser/xf86Parser.h \ @@ -351,20 +366,23 @@ INTEL_XVMC_SRCS = \ i830_hwmc.h \ i830_hwmc.c \ i915_hwmc.c \ - i915_hwmc.h + i915_hwmc.h \ + i965_hwmc.c \ + i965_hwmc.h intel_drv_la_SOURCES = brw_defines.h brw_structs.h common.h i2c_vid.h \ i810_accel.c i810_common.h i810_cursor.c i810_dga.c \ i810_driver.c i810.h i810_io.c i810_memory.c i810_reg.h \ i810_ring.h i810_video.c i810_wmark.c i830_3d.c i830_accel.c \ - i830_bios.c i830_bios.h i830_common.h i830_crt.c i830_cursor.c \ - i830_debug.c i830_debug.h i830_display.c i830_display.h \ - i830_quirks.c i830_driver.c i830_dvo.c i830.h i830_hdmi.c \ - i830_i2c.c i830_io.c i830_lvds.c i830_memory.c i830_modes.c \ - i830_video.c i830_video.h i830_reg.h i830_ring.h i830_sdvo.c \ - i830_sdvo.h i830_sdvo_regs.h i830_tv.c i915_3d.c i915_3d.h \ - i915_reg.h i915_video.c i965_video.c i830_exa.c i830_xaa.c \ - i830_render.c i915_render.c i965_render.c $(am__append_2) \ + i830_bios.c i830_bios.h i830_batchbuffer.c i830_batchbuffer.h \ + i830_common.h i830_crt.c i830_cursor.c i830_debug.c \ + i830_debug.h i830_display.c i830_display.h i830_quirks.c \ + i830_driver.c i830_dvo.c i830.h i830_hdmi.c i830_i2c.c \ + i830_io.c i830_lvds.c i830_memory.c i830_modes.c i830_video.c \ + i830_video.h i830_reg.h i830_ring.h i830_sdvo.c i830_sdvo.h \ + i830_sdvo_regs.h i830_tv.c i915_3d.c i915_3d.h i915_reg.h \ + i915_video.c i965_video.c i830_exa.c i830_xaa.c i830_render.c \ + i915_render.c i965_render.c drmmode_display.c $(am__append_2) \ $(am__append_3) $(am__append_5) INTEL_G4A = \ packed_yuv_sf.g4a \ @@ -493,6 +511,7 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drmmode_display.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i810_accel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i810_cursor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i810_dga.Plo@am__quote@ @@ -505,6 +524,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i810_wmark.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i830_3d.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i830_accel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i830_batchbuffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i830_bios.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i830_crt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i830_cursor.Plo@am__quote@ @@ -531,6 +551,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i915_hwmc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i915_render.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i915_video.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_hwmc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_render.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i965_video.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xf86Crtc.Plo@am__quote@ diff --git a/driver/xf86-video-intel/src/bios_reader/Makefile.am b/driver/xf86-video-intel/src/bios_reader/Makefile.am index c4da95736..9f1c45a57 100644 --- a/driver/xf86-video-intel/src/bios_reader/Makefile.am +++ b/driver/xf86-video-intel/src/bios_reader/Makefile.am @@ -1,6 +1,7 @@ -AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @XMODES_CFLAGS@ @PCIACCESS_CFLAGS@ +AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @XMODES_CFLAGS@ @PCIACCESS_CFLAGS@ \ + -DREG_DUMPER -noinst_PROGRAMS = bios_reader $(BIOS_DUMPER) +noinst_PROGRAMS = bios_reader $(BIOS_DUMPER) $(SWF_DUMPER) if LIBPCIACCESS BIOS_DUMPER = bios_dumper @@ -9,4 +10,10 @@ bios_dumper_SOURCES = bios_dumper.c bios_dumper_LDADD = $(PCIACCESS_LIBS) +SWF_DUMPER = swf_dumper + +swf_dumper_SOURCES = swf_dumper.c + +swf_dumper_LDADD = $(PCIACCESS_LIBS) + endif diff --git a/driver/xf86-video-intel/src/bios_reader/Makefile.in b/driver/xf86-video-intel/src/bios_reader/Makefile.in index eff3f44a2..9cd938eae 100644 --- a/driver/xf86-video-intel/src/bios_reader/Makefile.in +++ b/driver/xf86-video-intel/src/bios_reader/Makefile.in @@ -36,7 +36,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -noinst_PROGRAMS = bios_reader$(EXEEXT) $(am__EXEEXT_1) +noinst_PROGRAMS = bios_reader$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) subdir = src/bios_reader DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -48,6 +48,7 @@ mkinstalldirs = $(SHELL) $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = @LIBPCIACCESS_TRUE@am__EXEEXT_1 = bios_dumper$(EXEEXT) +@LIBPCIACCESS_TRUE@am__EXEEXT_2 = swf_dumper$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) am__bios_dumper_SOURCES_DIST = bios_dumper.c @LIBPCIACCESS_TRUE@am_bios_dumper_OBJECTS = bios_dumper.$(OBJEXT) @@ -57,6 +58,10 @@ am__DEPENDENCIES_1 = bios_reader_SOURCES = bios_reader.c bios_reader_OBJECTS = bios_reader.$(OBJEXT) bios_reader_LDADD = $(LDADD) +am__swf_dumper_SOURCES_DIST = swf_dumper.c +@LIBPCIACCESS_TRUE@am_swf_dumper_OBJECTS = swf_dumper.$(OBJEXT) +swf_dumper_OBJECTS = $(am_swf_dumper_OBJECTS) +@LIBPCIACCESS_TRUE@swf_dumper_DEPENDENCIES = $(am__DEPENDENCIES_1) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles @@ -65,8 +70,9 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(bios_dumper_SOURCES) bios_reader.c -DIST_SOURCES = $(am__bios_dumper_SOURCES_DIST) bios_reader.c +SOURCES = $(bios_dumper_SOURCES) bios_reader.c $(swf_dumper_SOURCES) +DIST_SOURCES = $(am__bios_dumper_SOURCES_DIST) bios_reader.c \ + $(am__swf_dumper_SOURCES_DIST) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -107,6 +113,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -118,6 +128,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -162,6 +173,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -169,6 +182,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -180,15 +195,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -205,6 +214,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -212,26 +224,35 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ -AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @XMODES_CFLAGS@ @PCIACCESS_CFLAGS@ +AM_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @XMODES_CFLAGS@ @PCIACCESS_CFLAGS@ \ + -DREG_DUMPER + @LIBPCIACCESS_TRUE@BIOS_DUMPER = bios_dumper @LIBPCIACCESS_TRUE@bios_dumper_SOURCES = bios_dumper.c @LIBPCIACCESS_TRUE@bios_dumper_LDADD = $(PCIACCESS_LIBS) +@LIBPCIACCESS_TRUE@SWF_DUMPER = swf_dumper +@LIBPCIACCESS_TRUE@swf_dumper_SOURCES = swf_dumper.c +@LIBPCIACCESS_TRUE@swf_dumper_LDADD = $(PCIACCESS_LIBS) all: all-am .SUFFIXES: @@ -278,6 +299,9 @@ bios_dumper$(EXEEXT): $(bios_dumper_OBJECTS) $(bios_dumper_DEPENDENCIES) bios_reader$(EXEEXT): $(bios_reader_OBJECTS) $(bios_reader_DEPENDENCIES) @rm -f bios_reader$(EXEEXT) $(LINK) $(bios_reader_LDFLAGS) $(bios_reader_OBJECTS) $(bios_reader_LDADD) $(LIBS) +swf_dumper$(EXEEXT): $(swf_dumper_OBJECTS) $(swf_dumper_DEPENDENCIES) + @rm -f swf_dumper$(EXEEXT) + $(LINK) $(swf_dumper_LDFLAGS) $(swf_dumper_OBJECTS) $(swf_dumper_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -287,6 +311,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bios_dumper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bios_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swf_dumper.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ diff --git a/driver/xf86-video-intel/src/bios_reader/bios_reader.c b/driver/xf86-video-intel/src/bios_reader/bios_reader.c index dbcd15038..fc5182141 100644 --- a/driver/xf86-video-intel/src/bios_reader/bios_reader.c +++ b/driver/xf86-video-intel/src/bios_reader/bios_reader.c @@ -38,6 +38,8 @@ #include "../i830_bios.h" +#include <X11/Xfuncproto.h> +#include <X11/Xmd.h> #define _PARSE_EDID_ #include "edid.h" @@ -59,42 +61,66 @@ struct _fake_i830 *pI830 = &I830; #define YESNO(val) ((val) ? "yes" : "no") +struct bdb_block { + uint8_t id; + uint16_t size; + void *data; +}; + +struct bdb_header *bdb; static int tv_present; static int lvds_present; static int panel_type; -static void *find_section(struct bdb_header *bdb, int section_id) +static struct bdb_block *find_section(int section_id) { - unsigned char *base = (unsigned char *)bdb; - int index = 0; - uint16_t total, current_size; - unsigned char current_id; - - /* skip to first section */ - index += bdb->header_size; - total = bdb->bdb_size; - - /* walk the sections looking for section_id */ - while (index < total) { - current_id = *(base + index); - index++; - current_size = *((uint16_t *)(base + index)); - index += 2; - if (current_id == section_id) - return base + index; - index += current_size; + struct bdb_block *block; + unsigned char *base = (unsigned char *)bdb; + int index = 0; + uint16_t total, current_size; + unsigned char current_id; + + /* skip to first section */ + index += bdb->header_size; + total = bdb->bdb_size; + + block = malloc(sizeof(*block)); + if (!block) { + fprintf(stderr, "out of memory\n"); + exit(-1); + } + + /* walk the sections looking for section_id */ + while (index < total) { + current_id = *(base + index); + index++; + current_size = *((uint16_t *)(base + index)); + index += 2; + if (current_id == section_id) { + block->id = current_id; + block->size = current_size; + block->data = base + index; + return block; } + index += current_size; + } - return NULL; + free(block); + return NULL; } -static void dump_general_features(void *data) +static void dump_general_features(void) { - struct bdb_general_features *features = data; + struct bdb_general_features *features; + struct bdb_block *block; + + block = find_section(BDB_GENERAL_FEATURES); - if (!data) + if (!block) return; + features = block->data; + printf("General features block:\n"); printf("\tPanel fitting: "); @@ -133,16 +159,25 @@ static void dump_general_features(void *data) tv_present = 1; /* should be based on whether TV DAC exists */ lvds_present = 1; /* should be based on IS_MOBILE() */ + + free(block); } -static void dump_general_definitions(void *data) +static void dump_general_definitions(void) { - struct bdb_general_definitions *defs = data; - unsigned char *lvds_data = defs->tv_or_lvds_info; + struct bdb_block *block; + struct bdb_general_definitions *defs; + struct child_device_config *child; + int i; + char child_id[11]; - if (!data) + block = find_section(BDB_GENERAL_DEFINITIONS); + + if (!block) return; + defs = block->data; + printf("General definitions block:\n"); printf("\tCRT DDC GMBUS addr: 0x%02x\n", defs->crt_ddc_gmbus_pin); @@ -153,18 +188,71 @@ static void dump_general_definitions(void *data) printf("\tBoot display type: 0x%02x%02x\n", defs->boot_display[1], defs->boot_display[0]); printf("\tTV data block present: %s\n", YESNO(tv_present)); - if (tv_present) - lvds_data += 33; - if (lvds_present) - printf("\tLFP DDC GMBUS addr: 0x%02x\n", lvds_data[19]); + for (i = 0; i < 4; i++) { + child = &defs->devices[i]; + if (!child->device_type) { + printf("\tChild device %d not present\n", i); + continue; + } + strncpy(child_id, (char *)child->device_id, 10); + child_id[10] = 0; + printf("\tChild %d device info:\n", i); + printf("\t\tSignature: %s\n", child_id); + printf("\t\tAIM offset: %d\n", child->addin_offset); + printf("\t\tDVO port: 0x%02x\n", child->dvo_port); + } + + free(block); } -static void dump_lvds_options(void *data) +#if 0 +static void dump_child_devices(void) { - struct bdb_lvds_options *options = data; + struct bdb_block *block; + struct bdb_child_devices *child_devs; + struct child_device_config *child; + int i; + + block = find_section(BDB_CHILD_DEVICE_TABLE); + if (!block) { + printf("No child device table found\n"); + return; + } + + child_devs = block->data; + + printf("Child devices block:\n"); + for (i = 0; i < DEVICE_CHILD_SIZE; i++) { + child = &child_devs->children[i]; + /* Skip nonexistent children */ + if (!child->device_type) + continue; + printf("\tChild device %d\n", i); + printf("\t\tType: 0x%04x\n", child->device_type); + printf("\t\tDVO port: 0x%02x\n", child->dvo_port); + printf("\t\tI2C pin: 0x%02x\n", child->i2c_pin); + printf("\t\tSlave addr: 0x%02x\n", child->slave_addr); + printf("\t\tDDC pin: 0x%02x\n", child->ddc_pin); + printf("\t\tDVO config: 0x%02x\n", child->dvo_cfg); + printf("\t\tDVO wiring: 0x%02x\n", child->dvo_wiring); + } + + free(block); +} +#endif + +static void dump_lvds_options(void) +{ + struct bdb_block *block; + struct bdb_lvds_options *options; - if (!data) + block = find_section(BDB_LVDS_OPTIONS); + if (!block) { + printf("No LVDS options block\n"); return; + } + + options = block->data; printf("LVDS options block:\n"); @@ -178,19 +266,58 @@ static void dump_lvds_options(void *data) printf("\tPFIT enhanced text mode: %s\n", YESNO(options->pfit_text_mode_enhanced)); printf("\tPFIT mode: %d\n", options->pfit_mode); + + free(block); } -static void dump_lvds_data(void *data, unsigned char *base) +static void dump_lvds_ptr_data(void) { - struct bdb_lvds_lfp_data *lvds_data = data; + struct bdb_block *block; + struct bdb_lvds_lfp_data_ptrs *ptrs; + struct lvds_fp_timing *fp_timing; + + block = find_section(BDB_LVDS_LFP_DATA_PTRS); + if (!block) { + printf("No LFP data pointers block\n"); + return; + } + + ptrs = block->data; + fp_timing = (struct lvds_fp_timing *)((uint8_t *)bdb + + ptrs->ptr[panel_type].fp_timing_offset); + + printf("LVDS timing pointer data:\n"); + printf(" Number of entries: %d\n", ptrs->lvds_entries); + + printf("\tpanel type %02i: %dx%d\n", panel_type, fp_timing->x_res, + fp_timing->y_res); + + free(block); +} + +static void dump_lvds_data(void) +{ + struct bdb_block *block; + struct bdb_lvds_lfp_data *lvds_data; + int num_entries; int i; + int hdisplay, hsyncstart, hsyncend, htotal; + int vdisplay, vsyncstart, vsyncend, vtotal; + float clock; - if (!data) + block = find_section(BDB_LVDS_LFP_DATA); + if (!block) { + printf("No LVDS data block\n"); return; + } + + lvds_data = block->data; + num_entries = block->size / sizeof(struct bdb_lvds_lfp_data_entry); printf("LVDS panel data block (preferred block marked with '*'):\n"); + printf(" Number of entries: %d\n", num_entries); - for (i = 0; i < 16; i++) { + for (i = 0; i < num_entries; i++) { struct bdb_lvds_lfp_data_entry *lfp_data = &lvds_data->data[i]; uint8_t *timing_data = (uint8_t *)&lfp_data->dvo_timing; char marker; @@ -200,36 +327,117 @@ static void dump_lvds_data(void *data, unsigned char *base) else marker = ' '; + hdisplay = _H_ACTIVE(timing_data); + hsyncstart = hdisplay + _H_SYNC_OFF(timing_data); + hsyncend = hsyncstart + _H_SYNC_WIDTH(timing_data); + htotal = hdisplay + _H_BLANK(timing_data); + + vdisplay = _V_ACTIVE(timing_data); + vsyncstart = vdisplay + _V_SYNC_OFF(timing_data); + vsyncend = vsyncstart + _V_SYNC_WIDTH(timing_data); + vtotal = vdisplay + _V_BLANK(timing_data); + clock = _PIXEL_CLOCK(timing_data) / 1000; + printf("%c\tpanel type %02i: %dx%d clock %d\n", marker, i, lfp_data->fp_timing.x_res, lfp_data->fp_timing.y_res, _PIXEL_CLOCK(timing_data)); - printf("\t\ttimings: %d %d %d %d %d %d %d %d\n", - _H_ACTIVE(timing_data), - _H_BLANK(timing_data), - _H_SYNC_OFF(timing_data), - _H_SYNC_WIDTH(timing_data), - _V_ACTIVE(timing_data), - _V_BLANK(timing_data), - _V_SYNC_OFF(timing_data), - _V_SYNC_WIDTH(timing_data)); + printf("\t\tinfo:\n"); + printf("\t\t LVDS: 0x%08lx\n", + (unsigned long)lfp_data->fp_timing.lvds_reg_val); + printf("\t\t PP_ON_DELAYS: 0x%08lx\n", + (unsigned long)lfp_data->fp_timing.pp_on_reg_val); + printf("\t\t PP_OFF_DELAYS: 0x%08lx\n", + (unsigned long)lfp_data->fp_timing.pp_off_reg_val); + printf("\t\t PP_DIVISOR: 0x%08lx\n", + (unsigned long)lfp_data->fp_timing.pp_cycle_reg_val); + printf("\t\t PFIT: 0x%08lx\n", + (unsigned long)lfp_data->fp_timing.pfit_reg_val); + printf("\t\ttimings: %d %d %d %d %d %d %d %d %.2f (%s)\n", + hdisplay, hsyncstart, hsyncend, htotal, + vdisplay, vsyncstart, vsyncend, vtotal, clock, + (hsyncend > htotal || vsyncend > vtotal) ? + "BAD!" : "good"); } + free(block); +} +static void dump_driver_feature(void) +{ + struct bdb_block *block; + struct bdb_driver_feature *feature; + + block = find_section(BDB_DRIVER_FEATURES); + if (!block) { + printf("No Driver feature data block\n"); + return; + } + feature = block->data; + + printf("Driver feature Data Block:\n"); + printf("\tBoot Device Algorithm: %s\n", feature->boot_dev_algorithm ? + "driver default": "os default"); + printf("\tBlock display switching when DVD active: %s\n", + YESNO(feature->block_display_switch)); + printf("\tAllow display switching when in Full Screen DOS: %s\n", + YESNO(feature->allow_display_switch)); + printf("\tHot Plug DVO: %s\n", YESNO(feature->hotplug_dvo)); + printf("\tDual View Zoom: %s\n", YESNO(feature->dual_view_zoom)); + printf("\tDriver INT 15h hook: %s\n", YESNO(feature->int15h_hook)); + printf("\tEnable Sprite in Clone Mode: %s\n", YESNO(feature->sprite_in_clone)); + printf("\tUse 00000110h ID for Primary LFP: %s\n", YESNO(feature->primary_lfp_id)); + printf("\tBoot Mode X: %u\n", feature->boot_mode_x); + printf("\tBoot Mode Y: %u\n", feature->boot_mode_y); + printf("\tBoot Mode Bpp: %u\n", feature->boot_mode_bpp); + printf("\tBoot Mode Refresh: %u\n", feature->boot_mode_refresh); + printf("\tEnable LFP as primary: %s\n", YESNO(feature->enable_lfp_primary)); + printf("\tSelective Mode Pruning: %s\n", YESNO(feature->selective_mode_pruning)); + printf("\tDual-Frequency Graphics Technology: %s\n", YESNO(feature->dual_frequency)); + printf("\tDefault Render Clock Frequency: %s\n", feature->render_clock_freq ? "low" : "high"); + printf("\tNT 4.0 Dual Display Clone Support: %s\n", YESNO(feature->nt_clone_support)); + printf("\tDefault Power Scheme user interface: %s\n", feature->power_scheme_ui ? "3rd party":"CUI"); + printf("\tSprite Display Assignment when Overlay is Active in Clone Mode: %s\n", + feature->sprite_display_assign ? "primary" : "secondary"); + printf("\tDisplay Maintain Aspect Scaling via CUI: %s\n", YESNO(feature->cui_aspect_scaling)); + printf("\tPreserve Aspect Ratio: %s\n", YESNO(feature->preserve_aspect_ratio)); + printf("\tEnable SDVO device power down: %s\n", YESNO(feature->sdvo_device_power_down)); + printf("\tCRT hotplug: %s\n", YESNO(feature->crt_hotplug)); + printf("\tLVDS config: "); + switch (feature->lvds_config) { + case BDB_DRIVER_NO_LVDS: + printf("No LVDS\n"); + break; + case BDB_DRIVER_INT_LVDS: + printf("Integrated LVDS\n"); + break; + case BDB_DRIVER_SDVO_LVDS: + printf("SDVO LVDS\n"); + break; + case BDB_DRIVER_EDP: + printf("Embedded DisplayPort\n"); + break; + } + printf("\tDefine Display statically: %s\n", YESNO(feature->static_display)); + printf("\tLegacy CRT max X: %d\n", feature->legacy_crt_max_x); + printf("\tLegacy CRT max Y: %d\n", feature->legacy_crt_max_y); + printf("\tLegacy CRT max refresh: %d\n", feature->legacy_crt_max_refresh); + free(block); } int main(int argc, char **argv) { int fd; struct vbt_header *vbt = NULL; - struct bdb_header *bdb; int vbt_off, bdb_off, i; char *filename = "bios"; struct stat finfo; + struct bdb_block *block; + char signature[17]; if (argc != 2) { printf("usage: %s <rom file>\n", argv[0]); return 1; } - + filename = argv[1]; fd = open(filename, O_RDONLY); @@ -267,13 +475,29 @@ int main(int argc, char **argv) bdb_off = vbt_off + vbt->bdb_offset; bdb = (struct bdb_header *)(pI830->VBIOS + bdb_off); - printf("BDB sig: %16s\n", bdb->signature); + strncpy(signature, (char *)bdb->signature, 16); + signature[16] = 0; + printf("BDB sig: %s\n", signature); printf("BDB vers: %d.%d\n", bdb->version / 100, bdb->version % 100); - dump_general_features(find_section(bdb, BDB_GENERAL_FEATURES)); - dump_general_definitions(find_section(bdb, BDB_GENERAL_DEFINITIONS)); - dump_lvds_options(find_section(bdb, BDB_LVDS_OPTIONS)); - dump_lvds_data(find_section(bdb, BDB_LVDS_LFP_DATA), bdb); + printf("Available sections: "); + for (i = 0; i < 256; i++) { + block = find_section(i); + if (!block) + continue; + printf("%d ", i); + free(block); + } + printf("\n"); + + dump_general_features(); + dump_general_definitions(); +// dump_child_devices(); + dump_lvds_options(); + dump_lvds_data(); + dump_lvds_ptr_data(); + + dump_driver_feature(); return 0; } diff --git a/driver/xf86-video-intel/src/bios_reader/swf_dumper.c b/driver/xf86-video-intel/src/bios_reader/swf_dumper.c new file mode 100644 index 000000000..a6cf04688 --- /dev/null +++ b/driver/xf86-video-intel/src/bios_reader/swf_dumper.c @@ -0,0 +1,110 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Authors: + * Eric Anholt <eric@anholt.net> + * Jesse Barnes <jesse.barnes@intel.com> + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> +#include <errno.h> +#include <pciaccess.h> +#include <err.h> + +#include "../i810_reg.h" +#include "../i830_bios.h" + +#ifndef DEFFILEMODE +#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) /* 0666*/ +#endif + +static uint32_t read32(void *base, int reg) +{ + uint32_t *addr = (uint32_t *)((unsigned char *)(base) + reg); + + return *addr; +} + +#if 0 +static void write32(void *base, int reg, uint32_t val) +{ + uint32_t *addr = (uint32_t *)((unsigned char *)(base) + reg); + *addr = val; +} +#endif + +static void usage(void) +{ + fprintf(stderr, "usage: swf_dumper\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + struct pci_device *dev; + int err; + void *addr; + + if (argc != 1) + usage(); + + err = pci_system_init(); + if (err != 0) { + fprintf(stderr, "Couldn't initialize PCI system: %s\n", strerror(err)); + exit(1); + } + + /* Grab the graphics card */ + dev = pci_device_find_by_slot(0, 0, 2, 0); + if (dev == NULL) + errx(1, "Couldn't find graphics card"); + + err = pci_device_probe(dev); + if (err != 0) { + fprintf(stderr, "Couldn't probe graphics card: %s\n", strerror(err)); + exit(1); + } + + if (dev->vendor_id != 0x8086) + errx(1, "Graphics card is non-intel"); + + err = pci_device_map_range(dev, dev->regions[0].base_addr, + dev->regions[0].size, + PCI_DEV_MAP_FLAG_WRITABLE, &addr); + if (err) { + fprintf(stderr, "Couldn't map MMIO space: %s\n", strerror(err)); + exit(1); + } + + printf("SWF14: 0x%08x\n", read32(addr, SWF14)); + + pci_system_cleanup(); + + return 0; +} diff --git a/driver/xf86-video-intel/src/brw_defines.h b/driver/xf86-video-intel/src/brw_defines.h index 13cb43966..0df2491c8 100644 --- a/driver/xf86-video-intel/src/brw_defines.h +++ b/driver/xf86-video-intel/src/brw_defines.h @@ -466,6 +466,9 @@ #define BRW_SURFACE_BUFFER 4 #define BRW_SURFACE_NULL 7 +#define BRW_BORDER_COLOR_MODE_DEFAULT 0 +#define BRW_BORDER_COLOR_MODE_LEGACY 1 + #define BRW_TEXCOORDMODE_WRAP 0 #define BRW_TEXCOORDMODE_MIRROR 1 #define BRW_TEXCOORDMODE_CLAMP 2 diff --git a/driver/xf86-video-intel/src/brw_structs.h b/driver/xf86-video-intel/src/brw_structs.h index ef7906b4a..022915d1b 100644 --- a/driver/xf86-video-intel/src/brw_structs.h +++ b/driver/xf86-video-intel/src/brw_structs.h @@ -840,10 +840,26 @@ struct brw_wm_unit_state float global_depth_offset_scale; }; -struct brw_sampler_default_color { +/* The hardware supports two different modes for border color. The + * default (OpenGL) mode uses floating-point color channels, while the + * legacy mode uses 4 bytes. + * + * More significantly, the legacy mode respects the components of the + * border color for channels not present in the source, (whereas the + * default mode will ignore the border color's alpha channel and use + * alpha==1 for an RGB source, for example). + * + * The legacy mode matches the semantics specified by the Render + * extension. + */ +struct brw_sampler_default_border_color { float color[4]; }; +struct brw_sampler_legacy_border_color { + uint8_t color[4]; +}; + struct brw_sampler_state { @@ -857,7 +873,7 @@ struct brw_sampler_state unsigned int base_level:5; unsigned int pad:1; unsigned int lod_preclamp:1; - unsigned int default_color_mode:1; + unsigned int border_color_mode:1; unsigned int pad0:1; unsigned int disable:1; } ss0; @@ -876,7 +892,7 @@ struct brw_sampler_state struct { unsigned int pad:5; - unsigned int default_color_pointer:27; + unsigned int border_color_pointer:27; } ss2; struct diff --git a/driver/xf86-video-intel/src/ch7017/Makefile.in b/driver/xf86-video-intel/src/ch7017/Makefile.in index 6a7a2ec3d..e6b109ebc 100644 --- a/driver/xf86-video-intel/src/ch7017/Makefile.in +++ b/driver/xf86-video-intel/src/ch7017/Makefile.in @@ -108,6 +108,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -119,6 +123,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -163,6 +168,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -170,6 +177,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -181,15 +190,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -206,6 +209,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -213,18 +219,22 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ diff --git a/driver/xf86-video-intel/src/ch7xxx/Makefile.in b/driver/xf86-video-intel/src/ch7xxx/Makefile.in index 8c65c9025..5e2fb3713 100644 --- a/driver/xf86-video-intel/src/ch7xxx/Makefile.in +++ b/driver/xf86-video-intel/src/ch7xxx/Makefile.in @@ -108,6 +108,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -119,6 +123,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -163,6 +168,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -170,6 +177,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -181,15 +190,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -206,6 +209,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -213,18 +219,22 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ diff --git a/driver/xf86-video-intel/src/common.h b/driver/xf86-video-intel/src/common.h index f2ae502b2..8b32a66e3 100644 --- a/driver/xf86-video-intel/src/common.h +++ b/driver/xf86-video-intel/src/common.h @@ -81,8 +81,6 @@ extern void I830InitpScrn(ScrnInfoPtr pScrn); extern int I830EntityIndex; extern const char *I810vgahwSymbols[]; extern const char *I810ramdacSymbols[]; -extern const char *I810int10Symbols[]; -extern const char *I810vbeSymbols[]; extern const char *I810ddcSymbols[]; extern const char *I810fbSymbols[]; extern const char *I810xaaSymbols[]; @@ -106,21 +104,6 @@ extern void I830DPRINTF_stub(const char *filename, int line, #define RecPtr pI810 #endif -/* BIOS debug macro */ -#define xf86ExecX86int10_wrapper(pInt, pScrn) do { \ - ErrorF("Executing (ax == 0x%x) BIOS call at %s:%d\n", pInt->ax, __FILE__, __LINE__); \ - if (I810_DEBUG & DEBUG_VERBOSE_BIOS) { \ - ErrorF("Checking Error state before execution\n"); \ - PrintErrorState(pScrn); \ - } \ - xf86ExecX86int10(pInt); \ - if(I810_DEBUG & DEBUG_VERBOSE_BIOS) { \ - ErrorF("Checking Error state after execution\n"); \ - usleep(50000); \ - PrintErrorState(pScrn); \ - } \ -} while (0) - static inline void memset_volatile(volatile void *b, int c, size_t len) { int i; @@ -258,6 +241,13 @@ extern int I810_DEBUG; #define PCI_CHIP_I945_GME_BRIDGE 0x27AC #endif +#ifndef PCI_CHIP_IGD_GM +#define PCI_CHIP_IGD_GM 0xA011 +#define PCI_CHIP_IGD_GM_BRIDGE 0xA010 +#define PCI_CHIP_IGD_G 0xA001 +#define PCI_CHIP_IGD_G_BRIDGE 0xA000 +#endif + #ifndef PCI_CHIP_G35_G #define PCI_CHIP_G35_G 0x2982 #define PCI_CHIP_G35_G_BRIDGE 0x2980 @@ -323,6 +313,11 @@ extern int I810_DEBUG; #define PCI_CHIP_Q45_G_BRIDGE 0x2E10 #endif +#ifndef PCI_CHIP_G41_G +#define PCI_CHIP_G41_G 0x2E32 +#define PCI_CHIP_G41_G_BRIDGE 0x2E30 +#endif + #if XSERVER_LIBPCIACCESS #define I810_MEMBASE(p,n) (p)->regions[(n)].base_addr #define VENDOR_ID(p) (p)->vendor_id @@ -354,28 +349,37 @@ extern int I810_DEBUG; #define IS_I915GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I915_GM) #define IS_I945G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I945_G) #define IS_I945GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I945_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I945_GME) +#define IS_IGDGM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_GM) +#define IS_IGDG(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_G) +#define IS_IGD(pI810) (IS_IGDG(pI810) || IS_IGDGM(pI810)) #define IS_GM45(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_GM45_GM) -#define IS_G4X(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_E_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G45_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q45_G) +#define IS_G4X(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_IGD_E_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G45_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q45_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G41_G || IS_GM45(pI810)) #define IS_I965GM(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME) -#define IS_I965G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G35_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_Q || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I946_GZ || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME || IS_GM45(pI810) || IS_G4X(pI810)) +#define IS_965_Q(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_Q) +#define IS_I965G(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G35_G || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_Q || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I946_GZ || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GM || DEVICE_ID(pI810->PciInfo) == PCI_CHIP_I965_GME || IS_G4X(pI810)) #define IS_G33CLASS(pI810) (DEVICE_ID(pI810->PciInfo) == PCI_CHIP_G33_G ||\ DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q35_G ||\ - DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q33_G) + DEVICE_ID(pI810->PciInfo) == PCI_CHIP_Q33_G || \ + IS_IGD(pI810)) #define IS_I9XX(pI810) (IS_I915G(pI810) || IS_I915GM(pI810) || IS_I945G(pI810) || IS_I945GM(pI810) || IS_I965G(pI810) || IS_G33CLASS(pI810)) #define IS_I915(pI810) (IS_I915G(pI810) || IS_I915GM(pI810) || IS_I945G(pI810) || IS_I945GM(pI810) || IS_G33CLASS(pI810)) -#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810) || IS_I945GM(pI810) || IS_I965GM(pI810) || IS_GM45(pI810)) +#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810) || IS_I945GM(pI810) || IS_I965GM(pI810) || IS_GM45(pI810) || IS_IGD(pI810)) /* mark chipsets for using gfx VM offset for overlay */ #define OVERLAY_NOPHYSICAL(pI810) (IS_G33CLASS(pI810) || IS_I965G(pI810)) /* mark chipsets without overlay hw */ -#define OVERLAY_NOEXIST(pI810) (IS_GM45(pI810) || IS_G4X(pI810)) +#define OVERLAY_NOEXIST(pI810) (IS_G4X(pI810)) /* chipsets require graphics mem for hardware status page */ -#define HWS_NEED_GFX(pI810) (IS_G33CLASS(pI810) || IS_GM45(pI810) || IS_G4X(pI810)) +#define HWS_NEED_GFX(pI810) (!pI810->use_drm_mode && \ + (IS_G33CLASS(pI810) ||\ + IS_G4X(pI810))) /* chipsets require status page in non stolen memory */ -#define HWS_NEED_NONSTOLEN(pI810) (IS_GM45(pI810) || IS_G4X(pI810)) -#define SUPPORTS_INTEGRATED_HDMI(pI810) (IS_GM45(pI810) || IS_G4X(pI810)) +#define HWS_NEED_NONSTOLEN(pI810) (IS_G4X(pI810)) +#define SUPPORTS_INTEGRATED_HDMI(pI810) (IS_G4X(pI810)) /* dsparb controlled by hw only */ -#define DSPARB_HWCONTROL(pI810) (IS_G4X(pI810) || IS_GM45(pI810)) +#define DSPARB_HWCONTROL(pI810) (IS_G4X(pI810)) +/* supports Y tiled surfaces (pre-965 Mesa isn't ready yet) */ +#define SUPPORTS_YTILING(pI810) (IS_I965G(pI830)) #define GTT_PAGE_SIZE KB(4) #define ROUND_TO(x, y) (((x) + (y) - 1) / (y) * (y)) diff --git a/driver/xf86-video-intel/src/drmmode_display.c b/driver/xf86-video-intel/src/drmmode_display.c new file mode 100644 index 000000000..7b97a6460 --- /dev/null +++ b/driver/xf86-video-intel/src/drmmode_display.c @@ -0,0 +1,953 @@ +/* + * Copyright © 2007 Red Hat, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Authors: + * Dave Airlie <airlied@redhat.com> + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "xorgVersion.h" + +#ifdef XF86DRM_MODE +#include "i830.h" +#include "intel_bufmgr.h" +#include "xf86drmMode.h" +#include "X11/Xatom.h" + +typedef struct { + int fd; + uint32_t fb_id; + drmModeResPtr mode_res; + int cpp; +} drmmode_rec, *drmmode_ptr; + +typedef struct { + drmmode_ptr drmmode; + drmModeCrtcPtr mode_crtc; + dri_bo *cursor; + dri_bo *rotate_bo; + uint32_t rotate_fb_id; +} drmmode_crtc_private_rec, *drmmode_crtc_private_ptr; + +typedef struct { + drmModePropertyPtr mode_prop; + uint64_t value; + int num_atoms; /* if range prop, num_atoms == 1; if enum prop, num_atoms == num_enums + 1 */ + Atom *atoms; +} drmmode_prop_rec, *drmmode_prop_ptr; + +typedef struct { + drmmode_ptr drmmode; + int output_id; + drmModeConnectorPtr mode_output; + drmModeEncoderPtr mode_encoder; + drmModePropertyBlobPtr edid_blob; + int num_props; + drmmode_prop_ptr props; +} drmmode_output_private_rec, *drmmode_output_private_ptr; + +static void +drmmode_output_dpms(xf86OutputPtr output, int mode); + +static void +drmmode_ConvertFromKMode(ScrnInfoPtr scrn, + drmModeModeInfoPtr kmode, + DisplayModePtr mode) +{ + memset(mode, 0, sizeof(DisplayModeRec)); + mode->status = MODE_OK; + + mode->Clock = kmode->clock; + + mode->HDisplay = kmode->hdisplay; + mode->HSyncStart = kmode->hsync_start; + mode->HSyncEnd = kmode->hsync_end; + mode->HTotal = kmode->htotal; + mode->HSkew = kmode->hskew; + + mode->VDisplay = kmode->vdisplay; + mode->VSyncStart = kmode->vsync_start; + mode->VSyncEnd = kmode->vsync_end; + mode->VTotal = kmode->vtotal; + mode->VScan = kmode->vscan; + + mode->Flags = kmode->flags; //& FLAG_BITS; + mode->name = strdup(kmode->name); + + if (kmode->type & DRM_MODE_TYPE_DRIVER) + mode->type = M_T_DRIVER; + if (kmode->type & DRM_MODE_TYPE_PREFERRED) + mode->type |= M_T_PREFERRED; + xf86SetModeCrtc (mode, scrn->adjustFlags); +} + +static void +drmmode_ConvertToKMode(ScrnInfoPtr scrn, + drmModeModeInfoPtr kmode, + DisplayModePtr mode) +{ + memset(kmode, 0, sizeof(*kmode)); + + kmode->clock = mode->Clock; + kmode->hdisplay = mode->HDisplay; + kmode->hsync_start = mode->HSyncStart; + kmode->hsync_end = mode->HSyncEnd; + kmode->htotal = mode->HTotal; + kmode->hskew = mode->HSkew; + + kmode->vdisplay = mode->VDisplay; + kmode->vsync_start = mode->VSyncStart; + kmode->vsync_end = mode->VSyncEnd; + kmode->vtotal = mode->VTotal; + kmode->vscan = mode->VScan; + + kmode->flags = mode->Flags; //& FLAG_BITS; + if (mode->name) + strncpy(kmode->name, mode->name, DRM_DISPLAY_MODE_LEN); + kmode->name[DRM_DISPLAY_MODE_LEN-1] = 0; + +} + +static void +drmmode_crtc_dpms(xf86CrtcPtr drmmode_crtc, int mode) +{ + +} + +static Bool +drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, + Rotation rotation, int x, int y) +{ + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(crtc->scrn); + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + int saved_x, saved_y; + Rotation saved_rotation; + DisplayModeRec saved_mode; + uint32_t *output_ids; + int output_count = 0; + int ret = TRUE; + int i; + int fb_id; + drmModeModeInfo kmode; + unsigned int pitch = pScrn->displayWidth * pI830->cpp; + + if (drmmode->fb_id == 0) { + ret = drmModeAddFB(drmmode->fd, + pScrn->virtualX, pScrn->virtualY, + pScrn->depth, pScrn->bitsPerPixel, + pitch, pI830->front_buffer->bo->handle, + &drmmode->fb_id); + if (ret < 0) { + ErrorF("failed to add fb\n"); + return FALSE; + } + } + + saved_mode = crtc->mode; + saved_x = crtc->x; + saved_y = crtc->y; + saved_rotation = crtc->rotation; + + crtc->mode = *mode; + crtc->x = x; + crtc->y = y; + crtc->rotation = rotation; +#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,5,99,0,0) + crtc->transformPresent = FALSE; +#endif + + output_ids = xcalloc(sizeof(uint32_t), xf86_config->num_output); + if (!output_ids) { + ret = FALSE; + goto done; + } + + for (i = 0; i < xf86_config->num_output; i++) { + xf86OutputPtr output = xf86_config->output[i]; + drmmode_output_private_ptr drmmode_output; + + if (output->crtc != crtc) + continue; + + drmmode_output = output->driver_private; + output_ids[output_count] = + drmmode_output->mode_output->connector_id; + output_count++; + } + +#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1,5,99,0,0) + if (!xf86CrtcRotate(crtc, mode, rotation)) + goto done; +#else + if (!xf86CrtcRotate(crtc)) + goto done; +#endif + + drmmode_ConvertToKMode(crtc->scrn, &kmode, mode); + + + fb_id = drmmode->fb_id; + if (drmmode_crtc->rotate_fb_id) + fb_id = drmmode_crtc->rotate_fb_id; + ret = drmModeSetCrtc(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, + fb_id, x, y, output_ids, output_count, &kmode); + if (ret) + xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR, + "failed to set mode: %s", strerror(-ret)); + else + ret = TRUE; + + /* Turn on any outputs on this crtc that may have been disabled */ + for (i = 0; i < xf86_config->num_output; i++) { + xf86OutputPtr output = xf86_config->output[i]; + + if (output->crtc != crtc) + continue; + + drmmode_output_dpms(output, DPMSModeOn); + } + +done: + if (!ret) { + crtc->x = saved_x; + crtc->y = saved_y; + crtc->rotation = saved_rotation; + crtc->mode = saved_mode; + } + return ret; +} + +static void +drmmode_set_cursor_colors (xf86CrtcPtr crtc, int bg, int fg) +{ + +} + +static void +drmmode_set_cursor_position (xf86CrtcPtr crtc, int x, int y) +{ + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + + drmModeMoveCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, x, y); +} + +static void +drmmode_load_cursor_argb (xf86CrtcPtr crtc, CARD32 *image) +{ + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); + int ret; + + /* cursor should be mapped already */ + ret = dri_bo_subdata(pI830->cursor_mem->bo, 0, 64*64*4, image); + if (ret) + xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR, + "failed to set cursor: %s", strerror(-ret)); + + return; +} + + +static void +drmmode_hide_cursor (xf86CrtcPtr crtc) +{ + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + + drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, + 0, 64, 64); +} + +static void +drmmode_show_cursor (xf86CrtcPtr crtc) +{ + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); + + drmModeSetCursor(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, + pI830->cursor_mem->bo->handle, 64, 64); +} + +static void * +drmmode_crtc_shadow_allocate(xf86CrtcPtr crtc, int width, int height) +{ + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + int size, ret; + unsigned long rotate_pitch; + + width = i830_pad_drawable_width(width, drmmode->cpp); + rotate_pitch = width * drmmode->cpp; + size = rotate_pitch * height; + + drmmode_crtc->rotate_bo = + drm_intel_bo_alloc(pI830->bufmgr, "rotate", size, 4096); + + if (!drmmode_crtc->rotate_bo) { + xf86DrvMsg(crtc->scrn->scrnIndex, X_ERROR, + "Couldn't allocate shadow memory for rotated CRTC\n"); + return NULL; + } + + drm_intel_gem_bo_map_gtt(drmmode_crtc->rotate_bo); + + ret = drmModeAddFB(drmmode->fd, width, height, crtc->scrn->depth, + crtc->scrn->bitsPerPixel, rotate_pitch, + drmmode_crtc->rotate_bo->handle, + &drmmode_crtc->rotate_fb_id); + if (ret) { + ErrorF("failed to add rotate fb\n"); + drm_intel_bo_unreference(drmmode_crtc->rotate_bo); + return NULL; + } + + return drmmode_crtc->rotate_bo->virtual; +} + +static PixmapPtr +drmmode_crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height) +{ + ScrnInfoPtr pScrn = crtc->scrn; + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + unsigned long rotate_pitch; + PixmapPtr rotate_pixmap; + + if (!data) + data = drmmode_crtc_shadow_allocate (crtc, width, height); + + rotate_pitch = + i830_pad_drawable_width(width, drmmode->cpp) * drmmode->cpp; + rotate_pixmap = GetScratchPixmapHeader(pScrn->pScreen, + width, height, + pScrn->depth, + pScrn->bitsPerPixel, + rotate_pitch, + data); + + if (rotate_pixmap == NULL) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Couldn't allocate shadow pixmap for rotated CRTC\n"); + } + + if (drmmode_crtc->rotate_bo) + i830_set_pixmap_bo(rotate_pixmap, drmmode_crtc->rotate_bo); + + return rotate_pixmap; +} + +static void +drmmode_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data) +{ + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + + if (rotate_pixmap) + FreeScratchPixmapHeader(rotate_pixmap); + + + if (data) { + /* Be sure to sync acceleration before the memory gets + * unbound. */ + drmModeRmFB(drmmode->fd, drmmode_crtc->rotate_fb_id); + drmmode_crtc->rotate_fb_id = 0; + drm_intel_gem_bo_unmap_gtt(drmmode_crtc->rotate_bo); + dri_bo_unreference(drmmode_crtc->rotate_bo); + drmmode_crtc->rotate_bo = NULL; + } +} + +static void +drmmode_crtc_gamma_set(xf86CrtcPtr crtc, + CARD16 *red, CARD16 *green, CARD16 *blue, int size) +{ + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + + drmModeCrtcSetGamma(drmmode->fd, drmmode_crtc->mode_crtc->crtc_id, + size, red, green, blue); +} + +static const xf86CrtcFuncsRec drmmode_crtc_funcs = { + .dpms = drmmode_crtc_dpms, + .set_mode_major = drmmode_set_mode_major, + .set_cursor_colors = drmmode_set_cursor_colors, + .set_cursor_position = drmmode_set_cursor_position, + .show_cursor = drmmode_show_cursor, + .hide_cursor = drmmode_hide_cursor, + .load_cursor_argb = drmmode_load_cursor_argb, + .shadow_create = drmmode_crtc_shadow_create, + .shadow_allocate = drmmode_crtc_shadow_allocate, + .shadow_destroy = drmmode_crtc_shadow_destroy, + .gamma_set = drmmode_crtc_gamma_set, + .destroy = NULL, /* XXX */ +}; + + +static void +drmmode_crtc_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int num) +{ + xf86CrtcPtr crtc; + drmmode_crtc_private_ptr drmmode_crtc; + + crtc = xf86CrtcCreate(pScrn, &drmmode_crtc_funcs); + if (crtc == NULL) + return; + + drmmode_crtc = xnfcalloc(sizeof(drmmode_crtc_private_rec), 1); + drmmode_crtc->mode_crtc = drmModeGetCrtc(drmmode->fd, + drmmode->mode_res->crtcs[num]); + drmmode_crtc->drmmode = drmmode; + crtc->driver_private = drmmode_crtc; + + return; +} + +static xf86OutputStatus +drmmode_output_detect(xf86OutputPtr output) +{ + /* go to the hw and retrieve a new output struct */ + drmmode_output_private_ptr drmmode_output = output->driver_private; + drmmode_ptr drmmode = drmmode_output->drmmode; + xf86OutputStatus status; + drmModeFreeConnector(drmmode_output->mode_output); + + drmmode_output->mode_output = + drmModeGetConnector(drmmode->fd, drmmode_output->output_id); + + switch (drmmode_output->mode_output->connection) { + case DRM_MODE_CONNECTED: + status = XF86OutputStatusConnected; + break; + case DRM_MODE_DISCONNECTED: + status = XF86OutputStatusDisconnected; + break; + default: + case DRM_MODE_UNKNOWNCONNECTION: + status = XF86OutputStatusUnknown; + break; + } + return status; +} + +static Bool +drmmode_output_mode_valid(xf86OutputPtr output, DisplayModePtr pModes) +{ + return MODE_OK; +} + +static DisplayModePtr +drmmode_output_get_modes(xf86OutputPtr output) +{ + drmmode_output_private_ptr drmmode_output = output->driver_private; + drmModeConnectorPtr koutput = drmmode_output->mode_output; + drmmode_ptr drmmode = drmmode_output->drmmode; + int i; + DisplayModePtr Modes = NULL, Mode; + drmModePropertyPtr props; + + /* look for an EDID property */ + for (i = 0; i < koutput->count_props; i++) { + props = drmModeGetProperty(drmmode->fd, koutput->props[i]); + if (!props || !(props->flags & DRM_MODE_PROP_BLOB)) + continue; + + if (!strcmp(props->name, "EDID") && + drmmode_output->edid_blob == NULL) { + drmModeFreePropertyBlob(drmmode_output->edid_blob); + drmmode_output->edid_blob = + drmModeGetPropertyBlob(drmmode->fd, + koutput->prop_values[i]); + } + drmModeFreeProperty(props); + } + + if (drmmode_output->edid_blob) + xf86OutputSetEDID(output, + xf86InterpretEDID(output->scrn->scrnIndex, + drmmode_output->edid_blob->data)); + else + xf86OutputSetEDID(output, + xf86InterpretEDID(output->scrn->scrnIndex, + NULL)); + + /* modes should already be available */ + for (i = 0; i < koutput->count_modes; i++) { + Mode = xnfalloc(sizeof(DisplayModeRec)); + + drmmode_ConvertFromKMode(output->scrn, &koutput->modes[i], + Mode); + Modes = xf86ModesAdd(Modes, Mode); + + } + return Modes; +} + +static void +drmmode_output_destroy(xf86OutputPtr output) +{ + drmmode_output_private_ptr drmmode_output = output->driver_private; + int i; + + if (drmmode_output->edid_blob) + drmModeFreePropertyBlob(drmmode_output->edid_blob); + for (i = 0; i < drmmode_output->num_props; i++) { + drmModeFreeProperty(drmmode_output->props[i].mode_prop); + xfree(drmmode_output->props[i].atoms); + } + xfree(drmmode_output->props); + drmModeFreeConnector(drmmode_output->mode_output); + xfree(drmmode_output); + output->driver_private = NULL; +} + +static void +drmmode_output_dpms(xf86OutputPtr output, int mode) +{ + drmmode_output_private_ptr drmmode_output = output->driver_private; + drmModeConnectorPtr koutput = drmmode_output->mode_output; + drmmode_ptr drmmode = drmmode_output->drmmode; + int i; + drmModePropertyPtr props; + + for (i = 0; i < koutput->count_props; i++) { + props = drmModeGetProperty(drmmode->fd, koutput->props[i]); + if (!props) + continue; + + if (!strcmp(props->name, "DPMS")) { + drmModeConnectorSetProperty(drmmode->fd, + drmmode_output->output_id, + props->prop_id, + mode); + drmModeFreeProperty(props); + return; + } + drmModeFreeProperty(props); + } +} + +static Bool +drmmode_property_ignore(drmModePropertyPtr prop) +{ + if (!prop) + return TRUE; + /* ignore blob prop */ + if (prop->flags & DRM_MODE_PROP_BLOB) + return TRUE; + /* ignore standard property */ + if (!strcmp(prop->name, "EDID") || + !strcmp(prop->name, "DPMS")) + return TRUE; + + return FALSE; +} + +static void +drmmode_output_create_resources(xf86OutputPtr output) +{ + drmmode_output_private_ptr drmmode_output = output->driver_private; + drmModeConnectorPtr mode_output = drmmode_output->mode_output; + drmmode_ptr drmmode = drmmode_output->drmmode; + drmModePropertyPtr drmmode_prop; + int i, j, err; + + drmmode_output->props = xcalloc(mode_output->count_props, sizeof(drmmode_prop_rec)); + if (!drmmode_output->props) + return; + + drmmode_output->num_props = 0; + for (i = 0, j = 0; i < mode_output->count_props; i++) { + drmmode_prop = drmModeGetProperty(drmmode->fd, mode_output->props[i]); + if (drmmode_property_ignore(drmmode_prop)) { + drmModeFreeProperty(drmmode_prop); + continue; + } + drmmode_output->props[j].mode_prop = drmmode_prop; + drmmode_output->props[j].value = mode_output->prop_values[i]; + drmmode_output->num_props++; + j++; + } + + for (i = 0; i < drmmode_output->num_props; i++) { + drmmode_prop_ptr p = &drmmode_output->props[i]; + drmmode_prop = p->mode_prop; + + if (drmmode_prop->flags & DRM_MODE_PROP_RANGE) { + INT32 range[2]; + + p->num_atoms = 1; + p->atoms = xcalloc(p->num_atoms, sizeof(Atom)); + if (!p->atoms) + continue; + p->atoms[0] = MakeAtom(drmmode_prop->name, strlen(drmmode_prop->name), TRUE); + range[0] = drmmode_prop->values[0]; + range[1] = drmmode_prop->values[1]; + err = RRConfigureOutputProperty(output->randr_output, p->atoms[0], + FALSE, TRUE, + drmmode_prop->flags & DRM_MODE_PROP_IMMUTABLE ? TRUE : FALSE, + 2, range); + if (err != 0) { + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, + "RRConfigureOutputProperty error, %d\n", err); + } + err = RRChangeOutputProperty(output->randr_output, p->atoms[0], + XA_INTEGER, 32, PropModeReplace, 1, &p->value, FALSE, TRUE); + if (err != 0) { + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, + "RRChangeOutputProperty error, %d\n", err); + } + } else if (drmmode_prop->flags & DRM_MODE_PROP_ENUM) { + p->num_atoms = drmmode_prop->count_enums + 1; + p->atoms = xcalloc(p->num_atoms, sizeof(Atom)); + if (!p->atoms) + continue; + p->atoms[0] = MakeAtom(drmmode_prop->name, strlen(drmmode_prop->name), TRUE); + for (j = 1; j <= drmmode_prop->count_enums; j++) { + struct drm_mode_property_enum *e = &drmmode_prop->enums[j-1]; + p->atoms[j] = MakeAtom(e->name, strlen(e->name), TRUE); + } + err = RRConfigureOutputProperty(output->randr_output, p->atoms[0], + FALSE, FALSE, + drmmode_prop->flags & DRM_MODE_PROP_IMMUTABLE ? TRUE : FALSE, + p->num_atoms - 1, (INT32 *)&p->atoms[1]); + if (err != 0) { + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, + "RRConfigureOutputProperty error, %d\n", err); + } + for (j = 0; j < drmmode_prop->count_enums; j++) + if (drmmode_prop->enums[j].value == p->value) + break; + /* there's always a matching value */ + err = RRChangeOutputProperty(output->randr_output, p->atoms[0], + XA_ATOM, 32, PropModeReplace, 1, &p->atoms[j+1], FALSE, TRUE); + if (err != 0) { + xf86DrvMsg(output->scrn->scrnIndex, X_ERROR, + "RRChangeOutputProperty error, %d\n", err); + } + } + } +} + +static Bool +drmmode_output_set_property(xf86OutputPtr output, Atom property, + RRPropertyValuePtr value) +{ + drmmode_output_private_ptr drmmode_output = output->driver_private; + drmmode_ptr drmmode = drmmode_output->drmmode; + int i; + + for (i = 0; i < drmmode_output->num_props; i++) { + drmmode_prop_ptr p = &drmmode_output->props[i]; + + if (p->atoms[0] != property) + continue; + + if (p->mode_prop->flags & DRM_MODE_PROP_RANGE) { + uint32_t val; + + if (value->type != XA_INTEGER || value->format != 32 || + value->size != 1) + return FALSE; + val = *(uint32_t *)value->data; + + drmModeConnectorSetProperty(drmmode->fd, drmmode_output->output_id, + p->mode_prop->prop_id, (uint64_t)val); + return TRUE; + } else if (p->mode_prop->flags & DRM_MODE_PROP_ENUM) { + Atom atom; + const char *name; + int j; + + if (value->type != XA_ATOM || value->format != 32 || value->size != 1) + return FALSE; + memcpy(&atom, value->data, 4); + name = NameForAtom(atom); + + /* search for matching name string, then set its value down */ + for (j = 0; j < p->mode_prop->count_enums; j++) { + if (!strcmp(p->mode_prop->enums[j].name, name)) { + drmModeConnectorSetProperty(drmmode->fd, drmmode_output->output_id, + p->mode_prop->prop_id, p->mode_prop->enums[j].value); + return TRUE; + } + } + } + } + /* no property found? */ + return FALSE; +} + +static const xf86OutputFuncsRec drmmode_output_funcs = { + .create_resources = drmmode_output_create_resources, +#ifdef RANDR_12_INTERFACE + .set_property = drmmode_output_set_property, +#endif + .dpms = drmmode_output_dpms, +#if 0 + + .save = drmmode_crt_save, + .restore = drmmode_crt_restore, + .mode_fixup = drmmode_crt_mode_fixup, + .prepare = drmmode_output_prepare, + .mode_set = drmmode_crt_mode_set, + .commit = drmmode_output_commit, +#endif + .detect = drmmode_output_detect, + .mode_valid = drmmode_output_mode_valid, + + .get_modes = drmmode_output_get_modes, + .destroy = drmmode_output_destroy +}; + +static int subpixel_conv_table[7] = { 0, SubPixelUnknown, + SubPixelHorizontalRGB, + SubPixelHorizontalBGR, + SubPixelVerticalRGB, + SubPixelVerticalBGR, + SubPixelNone }; + +const char *output_names[] = { "None", + "VGA", + "DVI", + "DVI", + "DVI", + "Composite", + "TV", + "LVDS", + "CTV", + "DIN", + "DP", + "HDMI", + "HDMI", +}; + + +static void +drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int num) +{ + xf86OutputPtr output; + drmModeConnectorPtr koutput; + drmModeEncoderPtr kencoder; + drmmode_output_private_ptr drmmode_output; + char name[32]; + + koutput = drmModeGetConnector(drmmode->fd, + drmmode->mode_res->connectors[num]); + if (!koutput) + return; + + kencoder = drmModeGetEncoder(drmmode->fd, koutput->encoders[0]); + if (!kencoder) { + drmModeFreeConnector(koutput); + return; + } + + snprintf(name, 32, "%s%d", output_names[koutput->connector_type], + koutput->connector_type_id); + + output = xf86OutputCreate (pScrn, &drmmode_output_funcs, name); + if (!output) { + drmModeFreeEncoder(kencoder); + drmModeFreeConnector(koutput); + return; + } + + drmmode_output = xcalloc(sizeof(drmmode_output_private_rec), 1); + if (!drmmode_output) { + xf86OutputDestroy(output); + drmModeFreeConnector(koutput); + drmModeFreeEncoder(kencoder); + return; + } + + drmmode_output->output_id = drmmode->mode_res->connectors[num]; + drmmode_output->mode_output = koutput; + drmmode_output->mode_encoder = kencoder; + drmmode_output->drmmode = drmmode; + output->mm_width = koutput->mmWidth; + output->mm_height = koutput->mmHeight; + + output->subpixel_order = subpixel_conv_table[koutput->subpixel]; + output->driver_private = drmmode_output; + + output->possible_crtcs = kencoder->possible_crtcs; + output->possible_clones = kencoder->possible_clones; + return; +} + +static Bool +drmmode_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height) +{ + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn); + drmmode_crtc_private_ptr + drmmode_crtc = xf86_config->crtc[0]->driver_private; + drmmode_ptr drmmode = drmmode_crtc->drmmode; + I830Ptr pI830 = I830PTR(scrn); + i830_memory *old_front = NULL; + Bool tiled, ret; + ScreenPtr screen = screenInfo.screens[scrn->scrnIndex]; + uint32_t old_fb_id; + int i, pitch, old_width, old_height, old_pitch; + + if (scrn->virtualX == width && scrn->virtualY == height) + return TRUE; + + if (!pI830->can_resize) + return FALSE; + + pitch = i830_pad_drawable_width(width, pI830->cpp); + tiled = i830_tiled_width(pI830, &pitch, pI830->cpp); + xf86DrvMsg(scrn->scrnIndex, X_INFO, + "Allocate new frame buffer %dx%d stride %d\n", + width, height, pitch); + + old_width = scrn->virtualX; + old_height = scrn->virtualY; + old_pitch = scrn->displayWidth; + old_fb_id = drmmode->fb_id; + old_front = pI830->front_buffer; + + scrn->virtualX = width; + scrn->virtualY = height; + scrn->displayWidth = pitch; + pI830->front_buffer = i830_allocate_framebuffer(scrn); + if (!pI830->front_buffer) + goto fail; + + ret = drmModeAddFB(drmmode->fd, width, height, scrn->depth, + scrn->bitsPerPixel, pitch * pI830->cpp, + pI830->front_buffer->bo->handle, + &drmmode->fb_id); + if (ret) + goto fail; + + i830_set_pixmap_bo(screen->GetScreenPixmap(screen), pI830->front_buffer->bo); + scrn->fbOffset = pI830->front_buffer->offset; + + screen->ModifyPixmapHeader(screen->GetScreenPixmap(screen), + width, height, -1, -1, pitch * pI830->cpp, NULL); + xf86DrvMsg(scrn->scrnIndex, X_INFO, "New front buffer at 0x%lx\n", + pI830->front_buffer->offset); + + for (i = 0; i < xf86_config->num_crtc; i++) { + xf86CrtcPtr crtc = xf86_config->crtc[i]; + + if (!crtc->enabled) + continue; + + drmmode_set_mode_major(crtc, &crtc->mode, + crtc->rotation, crtc->x, crtc->y); + } + + if (old_fb_id) + drmModeRmFB(drmmode->fd, old_fb_id); + if (old_front) + i830_free_memory(scrn, old_front); + + return TRUE; + + fail: + if (pI830->front_buffer) + i830_free_memory(scrn, pI830->front_buffer); + pI830->front_buffer = old_front; + scrn->virtualX = old_width; + scrn->virtualY = old_height; + scrn->displayWidth = old_pitch; + drmmode->fb_id = old_fb_id; + + return FALSE; +} + +static const xf86CrtcConfigFuncsRec drmmode_xf86crtc_config_funcs = { + drmmode_xf86crtc_resize +}; + +Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp) +{ + I830Ptr pI830 = I830PTR(pScrn); + xf86CrtcConfigPtr xf86_config; + drmmode_ptr drmmode; + int i; + + drmmode = xnfalloc(sizeof *drmmode); + drmmode->fd = fd; + drmmode->fb_id = 0; + + xf86CrtcConfigInit(pScrn, &drmmode_xf86crtc_config_funcs); + xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); + + drmmode->cpp = cpp; + drmmode->mode_res = drmModeGetResources(drmmode->fd); + if (!drmmode->mode_res) + return FALSE; + + xf86CrtcSetSizeRange(pScrn, 320, 200, drmmode->mode_res->max_width, + drmmode->mode_res->max_height); + for (i = 0; i < drmmode->mode_res->count_crtcs; i++) + drmmode_crtc_init(pScrn, drmmode, i); + + for (i = 0; i < drmmode->mode_res->count_connectors; i++) + drmmode_output_init(pScrn, drmmode, i); + + xf86InitialConfiguration(pScrn, pI830->can_resize); + + return TRUE; +} + +Bool drmmode_is_rotate_pixmap(ScrnInfoPtr pScrn, pointer pPixData, dri_bo **bo) +{ + return FALSE; + +#if 0 + xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR (pScrn); + int i; + + for (i = 0; i < config->num_crtc; i++) { + xf86CrtcPtr crtc = config->crtc[i]; + drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; + + if (!drmmode_crtc->rotate_bo) + continue; + + if (drmmode_crtc->rotate_bo->virtual == pPixData) { + *bo = drmmode_crtc->rotate_bo; + return TRUE; + } + } + return FALSE; +#endif +} + +#endif diff --git a/driver/xf86-video-intel/src/i810.h b/driver/xf86-video-intel/src/i810.h index e7331f6dc..c88771e99 100644 --- a/driver/xf86-video-intel/src/i810.h +++ b/driver/xf86-video-intel/src/i810.h @@ -47,7 +47,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "xaa.h" #include "xf86Cursor.h" #include "xf86xv.h" -#include "xf86int10.h" #include "vbe.h" #include "vgaHW.h" @@ -71,7 +70,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define I810_VERSION 4000 #define I810_NAME "intel" #define I810_DRIVER_NAME "intel" -#define I810_LEGACY_DRIVER_NAME "i810" #define INTEL_VERSION_MAJOR PACKAGE_VERSION_MAJOR #define INTEL_VERSION_MINOR PACKAGE_VERSION_MINOR @@ -276,6 +274,8 @@ typedef struct _I810Rec { int drmMinor; } I810Rec; +extern const char *I810vbeSymbols[]; + #define I810PTR(p) ((I810Ptr)((p)->driverPrivate)) #define I810_SELECT_FRONT 0 diff --git a/driver/xf86-video-intel/src/i810_driver.c b/driver/xf86-video-intel/src/i810_driver.c index 8540646d4..fe4bd626c 100644 --- a/driver/xf86-video-intel/src/i810_driver.c +++ b/driver/xf86-video-intel/src/i810_driver.c @@ -143,6 +143,8 @@ static const struct pci_id_match intel_device_match[] = { INTEL_DEVICE_MATCH (PCI_CHIP_I945_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_I945_GM, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_I945_GME, 0 ), + INTEL_DEVICE_MATCH (PCI_CHIP_IGD_GM, 0 ), + INTEL_DEVICE_MATCH (PCI_CHIP_IGD_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_I965_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_G35_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_I965_Q, 0 ), @@ -156,6 +158,7 @@ static const struct pci_id_match intel_device_match[] = { INTEL_DEVICE_MATCH (PCI_CHIP_IGD_E_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_G45_G, 0 ), INTEL_DEVICE_MATCH (PCI_CHIP_Q45_G, 0 ), + INTEL_DEVICE_MATCH (PCI_CHIP_G41_G, 0 ), { 0, 0, 0 }, }; @@ -199,6 +202,8 @@ static SymTabRec I810Chipsets[] = { {PCI_CHIP_I945_G, "945G"}, {PCI_CHIP_I945_GM, "945GM"}, {PCI_CHIP_I945_GME, "945GME"}, + {PCI_CHIP_IGD_GM, "IGD_GM"}, + {PCI_CHIP_IGD_G, "IGD_G"}, {PCI_CHIP_I965_G, "965G"}, {PCI_CHIP_G35_G, "G35"}, {PCI_CHIP_I965_Q, "965Q"}, @@ -212,6 +217,7 @@ static SymTabRec I810Chipsets[] = { {PCI_CHIP_IGD_E_G, "Intel Integrated Graphics Device"}, {PCI_CHIP_G45_G, "G45/G43"}, {PCI_CHIP_Q45_G, "Q45/Q43"}, + {PCI_CHIP_G41_G, "G41"}, {-1, NULL} }; @@ -232,6 +238,8 @@ static PciChipsets I810PciChipsets[] = { {PCI_CHIP_I945_G, PCI_CHIP_I945_G, RES_SHARED_VGA}, {PCI_CHIP_I945_GM, PCI_CHIP_I945_GM, RES_SHARED_VGA}, {PCI_CHIP_I945_GME, PCI_CHIP_I945_GME, RES_SHARED_VGA}, + {PCI_CHIP_IGD_GM, PCI_CHIP_IGD_GM, RES_SHARED_VGA}, + {PCI_CHIP_IGD_G, PCI_CHIP_IGD_G, RES_SHARED_VGA}, {PCI_CHIP_I965_G, PCI_CHIP_I965_G, RES_SHARED_VGA}, {PCI_CHIP_G35_G, PCI_CHIP_G35_G, RES_SHARED_VGA}, {PCI_CHIP_I965_Q, PCI_CHIP_I965_Q, RES_SHARED_VGA}, @@ -245,6 +253,7 @@ static PciChipsets I810PciChipsets[] = { {PCI_CHIP_IGD_E_G, PCI_CHIP_IGD_E_G, RES_SHARED_VGA}, {PCI_CHIP_G45_G, PCI_CHIP_G45_G, RES_SHARED_VGA}, {PCI_CHIP_Q45_G, PCI_CHIP_Q45_G, RES_SHARED_VGA}, + {PCI_CHIP_G41_G, PCI_CHIP_G41_G, RES_SHARED_VGA}, {-1, -1, RES_UNDEFINED } }; @@ -339,14 +348,6 @@ const char *I810ddcSymbols[] = { NULL }; -const char *I810int10Symbols[] = { - "xf86ExecX86int10", - "xf86InitInt10", - "xf86Int10AllocPages", - "xf86int10Addr", - NULL -}; - const char *I810xaaSymbols[] = { "XAACreateInfoRec", "XAADestroyInfoRec", @@ -471,21 +472,6 @@ static XF86ModuleVersionInfo intelVersRec = { _X_EXPORT XF86ModuleData intelModuleData = { &intelVersRec, i810Setup, NULL }; -static XF86ModuleVersionInfo i810VersRec = { - "i810", - MODULEVENDORSTRING, - MODINFOSTRING1, - MODINFOSTRING2, - XORG_VERSION_CURRENT, - INTEL_VERSION_MAJOR, INTEL_VERSION_MINOR, INTEL_VERSION_PATCH, - ABI_CLASS_VIDEODRV, - ABI_VIDEODRV_VERSION, - MOD_CLASS_VIDEODRV, - {0, 0, 0, 0} -}; - -_X_EXPORT XF86ModuleData i810ModuleData = { &i810VersRec, i810Setup, NULL }; - static pointer i810Setup(pointer module, pointer opts, int *errmaj, int *errmin) { @@ -515,7 +501,7 @@ i810Setup(pointer module, pointer opts, int *errmaj, int *errmin) #endif I810shadowFBSymbols, I810vbeSymbols, vbeOptionalSymbols, - I810ddcSymbols, I810int10Symbols, NULL); + I810ddcSymbols, NULL); /* * The return value must be non-NULL on success even though there @@ -619,8 +605,6 @@ static Bool intel_pci_probe (DriverPtr driver, { ScrnInfoPtr scrn = NULL; EntityInfoPtr entity; - I830EntPtr i830_ent = NULL; - DevUnion *private; scrn = xf86ConfigPciEntity (scrn, 0, entity_num, I810PciChipsets, NULL, @@ -650,44 +634,7 @@ static Bool intel_pci_probe (DriverPtr driver, scrn->ValidMode = I810ValidMode; break; #endif - case PCI_CHIP_845_G: - case PCI_CHIP_I865_G: - /* - * These two chips have only one pipe, and - * cannot do dual-head - */ - I830InitpScrn(scrn); - break; default: - /* - * Everything else is an i830-ish dual-pipe chip - */ - xf86SetEntitySharable(entity_num); - - /* Allocate an entity private if necessary */ - if (I830EntityIndex < 0) - I830EntityIndex = xf86AllocateEntityPrivateIndex(); - - private = xf86GetEntityPrivate(scrn->entityList[0], - I830EntityIndex); - i830_ent = private->ptr; - if (!i830_ent) - { - private->ptr = xnfcalloc(sizeof(I830EntRec), 1); - i830_ent = private->ptr; - i830_ent->lastInstance = -1; - } - - /* - * Set the entity instance for this instance of the driver. - * For dual head per card, instance 0 is the "master" - * instance, driving the primary head, and instance 1 is - * the "slave". - */ - i830_ent->lastInstance++; - xf86SetEntityInstanceForScreen(scrn, - scrn->entityList[0], - i830_ent->lastInstance); I830InitpScrn(scrn); break; } @@ -707,7 +654,6 @@ static Bool I810Probe(DriverPtr drv, int flags) { int i, numUsed, numDevSections, *usedChips; - I830EntPtr pI830Ent = NULL; DevUnion *pPriv; GDevPtr *devSections; Bool foundScreen = FALSE; @@ -720,9 +666,7 @@ I810Probe(DriverPtr drv, int flags) * driver, and return if there are none. */ if ((numDevSections = - xf86MatchDevice(I810_DRIVER_NAME, &devSections)) <= 0 && - (numDevSections = - xf86MatchDevice(I810_LEGACY_DRIVER_NAME, &devSections)) <= 0) { + xf86MatchDevice(I810_DRIVER_NAME, &devSections)) <= 0 ) { return FALSE; } @@ -789,8 +733,6 @@ I810Probe(DriverPtr drv, int flags) switch (pEnt->chipset) { case PCI_CHIP_845_G: case PCI_CHIP_I865_G: - I830InitpScrn(pScrn); - break; case PCI_CHIP_I830_M: case PCI_CHIP_I855_GM: case PCI_CHIP_I915_G: @@ -799,6 +741,8 @@ I810Probe(DriverPtr drv, int flags) case PCI_CHIP_I945_G: case PCI_CHIP_I945_GM: case PCI_CHIP_I945_GME: + case PCI_CHIP_IGD_GM: + case PCI_CHIP_IGD_G: case PCI_CHIP_I965_G: case PCI_CHIP_G35_G: case PCI_CHIP_I965_Q: @@ -812,31 +756,7 @@ I810Probe(DriverPtr drv, int flags) case PCI_CHIP_IGD_E_G: case PCI_CHIP_G45_G: case PCI_CHIP_Q45_G: - xf86SetEntitySharable(usedChips[i]); - - /* Allocate an entity private if necessary */ - if (I830EntityIndex < 0) - I830EntityIndex = xf86AllocateEntityPrivateIndex(); - - pPriv = xf86GetEntityPrivate(pScrn->entityList[0], - I830EntityIndex); - if (!pPriv->ptr) { - pPriv->ptr = xnfcalloc(sizeof(I830EntRec), 1); - pI830Ent = pPriv->ptr; - pI830Ent->lastInstance = -1; - } else { - pI830Ent = pPriv->ptr; - } - - /* - * Set the entity instance for this instance of the driver. - * For dual head per card, instance 0 is the "master" - * instance, driving the primary head, and instance 1 is - * the "slave". - */ - pI830Ent->lastInstance++; - xf86SetEntityInstanceForScreen(pScrn, - pScrn->entityList[0], pI830Ent->lastInstance); + case PCI_CHIP_G41_G: I830InitpScrn(pScrn); break; #ifndef I830_ONLY @@ -1064,7 +984,7 @@ I810PreInit(ScrnInfoPtr pScrn, int flags) /* after xf86ProcessOptions, * because it is controlled by options [no]vbe and [no]ddc */ - pScrn->monitor->DDC = I810DoDDC(pScrn, pI810->pEnt->index); + I810DoDDC(pScrn, pI810->pEnt->index); /* We have to use PIO to probe, because we haven't mapped yet */ I810SetPIOAccess(pI810); diff --git a/driver/xf86-video-intel/src/i810_reg.h b/driver/xf86-video-intel/src/i810_reg.h index af8c6a3d6..7e587f93f 100644 --- a/driver/xf86-video-intel/src/i810_reg.h +++ b/driver/xf86-video-intel/src/i810_reg.h @@ -113,6 +113,20 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define COLEXP_RESERVED 0x30 #define BITBLT_STATUS 0x01 +#define CHDECMISC 0x10111 +#define C0DRB0 0x10200 +#define C0DRB1 0x10202 +#define C0DRB2 0x10204 +#define C0DRB3 0x10206 +#define C0DRA01 0x10208 +#define C0DRA23 0x1020a +#define C1DRB0 0x10600 +#define C1DRB1 0x10602 +#define C1DRB2 0x10604 +#define C1DRB3 0x10606 +#define C1DRA01 0x10608 +#define C1DRA23 0x1060a + /* p375. */ #define DISPLAY_CNTL 0x70008 @@ -405,7 +419,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /* Current active ring head address: */ -#define ACTHD 0x2074 +#define ACTHD_I965 0x2074 +#define ACTHD 0x20C8 /* Current primary/secondary DMA fetch addresses: */ @@ -490,6 +505,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - new bits for i810 * - new register hwstam (mask) */ +#define HWS_PGA 0x2080 #define PWRCTXA 0x2088 /* 965GM+ only */ #define PWRCTX_EN (1<<0) #define HWSTAM 0x2098 /* p290 */ @@ -897,9 +913,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # define POWER_DOWN_ON_RESET (1 << 1) # define POWER_TARGET_ON (1 << 0) -#define LVDSPP_ON 0x61208 -#define LVDSPP_OFF 0x6120c -#define PP_CYCLE 0x61210 +#define PP_ON_DELAYS 0x61208 +#define PP_OFF_DELAYS 0x6120c +#define PP_DIVISOR 0x61210 #define PFIT_CONTROL 0x61230 # define PFIT_ENABLE (1 << 31) @@ -953,6 +969,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # define DPLLB_LVDS_P2_CLOCK_DIV_7 (1 << 24) /* i915 */ # define DPLL_P2_CLOCK_DIV_MASK 0x03000000 /* i915 */ # define DPLL_FPA01_P1_POST_DIV_MASK 0x00ff0000 /* i915 */ +# define DPLL_FPA01_P1_POST_DIV_MASK_IGD 0x00ff8000 /* IGD */ /** * The i830 generation, in DAC/serial mode, defines p1 as two plus this * bitfield, or just 2 if PLL_P1_DIVIDE_BY_TWO is set. @@ -964,6 +981,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ # define DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS 0x003f0000 # define DPLL_FPA01_P1_POST_DIV_SHIFT 16 +# define DPLL_FPA01_P1_POST_DIV_SHIFT_IGD 15 # define PLL_P2_DIVIDE_BY_4 (1 << 23) /* i830, required in DVO non-gang */ # define PLL_P1_DIVIDE_BY_TWO (1 << 21) /* i830 */ # define PLL_REF_INPUT_DREFCLK (0 << 13) @@ -1151,6 +1169,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # define I965_DM_CLOCK_GATE_DISABLE (1 << 0) #define RENCLK_GATE_D2 0x6208 +#define VF_UNIT_CLOCK_GATE_DISABLE (1 << 9) +#define GS_UNIT_CLOCK_GATE_DISABLE (1 << 7) +#define CL_UNIT_CLOCK_GATE_DISABLE (1 << 6) #define RAMCLK_GATE_D 0x6210 /* CRL only */ #define DEUC 0x6214 /* CRL only */ @@ -1209,10 +1230,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define FPB0 0x06048 #define FPB1 0x0604c # define FP_N_DIV_MASK 0x003f0000 +# define FP_N_IGD_DIV_MASK 0x00ff0000 # define FP_N_DIV_SHIFT 16 # define FP_M1_DIV_MASK 0x00003f00 # define FP_M1_DIV_SHIFT 8 # define FP_M2_DIV_MASK 0x0000003f +# define FP_M2_IGD_DIV_MASK 0x000000ff # define FP_M2_DIV_SHIFT 0 #define PORT_HOTPLUG_EN 0x61110 @@ -1223,7 +1246,22 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # define SDVOC_HOTPLUG_INT_EN (1 << 25) # define TV_HOTPLUG_INT_EN (1 << 18) # define CRT_HOTPLUG_INT_EN (1 << 9) +# define CRT_HOTPLUG_ACTIVATION_PERIOD_32 (0 << 8) +/* must use period 64 on GM45 according to docs */ +# define CRT_HOTPLUG_ACTIVATION_PERIOD_64 (1 << 8) +# define CRT_HOTPLUG_DAC_ON_TIME_2M (0 << 7) +# define CRT_HOTPLUG_DAC_ON_TIME_4M (1 << 7) +# define CRT_HOTPLUG_VOLTAGE_COMPARE_40 (0 << 5) +# define CRT_HOTPLUG_VOLTAGE_COMPARE_50 (1 << 5) +# define CRT_HOTPLUG_VOLTAGE_COMPARE_60 (2 << 5) +# define CRT_HOTPLUG_VOLTAGE_COMPARE_70 (3 << 5) +# define CRT_HOTPLUG_VOLTAGE_COMPARE_MASK (3 << 5) +# define CRT_HOTPLUG_DETECT_DELAY_1G (0 << 4) +# define CRT_HOTPLUG_DETECT_DELAY_2G (1 << 4) # define CRT_HOTPLUG_FORCE_DETECT (1 << 3) +# define CRT_HOTPLUG_DETECT_VOLTAGE_325MV (0 << 2) +# define CRT_HOTPLUG_DETECT_VOLTAGE_475MV (1 << 2) +# define CRT_HOTPLUG_MASK (0x3fc) /* Bits 9-2 */ #define PORT_HOTPLUG_STAT 0x61114 # define HDMIB_HOTPLUG_INT_STATUS (1 << 29) @@ -1261,7 +1299,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define SDVO_ENCODING_HDMI (0x2 << 10) /** Requird for HDMI operation */ #define SDVO_NULL_PACKETS_DURING_VSYNC (1 << 9) +#define SDVO_COLOR_NOT_FULL_RANGE (1 << 8) #define SDVO_BORDER_ENABLE (1 << 7) +#define SDVO_AUDIO_ENABLE (1 << 6) /** New with 965, default is to be set */ #define SDVO_VSYNC_ACTIVE_HIGH (1 << 4) /** New with 965, default is to be set */ @@ -1558,7 +1598,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ # define TV_ENC_C0_FIX (1 << 10) /** Bits that must be preserved by software */ -# define TV_CTL_SAVE ((3 << 8) | (3 << 6)) +# define TV_CTL_SAVE ((1 << 11) | (3 << 9) | (7 << 6) | 0xf) # define TV_FUSE_STATE_MASK (3 << 4) /** Read-only state that reports all features enabled */ # define TV_FUSE_STATE_ENABLED (0 << 4) @@ -2396,8 +2436,19 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define MI_OVERLAY_FLIP_OFF (2<<21) /* Wait for Events */ -#define MI_WAIT_FOR_EVENT (0x03<<23) -#define MI_WAIT_FOR_OVERLAY_FLIP (1<<16) +#define MI_WAIT_FOR_EVENT (0x03<<23) +#define MI_WAIT_FOR_PIPEB_SVBLANK (1<<18) +#define MI_WAIT_FOR_PIPEA_SVBLANK (1<<17) +#define MI_WAIT_FOR_OVERLAY_FLIP (1<<16) +#define MI_WAIT_FOR_PIPEB_VBLANK (1<<7) +#define MI_WAIT_FOR_PIPEB_SCAN_LINE_WINDOW (1<<5) +#define MI_WAIT_FOR_PIPEA_VBLANK (1<<3) +#define MI_WAIT_FOR_PIPEA_SCAN_LINE_WINDOW (1<<1) + +/* Set the scan line for MI_WAIT_FOR_PIPE?_SCAN_LINE_WINDOW */ +#define MI_LOAD_SCAN_LINES_INCL (0x12<<23) +#define MI_LOAD_SCAN_LINES_DISPLAY_PIPEA (0) +#define MI_LOAD_SCAN_LINES_DISPLAY_PIPEB (0x1<<20) /* Flush */ #define MI_FLUSH (0x04<<23) @@ -2417,6 +2468,13 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define STATE3D_COLOR_FACTOR ((0x3<<29)|(0x1d<<24)|(0x01<<16)) +/* Batch */ +#define MI_BATCH_BUFFER ((0x30 << 23) | 1) +#define MI_BATCH_BUFFER_START (0x31 << 23) +#define MI_BATCH_BUFFER_END (0xA << 23) +#define MI_BATCH_NON_SECURE (1) +#define MI_BATCH_NON_SECURE_I965 (1 << 8) + /* STATE3D_FOG_MODE stuff */ #define ENABLE_FOG_SOURCE (1<<27) #define ENABLE_FOG_CONST (1<<24) diff --git a/driver/xf86-video-intel/src/i830.h b/driver/xf86-video-intel/src/i830.h index b2e339a03..f93391770 100644 --- a/driver/xf86-video-intel/src/i830.h +++ b/driver/xf86-video-intel/src/i830.h @@ -56,8 +56,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "xaa.h" #include "xf86Cursor.h" #include "xf86xv.h" -#include "xf86int10.h" -#include "vbe.h" #include "vgaHW.h" #include "xf86Crtc.h" #include "xf86RandR12.h" @@ -69,18 +67,14 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #ifdef XF86DRI #include "xf86drm.h" -#ifdef XF86DRI_MM -#include "xf86mm.h" -#endif #include "sarea.h" #define _XF86DRI_SERVER_ #include "dri.h" #include "GL/glxint.h" #include "i830_dri.h" -#ifdef DAMAGE -#include "damage.h" -#endif #endif +#include "intel_bufmgr.h" +#include "i915_drm.h" #ifdef I830_USE_EXA #include "exa.h" @@ -88,6 +82,20 @@ Bool I830EXAInit(ScreenPtr pScreen); unsigned long long I830TexOffsetStart(PixmapPtr pPix); #endif +#ifdef I830_USE_UXA +#include "uxa.h" +Bool i830_uxa_init(ScreenPtr pScreen); +void i830_uxa_create_screen_resources(ScreenPtr pScreen); +void i830_uxa_block_handler (ScreenPtr pScreen); +Bool i830_get_aperture_space(ScrnInfoPtr pScrn, drm_intel_bo **bo_table, + int num_bos); +#endif + +#if defined(I830_USE_UXA) || defined(I830_USE_EXA) +dri_bo *i830_get_pixmap_bo (PixmapPtr pixmap); +void i830_set_pixmap_bo(PixmapPtr pixmap, dri_bo *bo); +#endif + #ifdef I830_USE_XAA Bool I830XAAInit(ScreenPtr pScreen); #endif @@ -95,16 +103,9 @@ Bool I830XAAInit(ScreenPtr pScreen); typedef struct _I830OutputRec I830OutputRec, *I830OutputPtr; #include "common.h" -#include "i830_ring.h" #include "i830_sdvo.h" #include "i2c_vid.h" -/* I830 Video support */ -#define NEED_REPLIES /* ? */ -#define EXTENSION_PROC_ARGS void * -#include "extnsionst.h" /* required */ -#include <X11/extensions/panoramiXproto.h> /* required */ - /* * The mode handling is based upon the VESA driver written by * Paulo César Pereira de Andrade <pcpa@conectiva.com.br>. @@ -139,6 +140,8 @@ enum tile_format { TILE_YMAJOR }; +#define PITCH_NONE 0 + /** Record of a linear allocation in the aperture. */ typedef struct _i830_memory i830_memory; struct _i830_memory { @@ -194,10 +197,10 @@ struct _i830_memory { i830_memory *prev; /** @} */ -#ifdef XF86DRI_MM - drmBO bo; + dri_bo *bo; + uint32_t alignment; + uint32_t gem_name; Bool lifetime_fixed_offset; -#endif }; typedef struct { @@ -209,17 +212,6 @@ typedef struct { int space; } I830RingBuffer; -typedef struct { - int lastInstance; - int refCount; - ScrnInfoPtr pScrn_1; - ScrnInfoPtr pScrn_2; - int RingRunning; -#ifdef I830_XV - int XvInUse; -#endif -} I830EntRec, *I830EntPtr; - /* store information about an Ixxx DVO */ /* The i830->i865 use multiple DVOs with multiple i2cs */ /* the i915, i945 have a single sDVO i2c bus - which is different */ @@ -263,6 +255,8 @@ typedef struct _I830CrtcPrivateRec { 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]; @@ -355,18 +349,29 @@ enum backlight_control { BCM_KERNEL, }; +typedef enum accel_method { + ACCEL_UNINIT = 0, + ACCEL_NONE, + ACCEL_XAA, + ACCEL_EXA, + ACCEL_UXA +} accel_method_t; + +enum dri_type { + DRI_DISABLED, + DRI_NONE, + DRI_XF86DRI, + DRI_DRI2 +}; + typedef struct _I830Rec { unsigned char *MMIOBase; unsigned char *GTTBase; unsigned char *FbBase; int cpp; - I830EntPtr entityPrivate; - int init; - unsigned int bufferOffset; /* for I830SelectBuffer */ BoxRec FbMemBox; - BoxRec FbMemBox2; int CacheLines; /* These are set in PreInit and never changed. */ @@ -384,7 +389,6 @@ typedef struct _I830Rec { int gtt_acquired; /**< whether we currently own the AGP */ i830_memory *front_buffer; - i830_memory *front_buffer_2; i830_memory *compressed_front_buffer; i830_memory *compressed_ll_buffer; /* One big buffer for all cursors for kernels that support this */ @@ -393,13 +397,13 @@ typedef struct _I830Rec { i830_memory *cursor_mem_classic[2]; i830_memory *cursor_mem_argb[2]; i830_memory *xaa_scratch; - i830_memory *xaa_scratch_2; #ifdef I830_USE_EXA i830_memory *exa_offscreen; - i830_memory *gen4_render_state_mem; #endif + i830_memory *fake_bufmgr_mem; + /* Regions allocated either from the above pools, or from agpgart. */ - I830RingBuffer *LpRing; + I830RingBuffer ring; /** Number of bytes being emitted in the current BEGIN_LP_RING */ unsigned int ring_emitting; @@ -408,6 +412,21 @@ typedef struct _I830Rec { /** Offset in the ring for the next DWORD emit */ uint32_t ring_next; + dri_bufmgr *bufmgr; + + uint8_t *batch_ptr; + /** Byte offset in batch_ptr for the next dword to be emitted. */ + unsigned int batch_used; + /** Position in batch_ptr at the start of the current BEGIN_BATCH */ + unsigned int batch_emit_start; + /** Number of bytes to be emitted in the current BEGIN_BATCH. */ + uint32_t batch_emitting; + dri_bo *batch_bo; + /** Whether we're in a section of code that can't tolerate flushing */ + Bool in_batch_atomic; + /** Ending batch_used that was verified by i830_start_batch_atomic() */ + int batch_atomic_limit; + #ifdef I830_XV /* For Xvideo */ i830_memory *overlay_regs; @@ -422,13 +441,10 @@ typedef struct _I830Rec { void (*PointerMoved)(int, int, int); CreateScreenResourcesProcPtr CreateScreenResources; - i830_memory *logical_context; - i830_memory *power_context; #ifdef XF86DRI i830_memory *back_buffer; - i830_memory *third_buffer; i830_memory *depth_buffer; i830_memory *textures; /**< Compatibility texture memory */ i830_memory *memory_manager; /**< DRI memory manager aperture */ @@ -438,16 +454,14 @@ typedef struct _I830Rec { int drmMinor; Bool allocate_classic_textures; + Bool can_resize; + Bool want_vblank_interrupts; -#ifdef DAMAGE - DamagePtr pDamage; - RegionRec driRegion; -#endif #endif + Bool need_mi_flush; + Bool NeedRingBufferLow; - Bool allowPageFlip; - Bool TripleBuffer; Bool tiling; Bool fb_compression; @@ -481,9 +495,7 @@ typedef struct _I830Rec { Bool fence_used[FENCE_NEW_NR]; - Bool useEXA; - Bool noAccel; - Bool SWCursor; + accel_method_t accel; #ifdef I830_USE_XAA XAAInfoRecPtr AccelInfoRec; @@ -501,10 +513,23 @@ typedef struct _I830Rec { #endif CloseScreenProcPtr CloseScreen; + void (*batch_flush_notify)(ScrnInfoPtr pScrn); + #ifdef I830_USE_EXA ExaDriverPtr EXADriverPtr; +#endif +#ifdef I830_USE_UXA + uxa_driver_t *uxa_driver; + Bool need_flush; +#endif + Bool need_sync; +#if defined(I830_USE_EXA) || defined(I830_USE_UXA) PixmapPtr pSrcPixmap; #endif + int accel_pixmap_pitch_alignment; + int accel_pixmap_offset_alignment; + int accel_max_x; + int accel_max_y; I830WriteIndexedByteFunc writeControl; I830ReadIndexedByteFunc readControl; @@ -513,12 +538,24 @@ typedef struct _I830Rec { Bool XvDisabled; /* Xv disabled in PreInit. */ Bool XvEnabled; /* Xv enabled for this generation. */ + Bool XvPreferOverlay; #ifdef I830_XV int colorKey; XF86VideoAdaptorPtr adaptor; ScreenBlockHandlerProcPtr BlockHandler; - Bool *overlayOn; + Bool overlayOn; + + struct { + drm_intel_bo *gen4_vs_bo; + drm_intel_bo *gen4_sf_bo; + drm_intel_bo *gen4_wm_packed_bo; + drm_intel_bo *gen4_wm_planar_bo; + drm_intel_bo *gen4_cc_bo; + drm_intel_bo *gen4_cc_vp_bo; + drm_intel_bo *gen4_sampler_bo; + drm_intel_bo *gen4_sip_kernel_bo; + } video; #endif /* EXA render state */ @@ -530,11 +567,19 @@ typedef struct _I830Rec { uint32_t mapstate[6]; uint32_t samplerstate[6]; + struct { + int op; + PicturePtr pSrcPicture, pMaskPicture, pDstPicture; + PixmapPtr pSrc, pMask, pDst; + uint32_t dst_format; + Bool is_nearest; + Bool needs_emit; + } i915_render_state; + /* 965 render acceleration state */ struct gen4_render_state *gen4_render_state; - Bool directRenderingDisabled; /* DRI disabled in PreInit. */ - Bool directRenderingEnabled; /* DRI enabled this generation. */ + enum dri_type directRenderingType; /* DRI enabled this generation. */ #ifdef XF86DRI Bool directRenderingOpen; @@ -546,6 +591,7 @@ typedef struct _I830Rec { I830ConfigPrivPtr pVisualConfigsPriv; drm_handle_t buffer_map; drm_handle_t ring_map; + char deviceName[64]; #endif /* Broken-out options. */ @@ -557,13 +603,10 @@ typedef struct _I830Rec { Bool lvds_dither; DisplayModePtr lvds_fixed_mode; Bool skip_panel_detect; + Bool integrated_lvds; /* LVDS config from driver feature BDB */ Bool tv_present; /* TV connector present (from VBIOS) */ - Bool StolenOnly; - - Bool checkDevices; - /* Driver phase/state information */ Bool preinit; Bool starting; @@ -642,7 +685,7 @@ typedef struct _I830Rec { uint32_t savePP_ON; uint32_t savePP_OFF; uint32_t savePP_CONTROL; - uint32_t savePP_CYCLE; + uint32_t savePP_DIVISOR; uint32_t savePFIT_CONTROL; uint32_t savePaletteA[256]; uint32_t savePaletteB[256]; @@ -660,11 +703,17 @@ typedef struct _I830Rec { uint32_t saveRAMCLK_GATE_D; uint32_t savePWRCTXA; - enum last_3d *last_3d; + enum last_3d last_3d; + + Bool use_drm_mode; + Bool kernel_exec_fencing; /** Enables logging of debug output related to mode switching. */ Bool debug_modes; unsigned int quirk_flag; + + /** User option to print acceleration fallback info to the server log. */ + Bool fallback_debug; } I830Rec; #define I830PTR(p) ((I830Ptr)((p)->driverPrivate)) @@ -676,6 +725,16 @@ typedef struct _I830Rec { #define I830_SELECT_DEPTH 2 #define I830_SELECT_THIRD 3 +unsigned long intel_get_pixmap_offset(PixmapPtr pPix); +unsigned long intel_get_pixmap_pitch(PixmapPtr pPix); + +struct i830_exa_pixmap_priv { + dri_bo *bo; +}; + +/* Batchbuffer support macros and functions */ +#include "i830_batchbuffer.h" + /* I830 specific functions */ extern int I830WaitLpRing(ScrnInfoPtr pScrn, int n, int timeout_millis); extern void I830SetPIOAccess(I830Ptr pI830); @@ -687,7 +746,7 @@ extern Bool I830CursorInit(ScreenPtr pScreen); extern void IntelEmitInvarientState(ScrnInfoPtr pScrn); extern void I830EmitInvarientState(ScrnInfoPtr pScrn); extern void I915EmitInvarientState(ScrnInfoPtr pScrn); -extern void I830SelectBuffer(ScrnInfoPtr pScrn, int buffer); +extern Bool I830SelectBuffer(ScrnInfoPtr pScrn, int buffer); void i830_update_cursor_offsets(ScrnInfoPtr pScrn); /* CRTC-based cursor functions */ @@ -747,8 +806,17 @@ extern Bool I830DRISetHWS(ScrnInfoPtr pScrn); extern Bool I830DRIInstIrqHandler(ScrnInfoPtr pScrn); #endif -unsigned long intel_get_pixmap_offset(PixmapPtr pPix); -unsigned long intel_get_pixmap_pitch(PixmapPtr pPix); +#ifdef DRI2 +Bool I830DRI2ScreenInit(ScreenPtr pScreen); +void I830DRI2CloseScreen(ScreenPtr pScreen); +#endif + +#ifdef XF86DRM_MODE +extern Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp); +extern Bool drmmode_is_rotate_pixmap(ScrnInfoPtr pScrn, pointer pPixData, + dri_bo **bo); +#endif + extern Bool I830AccelInit(ScreenPtr pScreen); extern void I830SetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir, int rop, @@ -766,13 +834,9 @@ Bool i830_allocator_init(ScrnInfoPtr pScrn, unsigned long offset, unsigned long size); void i830_allocator_fini(ScrnInfoPtr pScrn); i830_memory * i830_allocate_memory(ScrnInfoPtr pScrn, const char *name, - unsigned long size, unsigned long alignment, - int flags); -i830_memory *i830_allocate_memory_tiled(ScrnInfoPtr pScrn, const char *name, - unsigned long size, - unsigned long pitch, - unsigned long alignment, int flags, - enum tile_format tile_format); + unsigned long size, unsigned long pitch, + unsigned long alignment, int flags, + enum tile_format tile_format); void i830_describe_allocations(ScrnInfoPtr pScrn, int verbosity, const char *prefix); void i830_reset_allocations(ScrnInfoPtr pScrn); @@ -783,12 +847,21 @@ Bool i830_allocate_2d_memory(ScrnInfoPtr pScrn); Bool i830_allocate_texture_memory(ScrnInfoPtr pScrn); Bool i830_allocate_pwrctx(ScrnInfoPtr pScrn); Bool i830_allocate_3d_memory(ScrnInfoPtr pScrn); +void i830_init_bufmgr(ScrnInfoPtr pScrn); #ifdef INTEL_XVMC Bool i830_allocate_xvmc_buffer(ScrnInfoPtr pScrn, const char *name, i830_memory **buffer, unsigned long size, int flags); #endif +extern void i830_update_front_offset(ScrnInfoPtr pScrn); +extern uint32_t i830_create_new_fb(ScrnInfoPtr pScrn, int width, int height, + int *pitch); + +Bool +i830_tiled_width(I830Ptr i830, int *width, int cpp); + +int +i830_pad_drawable_width(int width, int cpp); -extern Bool I830IsPrimary(ScrnInfoPtr pScrn); extern Bool I830I2CInit(ScrnInfoPtr pScrn, I2CBusPtr *bus_ptr, int i2c_reg, char *name); @@ -818,10 +891,16 @@ extern void i830WaitSync(ScrnInfoPtr pScrn); /* i830_memory.c */ Bool i830_bind_all_memory(ScrnInfoPtr pScrn); Bool i830_unbind_all_memory(ScrnInfoPtr pScrn); +unsigned long i830_get_fence_size(I830Ptr pI830, unsigned long size); +unsigned long i830_get_fence_pitch(I830Ptr pI830, unsigned long pitch, int format); +unsigned long i830_get_fence_alignment(I830Ptr pI830, unsigned long size); Bool I830BindAGPMemory(ScrnInfoPtr pScrn); Bool I830UnbindAGPMemory(ScrnInfoPtr pScrn); +i830_memory * +i830_allocate_framebuffer(ScrnInfoPtr pScrn); + /* i830_modes.c */ DisplayModePtr i830_ddc_get_modes(xf86OutputPtr output); @@ -846,6 +925,9 @@ Bool i915_check_composite(int op, PicturePtr pSrc, PicturePtr pMask, Bool i915_prepare_composite(int op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst, PixmapPtr pSrcPixmap, PixmapPtr pMaskPixmap, PixmapPtr pDstPixmap); +void i915_composite(PixmapPtr pDst, int srcX, int srcY, + int maskX, int maskY, int dstX, int dstY, int w, int h); +void i915_batch_flush_notify(ScrnInfoPtr pScrn); /* i965_render.c */ unsigned int gen4_render_state_size(ScrnInfoPtr pScrn); void gen4_render_state_init(ScrnInfoPtr pScrn); @@ -858,6 +940,9 @@ Bool i965_prepare_composite(int op, PicturePtr pSrc, PicturePtr pMask, void i965_composite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY, int dstX, int dstY, int w, int h); +void +i965_batch_flush_notify(ScrnInfoPtr pScrn); + Bool i830_get_transformed_coordinates(int x, int y, PictTransformPtr transform, float *x_out, float *y_out); @@ -868,12 +953,17 @@ i830_get_transformed_coordinates_3d(int x, int y, PictTransformPtr transform, void i830_enter_render(ScrnInfoPtr); +#ifndef SERVER_1_5 +Bool xf86MonitorIsHDMI(xf86MonPtr mon); +#endif + static inline void i830_wait_ring_idle(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - I830WaitLpRing(pScrn, pI830->LpRing->mem->size - 8, 0); + if (pI830->accel != ACCEL_NONE) + I830WaitLpRing(pScrn, pI830->ring.mem->size - 8, 0); } static inline int i830_fb_compression_supported(I830Ptr pI830) @@ -885,7 +975,7 @@ static inline int i830_fb_compression_supported(I830Ptr pI830) /* fbc depends on tiled surface. And we don't support tiled * front buffer with XAA now. */ - if (!pI830->tiling || (IS_I965G(pI830) && !pI830->useEXA)) + if (!pI830->tiling || (IS_I965G(pI830) && pI830->accel <= ACCEL_XAA)) return FALSE; /* We have not gotten FBC to work consistently on 965GM. Our best * working theory right now is that FBC simply isn't reliable on @@ -897,6 +987,15 @@ static inline int i830_fb_compression_supported(I830Ptr pI830) return TRUE; } +#define I830FALLBACK(s, arg...) \ +do { \ + if (I830PTR(pScrn)->fallback_debug) { \ + xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ + "EXA fallback: " s "\n", ##arg); \ + } \ + return FALSE; \ +} while(0) + Bool i830_pixmap_tiled(PixmapPtr p); #define i830_exa_check_pitch_2d(p) do {\ @@ -910,12 +1009,37 @@ Bool i830_pixmap_tiled(PixmapPtr p); if (pitch > KB(8)) I830FALLBACK("pitch exceeds 3d limit 8K\n");\ } while(0) -/* Batchbuffer compatibility handling */ -#define BEGIN_BATCH(n) BEGIN_LP_RING(n) -#define ENSURE_BATCH(n) -#define OUT_BATCH(d) OUT_RING(d) -#define OUT_BATCH_F(x) OUT_RING_F(x) -#define ADVANCE_BATCH() ADVANCE_LP_RING() +/** + * Little wrapper around drm_intel_bo_reloc to return the initial value you + * should stuff into the relocation entry. + * + * If only we'd done this before settling on the library API. + */ +static inline uint32_t +intel_emit_reloc(drm_intel_bo *bo, uint32_t offset, + drm_intel_bo *target_bo, uint32_t target_offset, + uint32_t read_domains, uint32_t write_domain) +{ + drm_intel_bo_emit_reloc(bo, offset, target_bo, target_offset, + read_domains, write_domain); + + return target_bo->offset + target_offset; +} + +static inline drm_intel_bo * +intel_bo_alloc_for_data(ScrnInfoPtr scrn, void *data, unsigned int size, + char *name) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *bo; + + bo = drm_intel_bo_alloc(pI830->bufmgr, name, size, 4096); + if (!bo) + return NULL; + drm_intel_bo_subdata(bo, 0, size, data); + + return bo; +} extern const int I830PatternROP[16]; extern const int I830CopyROP[16]; @@ -939,6 +1063,20 @@ extern const int I830CopyROP[16]; #define QUIRK_PIPEA_FORCE 0x00000008 #define QUIRK_IVCH_NEED_DVOB 0x00000010 #define QUIRK_RESET_MODES 0x00000020 +#define QUIRK_PFIT_SAFE 0x00000040 +#define QUIRK_IGNORE_CRT 0x00000080 +#define QUIRK_BROKEN_ACPI_LID 0x00000100 extern void i830_fixup_devices(ScrnInfoPtr); +/** + * Hints to CreatePixmap to tell the driver how the pixmap is going to be + * used. + * + * Compare to CREATE_PIXMAP_USAGE_* in the server. + */ +enum { + INTEL_CREATE_PIXMAP_TILING_X = 0x10000000, + INTEL_CREATE_PIXMAP_TILING_Y, +}; + #endif /* _I830_H_ */ diff --git a/driver/xf86-video-intel/src/i830_accel.c b/driver/xf86-video-intel/src/i830_accel.c index 7784c62a5..9f5bcb55b 100644 --- a/driver/xf86-video-intel/src/i830_accel.c +++ b/driver/xf86-video-intel/src/i830_accel.c @@ -54,21 +54,25 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ +#include <errno.h> + #include "xf86.h" #include "xaarop.h" #include "i830.h" #include "i810_reg.h" #include "i830_debug.h" +#include "i830_ring.h" +#include "i915_drm.h" unsigned long intel_get_pixmap_offset(PixmapPtr pPix) { +#if defined(I830_USE_EXA) || defined(I830_USE_UXA) ScreenPtr pScreen = pPix->drawable.pScreen; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); -#ifdef I830_USE_EXA - if (pI830->useEXA) + if (pI830->accel == ACCEL_EXA) return exaGetPixmapOffset(pPix); #endif return (unsigned long)pPix->devPrivate.ptr - (unsigned long)pI830->FbBase; @@ -77,24 +81,22 @@ intel_get_pixmap_offset(PixmapPtr pPix) unsigned long intel_get_pixmap_pitch(PixmapPtr pPix) { +#ifdef I830_USE_EXA ScreenPtr pScreen = pPix->drawable.pScreen; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); -#ifdef I830_USE_EXA - if (pI830->useEXA) + if (pI830->accel == ACCEL_EXA) return exaGetPixmapPitch(pPix); #endif -#ifdef I830_USE_XAA return (unsigned long)pPix->devKind; -#endif } int I830WaitLpRing(ScrnInfoPtr pScrn, int n, int timeout_millis) { I830Ptr pI830 = I830PTR(pScrn); - I830RingBuffer *ring = pI830->LpRing; + I830RingBuffer *ring = &pI830->ring; int iters = 0; unsigned int start = 0; unsigned int now = 0; @@ -136,7 +138,7 @@ I830WaitLpRing(ScrnInfoPtr pScrn, int n, int timeout_millis) i830_dump_error_state(pScrn); ErrorF("space: %d wanted %d\n", ring->space, n); #ifdef XF86DRI - if (pI830->directRenderingEnabled) { + if (pI830->directRenderingType == DRI_XF86DRI) { DRIUnlock(screenInfo.screens[pScrn->scrnIndex]); DRICloseScreen(screenInfo.screens[pScrn->scrnIndex]); } @@ -147,6 +149,9 @@ I830WaitLpRing(ScrnInfoPtr pScrn, int n, int timeout_millis) #ifdef I830_USE_EXA pI830->EXADriverPtr = NULL; #endif +#ifdef I830_USE_UXA + pI830->uxa_driver = NULL; +#endif FatalError("lockup\n"); } @@ -168,42 +173,55 @@ void I830Sync(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - int flags = MI_WRITE_DIRTY_STATE | MI_INVALIDATE_MAP_CACHE; if (I810_DEBUG & (DEBUG_VERBOSE_ACCEL | DEBUG_VERBOSE_SYNC)) ErrorF("I830Sync\n"); - if (pI830->noAccel) + if (pI830->accel == ACCEL_NONE) return; #ifdef XF86DRI /* VT switching tries to do this. */ - if (!pI830->LockHeld && pI830->directRenderingEnabled) { + if (!pI830->LockHeld && pI830->directRenderingType == DRI_XF86DRI) { return; } #endif - if (pI830->entityPrivate && !pI830->entityPrivate->RingRunning) return; - - if (IS_I965G(pI830)) - flags = 0; - - /* Send a flush instruction and then wait till the ring is empty. - * This is stronger than waiting for the blitter to finish as it also - * flushes the internal graphics caches. - */ - - { - BEGIN_BATCH(2); - OUT_BATCH(MI_FLUSH | flags); - OUT_BATCH(MI_NOOP); /* pad to quadword */ - ADVANCE_BATCH(); + I830EmitFlush(pScrn); + + intel_batch_flush(pScrn, TRUE); + + if (pI830->directRenderingType > DRI_NONE) { + struct drm_i915_irq_emit emit; + struct drm_i915_irq_wait wait; + int ret; + + /* Most of the uses of I830Sync while using GEM should actually be + * using set_domain on a specific buffer. We're not there yet, so fake + * it up using irq_emit/wait. It's still better than spinning on + * register reads for idle. + */ + emit.irq_seq = &wait.irq_seq; + ret = drmCommandWriteRead(pI830->drmSubFD, DRM_I830_IRQ_EMIT, &emit, + sizeof(emit)); + if (ret != 0) + FatalError("Failure to emit IRQ: %s\n", strerror(-ret)); + + do { + ret = drmCommandWrite(pI830->drmSubFD, DRM_I830_IRQ_WAIT, &wait, + sizeof(wait)); + } while (ret == -EINTR); + + if (ret != 0) + FatalError("Failure to wait for IRQ: %s\n", strerror(-ret)); + + if (!pI830->memory_manager) + i830_refresh_ring(pScrn); + } else if (!pI830->use_drm_mode) { + i830_wait_ring_idle(pScrn); } - i830_wait_ring_idle(pScrn); - - pI830->LpRing->space = pI830->LpRing->mem->size - 8; pI830->nextColorExpandBuf = 0; } @@ -217,14 +235,13 @@ I830EmitFlush(ScrnInfoPtr pScrn) flags = 0; { - BEGIN_BATCH(2); + BEGIN_BATCH(1); OUT_BATCH(MI_FLUSH | flags); - OUT_BATCH(MI_NOOP); /* pad to quadword */ ADVANCE_BATCH(); } } -void +Bool I830SelectBuffer(ScrnInfoPtr pScrn, int buffer) { I830Ptr pI830 = I830PTR(pScrn); @@ -233,12 +250,13 @@ I830SelectBuffer(ScrnInfoPtr pScrn, int buffer) #ifdef XF86DRI case I830_SELECT_BACK: pI830->bufferOffset = pI830->back_buffer->offset; - break; - case I830_SELECT_THIRD: - pI830->bufferOffset = pI830->third_buffer->offset; + if (pI830->back_buffer->tiling == TILE_YMAJOR) + return FALSE; break; case I830_SELECT_DEPTH: pI830->bufferOffset = pI830->depth_buffer->offset; + if (pI830->depth_buffer->tiling == TILE_YMAJOR) + return FALSE; break; #endif default: @@ -250,6 +268,7 @@ I830SelectBuffer(ScrnInfoPtr pScrn, int buffer) if (I810_DEBUG & DEBUG_VERBOSE_ACCEL) ErrorF("I830SelectBuffer %d --> offset %x\n", buffer, pI830->bufferOffset); + return TRUE; } /* The following function sets up the supported acceleration. Call it @@ -259,15 +278,82 @@ I830SelectBuffer(ScrnInfoPtr pScrn, int buffer) Bool I830AccelInit(ScreenPtr pScreen) { -#ifdef I830_USE_EXA ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - if (pI830->useEXA) + /* Limits are described in the BLT engine chapter under Graphics Data Size + * Limitations, and the descriptions of SURFACE_STATE, 3DSTATE_BUFFER_INFO, + * 3DSTATE_DRAWING_RECTANGLE, 3DSTATE_MAP_INFO, and 3DSTATE_MAP_INFO. + * + * i845 through i965 limits 2D rendering to 65536 lines and pitch of 32768. + * + * i965 limits 3D surface to (2*element size)-aligned offset if un-tiled. + * i965 limits 3D surface to 4kB-aligned offset if tiled. + * i965 limits 3D surfaces to w,h of ?,8192. + * i965 limits 3D surface to pitch of 1B - 128kB. + * i965 limits 3D surface pitch alignment to 1 or 2 times the element size. + * i965 limits 3D surface pitch alignment to 512B if tiled. + * i965 limits 3D destination drawing rect to w,h of 8192,8192. + * + * i915 limits 3D textures to 4B-aligned offset if un-tiled. + * i915 limits 3D textures to ~4kB-aligned offset if tiled. + * i915 limits 3D textures to width,height of 2048,2048. + * i915 limits 3D textures to pitch of 16B - 8kB, in dwords. + * i915 limits 3D destination to ~4kB-aligned offset if tiled. + * i915 limits 3D destination to pitch of 16B - 8kB, in dwords, if un-tiled. + * i915 limits 3D destination to pitch 64B-aligned if used with depth. + * i915 limits 3D destination to pitch of 512B - 8kB, in tiles, if tiled. + * i915 limits 3D destination to POT aligned pitch if tiled. + * i915 limits 3D destination drawing rect to w,h of 2048,2048. + * + * i845 limits 3D textures to 4B-aligned offset if un-tiled. + * i845 limits 3D textures to ~4kB-aligned offset if tiled. + * i845 limits 3D textures to width,height of 2048,2048. + * i845 limits 3D textures to pitch of 4B - 8kB, in dwords. + * i845 limits 3D destination to 4B-aligned offset if un-tiled. + * i845 limits 3D destination to ~4kB-aligned offset if tiled. + * i845 limits 3D destination to pitch of 8B - 8kB, in dwords. + * i845 limits 3D destination drawing rect to w,h of 2048,2048. + * + * For the tiled issues, the only tiled buffer we draw to should be + * the front, which will have an appropriate pitch/offset already set up, + * so EXA doesn't need to worry. + */ + if (IS_I965G(pI830)) { + pI830->accel_pixmap_offset_alignment = 4 * 2; + pI830->accel_pixmap_pitch_alignment = 64; + pI830->accel_max_x = 8192; + pI830->accel_max_y = 8192; + } else { + pI830->accel_pixmap_offset_alignment = 4; + pI830->accel_pixmap_pitch_alignment = 64; + pI830->accel_max_x = 2048; + pI830->accel_max_y = 2048; + } + /* Bump the pitch so that we can tile any pixmap we create. */ + if (pI830->directRenderingType >= DRI_DRI2) + pI830->accel_pixmap_pitch_alignment = 512; + + switch (pI830->accel) { + case ACCEL_UXA: +#ifdef I830_USE_UXA + return i830_uxa_init(pScreen); +#else + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "UXA not built in, falling back to EXA.\n"); + return I830EXAInit(pScreen); +#endif +#ifdef I830_USE_EXA + case ACCEL_EXA: return I830EXAInit(pScreen); #endif #ifdef I830_USE_XAA - return I830XAAInit(pScreen); + case ACCEL_XAA: + return I830XAAInit(pScreen); #endif + case ACCEL_UNINIT: + case ACCEL_NONE: + break; + } return FALSE; } diff --git a/driver/xf86-video-intel/src/i830_batchbuffer.c b/driver/xf86-video-intel/src/i830_batchbuffer.c new file mode 100644 index 000000000..ff5f0c21c --- /dev/null +++ b/driver/xf86-video-intel/src/i830_batchbuffer.c @@ -0,0 +1,216 @@ +/* -*- c-basic-offset: 4 -*- */ +/* + * Copyright © 2006 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Authors: + * Eric Anholt <eric@anholt.net> + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <assert.h> +#include <stdlib.h> +#include <errno.h> + +#include "xf86.h" +#include "i830.h" +#include "i830_ring.h" +#include "i915_drm.h" + +static int +intel_nondrm_exec(dri_bo *bo, unsigned int used, void *priv) +{ + ScrnInfoPtr pScrn = priv; + I830Ptr pI830 = I830PTR(pScrn); + + BEGIN_LP_RING(4); + OUT_RING(MI_BATCH_BUFFER_START | (2 << 6)); + OUT_RING(bo->offset); + OUT_RING(MI_NOOP); + OUT_RING(MI_NOOP); + ADVANCE_LP_RING(); + + return 0; +} + +static int +intel_nondrm_exec_i830(dri_bo *bo, unsigned int used, void *priv) +{ + ScrnInfoPtr pScrn = priv; + I830Ptr pI830 = I830PTR(pScrn); + + BEGIN_LP_RING(4); + OUT_RING(MI_BATCH_BUFFER); + OUT_RING(bo->offset); + OUT_RING(bo->offset + pI830->batch_used - 4); + OUT_RING(MI_NOOP); + ADVANCE_LP_RING(); + + return 0; +} + +/** + * Creates a fence value representing a request to be passed. + * + * Stub implementation that should be avoided when DRM functions are available. + */ +static unsigned int +intel_nondrm_emit(void *priv) +{ + static unsigned int fence = 0; + + /* Match DRM in not using half the range. The fake bufmgr relies on this. */ + if (++fence >= 0x8000000) + fence = 1; + + return fence; +} + +/** + * Waits on a fence representing a request to be passed. + * + * Stub implementation that should be avoided when DRM functions are available. + */ +static void +intel_nondrm_wait(unsigned int fence, void *priv) +{ + ScrnInfoPtr pScrn = priv; + + i830_wait_ring_idle(pScrn); +} + +static void +intel_next_batch(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + + /* The 865 has issues with larger-than-page-sized batch buffers. */ + if (IS_I865G(pI830)) + pI830->batch_bo = dri_bo_alloc(pI830->bufmgr, "batch", 4096, 4096); + else + pI830->batch_bo = dri_bo_alloc(pI830->bufmgr, "batch", 4096 * 4, 4096); + + if (dri_bo_map(pI830->batch_bo, 1) != 0) + FatalError("Failed to map batchbuffer: %s\n", strerror(errno)); + + pI830->batch_used = 0; + pI830->batch_ptr = pI830->batch_bo->virtual; + + /* If we are using DRI2, we don't know when another client has executed, + * so we have to reinitialize our 3D state per batch. + */ + if (pI830->directRenderingType == DRI_DRI2) + pI830->last_3d = LAST_3D_OTHER; +} + +void +intel_batch_init(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + + pI830->batch_emit_start = 0; + pI830->batch_emitting = 0; + + intel_next_batch(pScrn); + + if (pI830->directRenderingType <= DRI_NONE) { + if (IS_I830(pI830) || IS_845G(pI830)) { + intel_bufmgr_fake_set_exec_callback(pI830->bufmgr, + intel_nondrm_exec_i830, + pScrn); + } else { + intel_bufmgr_fake_set_exec_callback(pI830->bufmgr, + intel_nondrm_exec, + pScrn); + } + intel_bufmgr_fake_set_fence_callback(pI830->bufmgr, + intel_nondrm_emit, + intel_nondrm_wait, + pScrn); + } +} + +void +intel_batch_teardown(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + + if (pI830->batch_ptr != NULL) { + dri_bo_unmap(pI830->batch_bo); + dri_bo_unreference(pI830->batch_bo); + pI830->batch_ptr = NULL; + } +} + +void +intel_batch_flush(ScrnInfoPtr pScrn, Bool flushed) +{ + I830Ptr pI830 = I830PTR(pScrn); + int ret; + + if (pI830->batch_used == 0) + return; + + /* If we're not using GEM, then emit a flush after each batch buffer */ + if (pI830->memory_manager == NULL && !flushed) { + int flags = MI_WRITE_DIRTY_STATE | MI_INVALIDATE_MAP_CACHE; + + if (IS_I965G(pI830)) + flags = 0; + + *(uint32_t *)(pI830->batch_ptr + pI830->batch_used) = MI_FLUSH | flags; + pI830->batch_used += 4; + } + + /* Emit a padding dword if we aren't going to be quad-word aligned. */ + if ((pI830->batch_used & 4) == 0) { + *(uint32_t *)(pI830->batch_ptr + pI830->batch_used) = MI_NOOP; + pI830->batch_used += 4; + } + + /* Mark the end of the batchbuffer. */ + *(uint32_t *)(pI830->batch_ptr + pI830->batch_used) = MI_BATCH_BUFFER_END; + pI830->batch_used += 4; + + dri_bo_unmap(pI830->batch_bo); + pI830->batch_ptr = NULL; + + ret = dri_bo_exec(pI830->batch_bo, pI830->batch_used, NULL, 0, 0xffffffff); + if (ret != 0) + FatalError("Failed to submit batchbuffer: %s\n", strerror(-ret)); + + dri_bo_unreference(pI830->batch_bo); + intel_next_batch(pScrn); + + /* Mark that we need to flush whatever potential rendering we've done in the + * blockhandler. We could set this less often, but it's probably not worth + * the work. + */ + if (pI830->memory_manager != NULL) + pI830->need_mi_flush = TRUE; + + if (pI830->batch_flush_notify) + pI830->batch_flush_notify (pScrn); +} diff --git a/driver/xf86-video-intel/src/i830_batchbuffer.h b/driver/xf86-video-intel/src/i830_batchbuffer.h new file mode 100644 index 000000000..ec870847f --- /dev/null +++ b/driver/xf86-video-intel/src/i830_batchbuffer.h @@ -0,0 +1,170 @@ +/************************************************************************** + +Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. +Copyright © 2002 David Dawes + +All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sub license, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice (including the +next paragraph) shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 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. + +**************************************************************************/ + +#ifndef _INTEL_BATCHBUFFER_H +#define _INTEL_BATCHBUFFER_H + +#define BATCH_RESERVED 16 + +void intel_batch_init(ScrnInfoPtr pScrn); +void intel_batch_teardown(ScrnInfoPtr pScrn); +void intel_batch_flush(ScrnInfoPtr pScrn, Bool flushed); + +static inline int +intel_batch_space(I830Ptr pI830) +{ + return (pI830->batch_bo->size - BATCH_RESERVED) - (pI830->batch_used); +} + +static inline void +intel_batch_require_space(ScrnInfoPtr pScrn, I830Ptr pI830, GLuint sz) +{ + assert(sz < pI830->batch_bo->size - 8); + if (intel_batch_space(pI830) < sz) + intel_batch_flush(pScrn, FALSE); +} + +static inline void +intel_batch_start_atomic(ScrnInfoPtr pScrn, unsigned int sz) +{ + I830Ptr pI830 = I830PTR(pScrn); + + assert(!pI830->in_batch_atomic); + intel_batch_require_space(pScrn, pI830, sz * 4); + + pI830->in_batch_atomic = TRUE; + pI830->batch_atomic_limit = pI830->batch_used + sz * 4; +} + +static inline void +intel_batch_end_atomic(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + + assert(pI830->in_batch_atomic); + assert(pI830->batch_used <= pI830->batch_atomic_limit); + pI830->in_batch_atomic = FALSE; +} + +static inline void +intel_batch_emit_dword(I830Ptr pI830, uint32_t dword) +{ + assert(pI830->batch_ptr != NULL); + assert(intel_batch_space(pI830) >= 4); + *(uint32_t *)(pI830->batch_ptr + pI830->batch_used) = dword; + pI830->batch_used += 4; +} + +static inline void +intel_batch_emit_reloc (I830Ptr pI830, + dri_bo *bo, + uint32_t read_domains, + uint32_t write_domains, + uint32_t delta) +{ + assert(intel_batch_space(pI830) >= 4); + *(uint32_t *)(pI830->batch_ptr + pI830->batch_used) = bo->offset + delta; + dri_bo_emit_reloc(pI830->batch_bo, read_domains, write_domains, delta, + pI830->batch_used, bo); + pI830->batch_used += 4; +} + +static inline void +intel_batch_emit_reloc_pixmap(I830Ptr pI830, PixmapPtr pPixmap, + uint32_t read_domains, uint32_t write_domain, + uint32_t delta) +{ +#if I830_USE_UXA || I830_USE_EXA + dri_bo *bo = i830_get_pixmap_bo(pPixmap); +#endif + uint32_t offset; + assert(pI830->batch_ptr != NULL); + assert(intel_batch_space(pI830) >= 4); +#if I830_USE_UXA || I830_USE_EXA + if (bo) { + intel_batch_emit_reloc(pI830, bo, read_domains, write_domain, delta); + return; + } +#endif + offset = intel_get_pixmap_offset(pPixmap); + *(uint32_t *)(pI830->batch_ptr + pI830->batch_used) = offset + delta; + pI830->batch_used += 4; +} + +#define OUT_BATCH(dword) intel_batch_emit_dword(pI830, dword) + +#define OUT_RELOC(bo, read_domains, write_domains, delta) \ + intel_batch_emit_reloc (pI830, bo, read_domains, write_domains, delta) + +#define OUT_RELOC_PIXMAP(pPixmap, reads, write, delta) \ + intel_batch_emit_reloc_pixmap(pI830, pPixmap, reads, write, delta) + +union intfloat { + float f; + unsigned int ui; +}; + +#define OUT_BATCH_F(x) do { \ + union intfloat tmp; \ + tmp.f = (float)(x); \ + OUT_BATCH(tmp.ui); \ +} while(0) + +#define BEGIN_BATCH(n) \ +do { \ + if (pI830->batch_emitting != 0) \ + FatalError("%s: BEGIN_BATCH called without closing " \ + "ADVANCE_BATCH\n", __FUNCTION__); \ + intel_batch_require_space(pScrn, pI830, (n) * 4); \ + pI830->batch_emitting = (n) * 4; \ + pI830->batch_emit_start = pI830->batch_used; \ +} while (0) + +#define ADVANCE_BATCH() do { \ + if (pI830->batch_emitting == 0) \ + FatalError("%s: ADVANCE_BATCH called with no matching " \ + "BEGIN_BATCH\n", __FUNCTION__); \ + if (pI830->batch_used > pI830->batch_emit_start + pI830->batch_emitting) \ + FatalError("%s: ADVANCE_BATCH: exceeded allocation %d/%d\n ", \ + __FUNCTION__, \ + pI830->batch_used - pI830->batch_emit_start, \ + pI830->batch_emitting); \ + if (pI830->batch_used < pI830->batch_emit_start + pI830->batch_emitting) \ + FatalError("%s: ADVANCE_BATCH: under-used allocation %d/%d\n ", \ + __FUNCTION__, \ + pI830->batch_used - pI830->batch_emit_start, \ + pI830->batch_emitting); \ + if ((pI830->batch_emitting > 8) && (I810_DEBUG & DEBUG_ALWAYS_SYNC)) { \ + /* Note: not actually syncing, just flushing each batch. */ \ + intel_batch_flush(pScrn, FALSE); \ + } \ + pI830->batch_emitting = 0; \ +} while (0) + +#endif /* _INTEL_BATCHBUFFER_H */ diff --git a/driver/xf86-video-intel/src/i830_bios.c b/driver/xf86-video-intel/src/i830_bios.c index fe55d239c..4f2355dea 100644 --- a/driver/xf86-video-intel/src/i830_bios.c +++ b/driver/xf86-video-intel/src/i830_bios.c @@ -47,9 +47,6 @@ (bios[_addr + 2] << 16) \ (bios[_addr + 3] << 24)) -/* XXX */ -#define INTEL_VBIOS_SIZE (64 * 1024) - static void * find_section(struct bdb_header *bdb, int section_id) { @@ -88,8 +85,8 @@ static void parse_panel_data(I830Ptr pI830, struct bdb_header *bdb) { struct bdb_lvds_options *lvds_options; - struct bdb_lvds_lfp_data *lvds_lfp_data; - struct bdb_lvds_lfp_data_entry *entry; + struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs; + int timing_offset; DisplayModePtr fixed_mode; unsigned char *timing_ptr; @@ -104,12 +101,16 @@ parse_panel_data(I830Ptr pI830, struct bdb_header *bdb) if (lvds_options->panel_type == 0xff) return; - lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); - if (!lvds_lfp_data) + lvds_lfp_data_ptrs = find_section(bdb, BDB_LVDS_LFP_DATA_PTRS); + if (!lvds_lfp_data_ptrs) return; - entry = &lvds_lfp_data->data[lvds_options->panel_type]; - timing_ptr = (unsigned char *)&entry->dvo_timing; + timing_offset = + lvds_lfp_data_ptrs->ptr[lvds_options->panel_type].dvo_timing_offset; + timing_ptr = (unsigned char *)bdb + timing_offset; + + if (pI830->skip_panel_detect) + return; fixed_mode = xnfalloc(sizeof(DisplayModeRec)); memset(fixed_mode, 0, sizeof(*fixed_mode)); @@ -134,6 +135,12 @@ parse_panel_data(I830Ptr pI830, struct bdb_header *bdb) fixed_mode->Clock = _PIXEL_CLOCK(timing_ptr) / 1000; fixed_mode->type = M_T_PREFERRED; + /* Some VBTs have bogus h/vtotal values */ + if (fixed_mode->HSyncEnd > fixed_mode->HTotal) + fixed_mode->HTotal = fixed_mode->HSyncEnd + 1; + if (fixed_mode->VSyncEnd > fixed_mode->VTotal) + fixed_mode->VTotal = fixed_mode->VSyncEnd + 1; + xf86SetModeDefaultName(fixed_mode); pI830->lvds_fixed_mode = fixed_mode; @@ -154,13 +161,42 @@ parse_general_features(I830Ptr pI830, struct bdb_header *bdb) pI830->tv_present = general->int_tv_support; pI830->lvds_use_ssc = general->enable_ssc; if (pI830->lvds_use_ssc) { - if (IS_I855(pI830)) + if (IS_I85X(pI830)) pI830->lvds_ssc_freq = general->ssc_freq ? 66 : 48; else pI830->lvds_ssc_freq = general->ssc_freq ? 100 : 96; } } +static void +parse_driver_feature(I830Ptr pI830, struct bdb_header *bdb) +{ + struct bdb_driver_feature *feature; + + /* For mobile chip, set default as true */ + if (IS_MOBILE(pI830) && !IS_I830(pI830)) + pI830->integrated_lvds = TRUE; + + /* skip pre-9xx chips which is broken to parse this block. */ + if (!IS_I9XX(pI830)) + return; + + /* XXX Disable this parsing, as it looks doesn't work for all + VBIOS. Reenable it if we could find out the reliable VBT parsing + for LVDS config later. */ + if (1) + return; + + feature = find_section(bdb, BDB_DRIVER_FEATURES); + if (!feature) + return; + + if (feature->lvds_config != BDB_DRIVER_INT_LVDS) + pI830->integrated_lvds = FALSE; +} + +#define INTEL_VBIOS_SIZE (64 * 1024) /* XXX */ + /** * i830_bios_init - map VBIOS, find VBT * @@ -179,28 +215,44 @@ i830_bios_init(ScrnInfoPtr pScrn) struct bdb_header *bdb; int vbt_off, bdb_off; unsigned char *bios; - vbeInfoPtr pVbe; + int ret; + int size; - bios = xalloc(INTEL_VBIOS_SIZE); +#if XSERVER_LIBPCIACCESS + size = pI830->PciInfo->rom_size; + if (size == 0) { + size = INTEL_VBIOS_SIZE; + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "libpciaccess reported 0 rom size, guessing %dkB\n", + size / 1024); + } +#else + size = INTEL_VBIOS_SIZE; +#endif + bios = xalloc(size); if (bios == NULL) return -1; - pVbe = VBEInit(NULL, pI830->pEnt->index); - if (pVbe != NULL) { - memcpy(bios, xf86int10Addr(pVbe->pInt10, - pVbe->pInt10->BIOSseg << 4), - INTEL_VBIOS_SIZE); - vbeFree (pVbe); - } else { #if XSERVER_LIBPCIACCESS - pci_device_read_rom (pI830->PciInfo, bios); + ret = pci_device_read_rom (pI830->PciInfo, bios); + if (ret != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "libpciaccess failed to read %dkB video BIOS: %s\n", + size / 1024, strerror(-ret)); + xfree (bios); + return -1; + } #else - xf86ReadPciBIOS(0, pI830->PciTag, 0, bios, INTEL_VBIOS_SIZE); -#endif + /* xf86ReadPciBIOS returns the length read */ + ret = xf86ReadPciBIOS(0, pI830->PciTag, 0, bios, size); + if (ret <= 0) { + xfree (bios); + return -1; } +#endif vbt_off = INTEL_BIOS_16(0x1a); - if (vbt_off >= INTEL_VBIOS_SIZE) { + if (vbt_off >= size) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Bad VBT offset: 0x%x\n", vbt_off); xfree(bios); @@ -221,6 +273,7 @@ i830_bios_init(ScrnInfoPtr pScrn) parse_general_features(pI830, bdb); parse_panel_data(pI830, bdb); + parse_driver_feature(pI830, bdb); xfree(bios); diff --git a/driver/xf86-video-intel/src/i830_bios.h b/driver/xf86-video-intel/src/i830_bios.h index 85729f7c9..78af830c0 100644 --- a/driver/xf86-video-intel/src/i830_bios.h +++ b/driver/xf86-video-intel/src/i830_bios.h @@ -29,7 +29,9 @@ #define _I830_BIOS_H_ #include <stdint.h> +#ifndef REG_DUMPER #include <xf86str.h> +#endif struct vbt_header { char signature[20]; /**< Always starts with 'VBT$' */ @@ -117,9 +119,96 @@ struct bdb_general_features { unsigned char rsvd11:6; /* finish byte */ } __attribute__((packed)); +#define GPIO_PIN_NONE 0x00 /* "N/A" */ +#define GPIO_PIN_I2C 0x01 /* "I2C GPIO pins" */ +#define GPIO_PIN_CRT_DDC 0x02 /* "Analog CRT DDC GPIO pins" */ +/* 915+ */ +#define GPIO_PIN_LVDS 0x03 /* "Integrated LVDS DDC GPIO pins" */ +#define GPIO_PIN_SDVO_I2C 0x05 /* "sDVO I2C GPIO pins" */ +#define GPIO_PIN_SDVO_DDC1 0x1D /* "SDVO DDC1 GPIO pins" */ +#define GPIO_PIN_SDVO_DDC2 0x2D /* "SDVO DDC2 GPIO pins" */ +/* pre-915 */ +#define GPIO_PIN_DVI_LVDS 0x03 /* "DVI/LVDS DDC GPIO pins" */ +#define GPIO_PIN_ADD_I2C 0x05 /* "ADDCARD I2C GPIO pins" */ +#define GPIO_PIN_ADD_DDC 0x04 /* "ADDCARD DDC GPIO pins" */ +#define GPIO_PIN_ADD_DDC_I2C 0x06 /* "ADDCARD DDC/I2C GPIO pins" */ + +/* Pre 915 */ +#define DEVICE_TYPE_NONE 0x00 +#define DEVICE_TYPE_CRT 0x01 +#define DEVICE_TYPE_TV 0x09 +#define DEVICE_TYPE_EFP 0x12 +#define DEVICE_TYPE_LFP 0x22 +/* On 915+ */ +#define DEVICE_TYPE_CRT_DPMS 0x6001 +#define DEVICE_TYPE_CRT_DPMS_HOTPLUG 0x4001 +#define DEVICE_TYPE_TV_COMPOSITE 0x0209 +#define DEVICE_TYPE_TV_MACROVISION 0x0289 +#define DEVICE_TYPE_TV_RF_COMPOSITE 0x020c +#define DEVICE_TYPE_TV_SVIDEO_COMPOSITE 0x0609 +#define DEVICE_TYPE_TV_SCART 0x0209 +#define DEVICE_TYPE_TV_CODEC_HOTPLUG_PWR 0x6009 +#define DEVICE_TYPE_EFP_HOTPLUG_PWR 0x6012 +#define DEVICE_TYPE_EFP_DVI_HOTPLUG_PWR 0x6052 +#define DEVICE_TYPE_EFP_DVI_I 0x6053 +#define DEVICE_TYPE_EFP_DVI_D_DUAL 0x6152 +#define DEVICE_TYPE_EFP_DVI_D_HDCP 0x60d2 +#define DEVICE_TYPE_OPENLDI_HOTPLUG_PWR 0x6062 +#define DEVICE_TYPE_OPENLDI_DUALPIX 0x6162 +#define DEVICE_TYPE_LFP_PANELLINK 0x5012 +#define DEVICE_TYPE_LFP_CMOS_PWR 0x5042 +#define DEVICE_TYPE_LFP_LVDS_PWR 0x5062 +#define DEVICE_TYPE_LFP_LVDS_DUAL 0x5162 +#define DEVICE_TYPE_LFP_LVDS_DUAL_HDCP 0x51e2 + +#define DEVICE_CFG_NONE 0x00 +#define DEVICE_CFG_12BIT_DVOB 0x01 +#define DEVICE_CFG_12BIT_DVOC 0x02 +#define DEVICE_CFG_24BIT_DVOBC 0x09 +#define DEVICE_CFG_24BIT_DVOCB 0x0a +#define DEVICE_CFG_DUAL_DVOB 0x11 +#define DEVICE_CFG_DUAL_DVOC 0x12 +#define DEVICE_CFG_DUAL_DVOBC 0x13 +#define DEVICE_CFG_DUAL_LINK_DVOBC 0x19 +#define DEVICE_CFG_DUAL_LINK_DVOCB 0x1a + +#define DEVICE_WIRE_NONE 0x00 +#define DEVICE_WIRE_DVOB 0x01 +#define DEVICE_WIRE_DVOC 0x02 +#define DEVICE_WIRE_DVOBC 0x03 +#define DEVICE_WIRE_DVOBB 0x05 +#define DEVICE_WIRE_DVOCC 0x06 +#define DEVICE_WIRE_DVOB_MASTER 0x0d +#define DEVICE_WIRE_DVOC_MASTER 0x0e + +#define DEVICE_PORT_DVOA 0x00 /* none on 845+ */ +#define DEVICE_PORT_DVOB 0x01 +#define DEVICE_PORT_DVOC 0x02 + +struct child_device_config { + uint16_t handle; + uint16_t device_type; /* See DEVICE_TYPE_* above */ + uint8_t device_id[10]; + uint16_t addin_offset; + uint8_t dvo_port; /* See DEVICE_PORT_* above */ + uint8_t i2c_pin; + uint8_t slave_addr; + uint8_t ddc_pin; + uint16_t edid_ptr; + uint8_t dvo_cfg; /* See DEVICE_CFG_* above */ + uint8_t dvo2_port; + uint8_t i2c2_pin; + uint8_t slave2_addr; + uint8_t ddc2_pin; + uint8_t capabilities; + uint8_t dvo_wiring; /* See DEVICE_WIRE_* above */ + uint8_t dvo2_wiring; + uint16_t extended_type; + uint8_t dvo_function; +} __attribute__((packed)); + struct bdb_general_definitions { - /* DDC GPIO */ - unsigned char crt_ddc_gmbus_pin; + unsigned char crt_ddc_gmbus_pin; /* see GPIO_PIN_* above */ /* DPMS bits */ unsigned char dpms_acpi:1; @@ -131,15 +220,25 @@ struct bdb_general_definitions { unsigned char boot_display[2]; unsigned char child_dev_size; - /* device info */ - unsigned char tv_or_lvds_info[33]; - unsigned char dev1[33]; - unsigned char dev2[33]; - unsigned char dev3[33]; - unsigned char dev4[33]; + /* + * Device info: + * If TV is present, it'll be at devices[0] + * LVDS will be next, either devices[0] or [1], if present + * Max total will be 6, but could be as few as 4 if both + * TV and LVDS are missing, so be careful when interpreting + * [4] and [5]. + */ + struct child_device_config devices[6]; /* may be another device block here on some platforms */ } __attribute__((packed)); +#define DEVICE_CHILD_SIZE 7 + +struct bdb_child_devices { + uint8_t child_structure_size; + struct child_device_config children[DEVICE_CHILD_SIZE]; +} __attribute__((packed)); + struct bdb_lvds_options { uint8_t panel_type; uint8_t rsvd1; @@ -154,6 +253,16 @@ struct bdb_lvds_options { uint8_t rsvd4; } __attribute__((packed)); +/* 915+ only */ +struct bdb_tv_features { + /* need to verify bit ordering */ + uint16_t under_over_scan_via_yprpb:2; + uint16_t rsvd1:10; + uint16_t under_over_scan_via_dvi:2; + uint16_t add_overscan_mode:1; + uint16_t rsvd2:1; +} __attribute__((packed)); + struct lvds_fp_timing { uint16_t x_res; uint16_t y_res; @@ -223,6 +332,40 @@ struct bdb_lvds_lfp_data { struct bdb_lvds_lfp_data_entry data[16]; } __attribute__((packed)); +#define BACKLIGHT_TYPE_NONE 0 +#define BACKLIGHT_TYPE_I2C 1 +#define BACKLIGHT_TYPE_PWM 2 + +#define BACKLIGHT_GMBUS_100KHZ 0 +#define BACKLIGHT_GMBUS_50KHZ 1 +#define BACKLIGHT_GMBUS_400KHZ 2 +#define BACKLIGHT_GMBUS_1MHZ 3 + +struct backlight_info { + uint8_t inverter_type:2; /* see BACKLIGHT_TYPE_* above */ + uint8_t inverter_polarity:1; /* 1 means 0 is max, 255 is min */ + uint8_t gpio_pins:3; /* see GPIO_PIN_* above */ + uint8_t gmbus_speed:2; + uint16_t pwm_frequency; /* in Hz */ + uint8_t min_brightness; + /* Next two are only for 915+ systems */ + uint8_t i2c_addr; + uint8_t i2c_cmd; +} __attribute((packed)); + +struct bdb_backlight_control { + uint8_t row_size; + struct backlight_info lfps[16]; +} __attribute__((packed)); + +struct bdb_bia { + uint8_t bia_enable:1; + uint8_t bia_level:3; + uint8_t rsvd1:3; + uint8_t als_enable:1; + uint8_t als_response_data[20]; +} __attribute((packed)); + struct aimdb_header { char signature[16]; char oem_device[20]; @@ -252,6 +395,183 @@ struct vch_bdb_22 { struct vch_panel_data panels[16]; } __attribute__((packed)); +#define BDB_DRIVER_NO_LVDS 0 +#define BDB_DRIVER_INT_LVDS 1 +#define BDB_DRIVER_SDVO_LVDS 2 +#define BDB_DRIVER_EDP 3 + +struct bdb_driver_feature { + uint8_t boot_dev_algorithm:1; + uint8_t block_display_switch:1; + uint8_t allow_display_switch:1; + uint8_t hotplug_dvo:1; + uint8_t dual_view_zoom:1; + uint8_t int15h_hook:1; + uint8_t sprite_in_clone:1; + uint8_t primary_lfp_id:1; + + uint16_t boot_mode_x; + uint16_t boot_mode_y; + uint8_t boot_mode_bpp; + uint8_t boot_mode_refresh; + + uint16_t enable_lfp_primary:1; + uint16_t selective_mode_pruning:1; + uint16_t dual_frequency:1; + uint16_t render_clock_freq:1; /* 0: high freq; 1: low freq */ + uint16_t nt_clone_support:1; + uint16_t power_scheme_ui:1; /* 0: CUI; 1: 3rd party */ + uint16_t sprite_display_assign:1; /* 0: secondary; 1: primary */ + uint16_t cui_aspect_scaling:1; + uint16_t preserve_aspect_ratio:1; + uint16_t sdvo_device_power_down:1; + uint16_t crt_hotplug:1; + uint16_t lvds_config:2; + uint16_t reserved:3; + + uint8_t static_display:1; + uint8_t reserved2:7; + uint16_t legacy_crt_max_x; + uint16_t legacy_crt_max_y; + uint8_t legacy_crt_max_refresh; +} __attribute__((packed)); + +#ifndef REG_DUMPER int i830_bios_init(ScrnInfoPtr pScrn); +#endif + +/* + * Driver<->VBIOS interaction occurs through scratch bits in + * GR18 & SWF*. + * + * The VBIOS/firmware will signal to the gfx driver through the ASLE interrupt + * (visible in the interupt regs at bit 0) when it wants something done. + * + * Pre-965: + * The gfx driver can make calls to the VBIOS/firmware through an SMI request, + * generated by writing to offset 0xe0 of the device's config space (see the + * publically available 915 PRM for details). + * + * 965 and above: + * IGD OpRegion requests to the VBIOS/firmware are made using SWSCI, which can + * be triggered by writing to offset 0xe4 (see the publically available + * 965 graphics PRM for details). + */ + +/* GR18 bits are set on display switch and hotkey events */ +#define GR18_DRIVER_SWITCH_EN (1<<7) /* 0: VBIOS control, 1: driver control */ +#define GR18_HOTKEY_MASK 0x78 /* See also SWF4 15:0 */ +#define GR18_HK_NONE (0x0<<3) +#define GR18_HK_LFP_STRETCH (0x1<<3) +#define GR18_HK_TOGGLE_DISP (0x2<<3) +#define GR18_HK_DISP_SWITCH (0x4<<3) /* see SWF14 15:0 for what to enable */ +#define GR18_HK_POPUP_DISABLED (0x6<<3) +#define GR18_HK_POPUP_ENABLED (0x7<<3) +#define GR18_HK_PFIT (0x8<<3) +#define GR18_HK_APM_CHANGE (0xa<<3) +#define GR18_HK_MULTIPLE (0xc<<3) +#define GR18_USER_INT_EN (1<<2) +#define GR18_A0000_FLUSH_EN (1<<1) +#define GR18_SMM_EN (1<<0) + +/* Set by driver, cleared by VBIOS */ +#define SWF00_YRES_SHIFT 16 +#define SWF00_XRES_SHIFT 0 +#define SWF00_RES_MASK 0xffff + +/* Set by VBIOS at boot time and driver at runtime */ +#define SWF01_TV2_FORMAT_SHIFT 8 +#define SWF01_TV1_FORMAT_SHIFT 0 +#define SWF01_TV_FORMAT_MASK 0xffff + +#define SWF10_VBIOS_BLC_I2C_EN (1<<29) +#define SWF10_GTT_OVERRIDE_EN (1<<28) +#define SWF10_LFP_DPMS_OVR (1<<27) /* override DPMS on display switch */ +#define SWF10_ACTIVE_TOGGLE_LIST_MASK (7<<24) +#define SWF10_OLD_TOGGLE 0x0 +#define SWF10_TOGGLE_LIST_1 0x1 +#define SWF10_TOGGLE_LIST_2 0x2 +#define SWF10_TOGGLE_LIST_3 0x3 +#define SWF10_TOGGLE_LIST_4 0x4 +#define SWF10_PANNING_EN (1<<23) +#define SWF10_DRIVER_LOADED (1<<22) +#define SWF10_EXTENDED_DESKTOP (1<<21) +#define SWF10_EXCLUSIVE_MODE (1<<20) +#define SWF10_OVERLAY_EN (1<<19) +#define SWF10_PLANEB_HOLDOFF (1<<18) +#define SWF10_PLANEA_HOLDOFF (1<<17) +#define SWF10_VGA_HOLDOFF (1<<16) +#define SWF10_ACTIVE_DISP_MASK 0xffff +#define SWF10_PIPEB_LFP2 (1<<15) +#define SWF10_PIPEB_EFP2 (1<<14) +#define SWF10_PIPEB_TV2 (1<<13) +#define SWF10_PIPEB_CRT2 (1<<12) +#define SWF10_PIPEB_LFP (1<<11) +#define SWF10_PIPEB_EFP (1<<10) +#define SWF10_PIPEB_TV (1<<9) +#define SWF10_PIPEB_CRT (1<<8) +#define SWF10_PIPEA_LFP2 (1<<7) +#define SWF10_PIPEA_EFP2 (1<<6) +#define SWF10_PIPEA_TV2 (1<<5) +#define SWF10_PIPEA_CRT2 (1<<4) +#define SWF10_PIPEA_LFP (1<<3) +#define SWF10_PIPEA_EFP (1<<2) +#define SWF10_PIPEA_TV (1<<1) +#define SWF10_PIPEA_CRT (1<<0) + +#define SWF11_MEMORY_SIZE_SHIFT 16 +#define SWF11_SV_TEST_EN (1<<15) +#define SWF11_IS_AGP (1<<14) +#define SWF11_DISPLAY_HOLDOFF (1<<13) +#define SWF11_DPMS_REDUCED (1<<12) +#define SWF11_IS_VBE_MODE (1<<11) +#define SWF11_PIPEB_ACCESS (1<<10) /* 0 here means pipe a */ +#define SWF11_DPMS_MASK 0x07 +#define SWF11_DPMS_OFF (1<<2) +#define SWF11_DPMS_SUSPEND (1<<1) +#define SWF11_DPMS_STANDBY (1<<0) +#define SWF11_DPMS_ON 0 + +#define SWF14_GFX_PFIT_EN (1<<31) +#define SWF14_TEXT_PFIT_EN (1<<30) +#define SWF14_LID_SWITCH_EN (1<<29) +#define SWF14_POPUP_EN (1<<28) +#define SWF14_DISPLAY_HOLDOFF (1<<27) +#define SWF14_DISP_DETECT_EN (1<<26) +#define SWF14_DOCKING_STATUS_DOCKED (1<<25) /* 0 here means undocked */ +#define SWF14_DRIVER_STATUS (1<<24) +#define SWF14_OS_TYPE_WIN9X (1<<23) +#define SWF14_OS_TYPE_WINNT (1<<22) +/* 21:19 rsvd */ +#define SWF14_PM_TYPE_MASK 0x00070000 +#define SWF14_PM_ACPI_VIDEO (0x4 << 16) +#define SWF14_PM_ACPI (0x3 << 16) +#define SWF14_PM_APM_12 (0x2 << 16) +#define SWF14_PM_APM_11 (0x1 << 16) +#define SWF14_HK_REQUEST_MASK 0x0000ffff /* see GR18 6:3 for event type */ + /* if GR18 indicates a display switch */ +#define SWF14_DS_PIPEB_LFP2_EN (1<<15) +#define SWF14_DS_PIPEB_EFP2_EN (1<<14) +#define SWF14_DS_PIPEB_TV2_EN (1<<13) +#define SWF14_DS_PIPEB_CRT2_EN (1<<12) +#define SWF14_DS_PIPEB_LFP_EN (1<<11) +#define SWF14_DS_PIPEB_EFP_EN (1<<10) +#define SWF14_DS_PIPEB_TV_EN (1<<9) +#define SWF14_DS_PIPEB_CRT_EN (1<<8) +#define SWF14_DS_PIPEA_LFP2_EN (1<<7) +#define SWF14_DS_PIPEA_EFP2_EN (1<<6) +#define SWF14_DS_PIPEA_TV2_EN (1<<5) +#define SWF14_DS_PIPEA_CRT2_EN (1<<4) +#define SWF14_DS_PIPEA_LFP_EN (1<<3) +#define SWF14_DS_PIPEA_EFP_EN (1<<2) +#define SWF14_DS_PIPEA_TV_EN (1<<1) +#define SWF14_DS_PIPEA_CRT_EN (1<<0) + /* if GR18 indicates a panel fitting request */ +#define SWF14_PFIT_EN (1<<0) /* 0 means disable */ + /* if GR18 indicates an APM change request */ +#define SWF14_APM_HIBERNATE 0x4 +#define SWF14_APM_SUSPEND 0x3 +#define SWF14_APM_STANDBY 0x1 +#define SWF14_APM_RESTORE 0x0 #endif /* _I830_BIOS_H_ */ diff --git a/driver/xf86-video-intel/src/i830_common.h b/driver/xf86-video-intel/src/i830_common.h index 79455b616..eeb2ed762 100644 --- a/driver/xf86-video-intel/src/i830_common.h +++ b/driver/xf86-video-intel/src/i830_common.h @@ -31,6 +31,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #ifndef _I830_COMMON_H_ #define _I830_COMMON_H_ +#include <stdint.h> #define I830_NR_TEX_REGIONS 255 /* maximum due to use of chars for next/prev */ #define I830_LOG_MIN_TEX_REGION_SIZE 14 @@ -54,6 +55,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #define DRM_I830_DESTROY_HEAP 0x0c #define DRM_I830_SET_VBLANK_PIPE 0x0d #define DRM_I830_GET_VBLANK_PIPE 0x0e +#define DRM_I830_HWS_PAGE_ADDR 0x11 typedef struct { @@ -72,7 +74,7 @@ typedef struct { unsigned int depth_offset; unsigned int w; unsigned int h; - unsigned int pitch; + unsigned int pitch; /* Pitch of front buffer in units of pixels */ unsigned int pitch_bits; unsigned int back_pitch; unsigned int depth_pitch; @@ -130,6 +132,21 @@ typedef struct { int pipeB_y; int pipeB_w; int pipeB_h; + + /* Triple buffering */ + drm_handle_t third_handle; + int third_offset; + int third_size; + unsigned int third_tiled; + + /* buffer object handles for the static buffers. May change + * over the lifetime of the client, though it doesn't in our current + * implementation. + */ + unsigned int front_bo_handle; + unsigned int back_bo_handle; + unsigned int third_bo_handle; + unsigned int depth_bo_handle; } drmI830Sarea; /* Flags for perf_boxes @@ -218,4 +235,8 @@ typedef struct { int pipe; } drmI830VBlankPipe; +typedef struct { + uint64_t addr; +} drmI830HWS; + #endif /* _I830_DRM_H_ */ diff --git a/driver/xf86-video-intel/src/i830_crt.c b/driver/xf86-video-intel/src/i830_crt.c index 8274c0cc3..d8e4a7664 100644 --- a/driver/xf86-video-intel/src/i830_crt.c +++ b/driver/xf86-video-intel/src/i830_crt.c @@ -84,11 +84,23 @@ i830_crt_restore (xf86OutputPtr output) static int i830_crt_mode_valid(xf86OutputPtr output, DisplayModePtr pMode) { + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + int maxclock; + if (pMode->Flags & V_DBLSCAN) return MODE_NO_DBLESCAN; - if (pMode->Clock > 400000 || pMode->Clock < 25000) - return MODE_CLOCK_RANGE; + if (pMode->Clock < 25000) + return MODE_CLOCK_LOW; + + if (!IS_I9XX(pI830)) + maxclock = 350000; + else + maxclock = 400000; + + if (pMode->Clock > maxclock) + return MODE_CLOCK_HIGH; return MODE_OK; } @@ -158,28 +170,55 @@ i830_crt_detect_hotplug(xf86OutputPtr output) { ScrnInfoPtr pScrn = output->scrn; I830Ptr pI830 = I830PTR(pScrn); - uint32_t temp; + uint32_t hotplug_en, temp; const int timeout_ms = 1000; int starttime, curtime; + int tries = 1; + int try; - temp = INREG(PORT_HOTPLUG_EN); + /* On 4 series desktop, CRT detect sequence need to be done twice + * to get a reliable result. */ + if (IS_G4X(pI830) && !IS_GM45(pI830)) + tries = 2; + else + tries = 1; - OUTREG(PORT_HOTPLUG_EN, temp | CRT_HOTPLUG_FORCE_DETECT | (1 << 5)); + hotplug_en = INREG(PORT_HOTPLUG_EN); - for (curtime = starttime = GetTimeInMillis(); - (curtime - starttime) < timeout_ms; curtime = GetTimeInMillis()) - { - if ((INREG(PORT_HOTPLUG_EN) & CRT_HOTPLUG_FORCE_DETECT) == 0) - break; - } + hotplug_en &= ~CRT_HOTPLUG_MASK; - if ((INREG(PORT_HOTPLUG_STAT) & CRT_HOTPLUG_MONITOR_MASK) == - CRT_HOTPLUG_MONITOR_COLOR) - { - return TRUE; - } else { - return FALSE; + /* This starts the detection sequence */ + hotplug_en |= CRT_HOTPLUG_FORCE_DETECT; + + /* GM45 requires a longer activation period to reliably + * detect CRT + */ + if (IS_GM45(pI830)) + hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64; + + /* Use the default voltage value */ + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; + + for (try = 0; try < tries; try++) { + /* turn FORCE_DETECT on */ + OUTREG(PORT_HOTPLUG_EN, hotplug_en); + + /* wait for FORCE_DETECT to go off */ + for (curtime = starttime = GetTimeInMillis(); + (curtime - starttime) < timeout_ms; + curtime = GetTimeInMillis()) + { + temp = INREG(PORT_HOTPLUG_EN); + + if ((temp & CRT_HOTPLUG_FORCE_DETECT) == 0) + break; + } } + + /* Check the status to see if both blue and green are on now */ + temp = INREG(PORT_HOTPLUG_STAT); + return ((temp & CRT_HOTPLUG_MONITOR_MASK) == + CRT_HOTPLUG_MONITOR_COLOR); } /** @@ -327,13 +366,19 @@ i830_crt_detect_load (xf86CrtcPtr crtc, static Bool i830_crt_detect_ddc(xf86OutputPtr output) { + ScrnInfoPtr pScrn = output->scrn; I830OutputPrivatePtr i830_output = output->driver_private; + Bool detect; /* CRT should always be at 0, but check anyway */ if (i830_output->type != I830_OUTPUT_ANALOG) return FALSE; - return xf86I2CProbeAddress(i830_output->pDDCBus, 0x00A0); + I830I2CInit(pScrn, &i830_output->pDDCBus, GPIOA, "CRTDDC_A"); + detect = xf86I2CProbeAddress(i830_output->pDDCBus, 0x00A0); + xf86DestroyI2CBusRec(i830_output->pDDCBus, TRUE, TRUE); + + return detect; } /** @@ -410,6 +455,56 @@ i830_crt_get_crtc(xf86OutputPtr output) } #endif +static xf86MonPtr +i830_get_edid(xf86OutputPtr output, int gpio_reg, char *gpio_str) +{ + I830OutputPrivatePtr intel_output = output->driver_private; + xf86MonPtr edid_mon = NULL; + + /* Set up the DDC bus. */ + I830I2CInit(output->scrn, &intel_output->pDDCBus, gpio_reg, gpio_str); + + edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus); + + if (!edid_mon || DIGITAL(edid_mon->features.input_type)) { + xf86DestroyI2CBusRec(intel_output->pDDCBus, TRUE, TRUE); + intel_output->pDDCBus = NULL; + if (edid_mon) { + xfree(edid_mon); + edid_mon = NULL; + } + } + + return edid_mon; +} + +static DisplayModePtr +i830_crt_get_modes (xf86OutputPtr output) +{ + DisplayModePtr modes; + xf86MonPtr edid_mon = NULL; + I830OutputPrivatePtr intel_output = output->driver_private; + + /* Try to probe normal CRT port, and also digital port for output + in DVI-I mode. */ + if ((edid_mon = i830_get_edid(output, GPIOA, "CRTDDC_A"))) + goto found; + if ((edid_mon = i830_get_edid(output, GPIOD, "CRTDDC_D"))) + goto found; + if ((edid_mon = i830_get_edid(output, GPIOE, "CRTDDC_E"))) + goto found; +found: + /* Destroy DDC bus after probe, so every other new probe will + scan all ports again */ + if (intel_output->pDDCBus) + xf86DestroyI2CBusRec(intel_output->pDDCBus, TRUE, TRUE); + + xf86OutputSetEDID (output, edid_mon); + + modes = xf86OutputGetEDIDModes (output); + return modes; +} + static const xf86OutputFuncsRec i830_crt_output_funcs = { .dpms = i830_crt_dpms, .save = i830_crt_save, @@ -420,7 +515,7 @@ static const xf86OutputFuncsRec i830_crt_output_funcs = { .mode_set = i830_crt_mode_set, .commit = i830_output_commit, .detect = i830_crt_detect, - .get_modes = i830_ddc_get_modes, + .get_modes = i830_crt_get_modes, .destroy = i830_crt_destroy, #ifdef RANDR_GET_CRTC_INTERFACE .get_crtc = i830_crt_get_crtc, @@ -434,6 +529,9 @@ i830_crt_init(ScrnInfoPtr pScrn) I830OutputPrivatePtr i830_output; I830Ptr pI830 = I830PTR(pScrn); + if (pI830->quirk_flag & QUIRK_IGNORE_CRT) + return; + output = xf86OutputCreate (pScrn, &i830_crt_output_funcs, "VGA"); if (!output) return; @@ -455,7 +553,4 @@ i830_crt_init(ScrnInfoPtr pScrn) output->driver_private = i830_output; output->interlaceAllowed = FALSE; output->doubleScanAllowed = FALSE; - - /* Set up the DDC bus. */ - I830I2CInit(pScrn, &i830_output->pDDCBus, GPIOA, "CRTDDC_A"); } diff --git a/driver/xf86-video-intel/src/i830_debug.c b/driver/xf86-video-intel/src/i830_debug.c index a7f168356..ed8843e51 100644 --- a/driver/xf86-video-intel/src/i830_debug.c +++ b/driver/xf86-video-intel/src/i830_debug.c @@ -48,6 +48,32 @@ #define DEBUGSTRING(func) static char *func(I830Ptr pI830, int reg, \ uint32_t val) +DEBUGSTRING(i830_16bit_func) +{ + return XNFprintf("0x%04x", (uint16_t)val); +} + +DEBUGSTRING(i830_debug_chdecmisc) +{ + char *enhmodesel = NULL; + + switch ((val >> 5) & 3) { + case 1: enhmodesel = "XOR bank/rank"; break; + case 2: enhmodesel = "swap bank"; break; + case 3: enhmodesel = "XOR bank"; break; + case 0: enhmodesel = "none"; break; + } + + return XNFprintf("%s, ch2 enh %sabled, ch1 enh %sabled, ch0 enh %sabled, " + "flex %sabled, ep %spresent", + enhmodesel, + (val & (1 << 4)) ? "en" : "dis", + (val & (1 << 3)) ? "en" : "dis", + (val & (1 << 2)) ? "en" : "dis", + (val & (1 << 1)) ? "en" : "dis", + (val & (1 << 0)) ? "" : "not "); +} + DEBUGSTRING(i830_debug_xyminus1) { return XNFprintf("%d, %d", (val & 0xffff) + 1, @@ -163,6 +189,12 @@ DEBUGSTRING(i830_debug_vgacntrl) DEBUGSTRING(i830_debug_fp) { + if (IS_IGD(pI830)) { + return XNFprintf("n = %d, m1 = %d, m2 = %d", + ffs((val & FP_N_IGD_DIV_MASK) >> FP_N_DIV_SHIFT) - 1, + ((val & FP_M1_DIV_MASK) >> FP_M1_DIV_SHIFT), + ((val & FP_M2_IGD_DIV_MASK) >> FP_M2_DIV_SHIFT)); + } return XNFprintf("n = %d, m1 = %d, m2 = %d", ((val & FP_N_DIV_MASK) >> FP_N_DIV_SHIFT), ((val & FP_M1_DIV_MASK) >> FP_M1_DIV_SHIFT), @@ -230,8 +262,13 @@ DEBUGSTRING(i830_debug_dpll) int p1, p2 = 0; if (IS_I9XX(pI830)) { - p1 = ffs((val & DPLL_FPA01_P1_POST_DIV_MASK) >> - DPLL_FPA01_P1_POST_DIV_SHIFT); + if (IS_IGD(pI830)) { + p1 = ffs((val & DPLL_FPA01_P1_POST_DIV_MASK_IGD) >> + DPLL_FPA01_P1_POST_DIV_SHIFT_IGD); + } else { + p1 = ffs((val & DPLL_FPA01_P1_POST_DIV_MASK) >> + DPLL_FPA01_P1_POST_DIV_SHIFT); + } switch (val & DPLL_MODE_MASK) { case DPLLB_MODE_DAC_SERIAL: mode = "DAC/serial"; @@ -466,21 +503,29 @@ DEBUGSTRING(i830_debug_dspclk_gate_d) OVLUNIT); } -#if 0 -DEBUGSTRING(i810_debug_fence_new) +#if 1 +DEBUGSTRING(i810_debug_fence_start) { - char *enable = (val & FENCE_VALID) ? "enabled" : "disabled"; + char *enable = (val & FENCE_VALID) ? " enabled" : "disabled"; char format = (val & I965_FENCE_Y_MAJOR) ? 'Y' : 'X'; int pitch = ((val & 0xffc) >> 2) * 128; unsigned int offset = val & 0xfffff000; - return XNFprintf("%s, %c tile walk, %d pitch, 0x%08x offset", + return XNFprintf("%s, %c tile walk, %4d pitch, 0x%08x start", enable, format, pitch, offset); } +DEBUGSTRING(i810_debug_fence_end) +{ + unsigned int end = val & 0xfffff000; + + return XNFprintf(" 0x%08x end", end); +} #endif #define DEFINEREG(reg) \ { reg, #reg, NULL, 0 } +#define DEFINEREG_16BIT(reg) \ + { reg, #reg, i830_16bit_func, 0 } #define DEFINEREG2(reg, func) \ { reg, #reg, func, 0 } @@ -490,6 +535,20 @@ static struct i830SnapshotRec { char *(*debug_output)(I830Ptr pI830, int reg, uint32_t val); uint32_t val; } i830_snapshot[] = { + DEFINEREG2(CHDECMISC, i830_debug_chdecmisc), + DEFINEREG_16BIT(C0DRB0), + DEFINEREG_16BIT(C0DRB1), + DEFINEREG_16BIT(C0DRB2), + DEFINEREG_16BIT(C0DRB3), + DEFINEREG_16BIT(C1DRB0), + DEFINEREG_16BIT(C1DRB1), + DEFINEREG_16BIT(C1DRB2), + DEFINEREG_16BIT(C1DRB3), + DEFINEREG_16BIT(C0DRA01), + DEFINEREG_16BIT(C0DRA23), + DEFINEREG_16BIT(C1DRA01), + DEFINEREG_16BIT(C1DRA23), + DEFINEREG2(VCLK_DIVISOR_VGA0, i830_debug_fp), DEFINEREG2(VCLK_DIVISOR_VGA1, i830_debug_fp), DEFINEREG2(VCLK_POST_DIV, i830_debug_vga_pd), @@ -521,6 +580,9 @@ static struct i830SnapshotRec { DEFINEREG2(PP_CONTROL, i830_debug_pp_control), DEFINEREG2(PP_STATUS, i830_debug_pp_status), + DEFINEREG(PP_ON_DELAYS), + DEFINEREG(PP_OFF_DELAYS), + DEFINEREG(PP_DIVISOR), DEFINEREG(PFIT_CONTROL), DEFINEREG(PFIT_PGM_RATIOS), DEFINEREG(PORT_HOTPLUG_EN), @@ -653,23 +715,26 @@ static struct i830SnapshotRec { DEFINEREG(DPD_AUX_CH_DATA4), DEFINEREG(DPD_AUX_CH_DATA5), -#if 0 - DEFINEREG2(FENCE_NEW + 0, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 8, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 16, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 24, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 32, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 40, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 48, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 56, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 64, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 72, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 80, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 88, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 96, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 104, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 112, i810_debug_fence_new), - DEFINEREG2(FENCE_NEW + 120, i810_debug_fence_new), +#define DEFINEFENCE(i) \ + { FENCE_NEW+i*8, "FENCE START " #i, i810_debug_fence_start, 0 }, \ + { FENCE_NEW+i*8+4, "FENCE END " #i, i810_debug_fence_end, 0 } +#if 1 + DEFINEFENCE(0), + DEFINEFENCE(1), + DEFINEFENCE(2), + DEFINEFENCE(3), + DEFINEFENCE(4), + DEFINEFENCE(5), + DEFINEFENCE(6), + DEFINEFENCE(7), + DEFINEFENCE(8), + DEFINEFENCE(9), + DEFINEFENCE(10), + DEFINEFENCE(11), + DEFINEFENCE(12), + DEFINEFENCE(13), + DEFINEFENCE(14), + DEFINEFENCE(15), #endif }; #undef DEFINEREG @@ -839,7 +904,11 @@ void i830DumpRegs (ScrnInfoPtr pScrn) break; } } - switch ((dpll >> 16) & 0xff) { + if (IS_IGD(pI830)) + i = (dpll >> DPLL_FPA01_P1_POST_DIV_SHIFT_IGD) & 0x1ff; + else + i = (dpll >> DPLL_FPA01_P1_POST_DIV_SHIFT) & 0xff; + switch (i) { case 1: p1 = 1; break; case 2: @@ -856,6 +925,11 @@ void i830DumpRegs (ScrnInfoPtr pScrn) p1 = 7; break; case 128: p1 = 8; break; + case 256: + if (IS_IGD(pI830)) { + p1 = 9; + break; + } /* fallback */ default: p1 = 1; xf86DrvMsg (pScrn->scrnIndex, X_WARNING, "p1 out of range\n"); @@ -945,11 +1019,19 @@ void i830DumpRegs (ScrnInfoPtr pScrn) "fp select out of range\n"); break; } - n = ((fp >> 16) & 0x3f); m1 = ((fp >> 8) & 0x3f); - m2 = ((fp >> 0) & 0x3f); - m = 5 * (m1 + 2) + (m2 + 2); - dot = (ref * (5 * (m1 + 2) + (m2 + 2)) / (n + 2)) / (p1 * p2); + if (IS_IGD(pI830)) { + n = ffs((fp & FP_N_IGD_DIV_MASK) >> FP_N_DIV_SHIFT) - 1; + m2 = (fp & FP_M2_IGD_DIV_MASK) >> FP_M2_DIV_SHIFT; + m = m2 + 2; + dot = (ref * m) / n / (p1 * p2); + } else { + n = ((fp >> 16) & 0x3f); + m2 = ((fp >> 0) & 0x3f); + m = 5 * (m1 + 2) + (m2 + 2); + dot = (ref * (5 * (m1 + 2) + (m2 + 2)) / (n + 2)) / (p1 * p2); + } + xf86DrvMsg (pScrn->scrnIndex, X_INFO, "pipe %s dot %d n %d m1 %d m2 %d p1 %d p2 %d\n", pipe == 0 ? "A" : "B", dot, n, m1, m2, p1, p2); } @@ -1314,6 +1396,8 @@ i830_valid_command (uint32_t cmd) if (!mi_cmds[opcode]) return -1; break; + case 1: + return -1; case 2: /* 2D */ count = (cmd & 0x1f) + 2; opcode = (cmd >> 22) & 0x7f; @@ -1397,9 +1481,9 @@ i830_valid_chain (ScrnInfoPtr pScrn, unsigned int ring, unsigned int end) head = (INREG (LP_RING + RING_HEAD)) & I830_HEAD_MASK; tail = INREG (LP_RING + RING_TAIL) & I830_TAIL_MASK; - mask = pI830->LpRing->tail_mask; + mask = pI830->ring.tail_mask; - virt = pI830->LpRing->virtual_start; + virt = pI830->ring.virtual_start; ErrorF ("Ring at virtual %p head 0x%x tail 0x%x count %d\n", virt, head, tail, (((tail + mask + 1) - head) & mask) >> 2); @@ -1471,13 +1555,12 @@ i830_dump_cmds (ScrnInfoPtr pScrn, /* check for MI_BATCH_BUFFER_START */ if ((data & batch_start_mask) == batch_start_cmd) { - uint32_t batch = ptr[1]; + uint32_t batch = ptr[1] & ~3; if (batch < pI830->FbMapSize) { ErrorF ("\t%08x: %08x\n", (ring + 4) & mask, batch); ErrorF ("Batch buffer at 0x%08x {\n", batch); i830_dump_cmds (pScrn, pI830->FbBase, batch, - pI830->FbMapSize - batch, - 0xffffffff, acthd); + batch + 256, 0xffffffff, acthd); ErrorF ("}\n"); ring = (ring + (count - 1) * 4) & mask; } @@ -1498,11 +1581,11 @@ i830_dump_ring(ScrnInfoPtr pScrn, uint32_t acthd) head = (INREG (LP_RING + RING_HEAD)) & I830_HEAD_MASK; tail = INREG (LP_RING + RING_TAIL) & I830_TAIL_MASK; - mask = pI830->LpRing->tail_mask; + mask = pI830->ring.tail_mask; - virt = pI830->LpRing->virtual_start; - ErrorF ("Ring at virtual %p head 0x%x tail 0x%x count %d\n", - virt, head, tail, (((tail + mask + 1) - head) & mask) >> 2); + virt = pI830->ring.virtual_start; + ErrorF ("Ring at virtual %p head 0x%x tail 0x%x count %d acthd 0x%x\n", + virt, head, tail, (((tail + mask + 1) - head) & mask) >> 2, acthd); /* walk back by instructions */ for (cmd = (head - 256) & mask; @@ -1547,7 +1630,7 @@ i830_dump_error_state(ScrnInfoPtr pScrn) ErrorF("hwstam: 0x%04x ier: 0x%04x imr: 0x%04x iir: 0x%04x\n", INREG16(HWSTAM), INREG16(IER), INREG16(IMR), INREG16(IIR)); - i830_dump_ring (pScrn, 0); + i830_dump_ring (pScrn, INREG(ACTHD)); } void @@ -1584,7 +1667,7 @@ i965_dump_error_state(ScrnInfoPtr pScrn) "imr: 0x%08x iir: 0x%08x\n", INREG(HWSTAM), INREG(IER), INREG(IMR), INREG(IIR)); - acthd = INREG(ACTHD); + acthd = INREG(ACTHD_I965); ErrorF("acthd: 0x%08x dma_fadd_p: 0x%08x\n", acthd, INREG(DMA_FADD_P)); ErrorF("ecoskpd: 0x%08x excc: 0x%08x\n", @@ -1646,8 +1729,6 @@ i830_check_error_state(ScrnInfoPtr pScrn) int errors = 0; unsigned long temp, head, tail; - if (!I830IsPrimary(pScrn)) return TRUE; - temp = INREG16(ESR); if (temp != 0) { Bool vertex_max = !IS_I965G(pI830) && (temp & ERR_VERTEX_MAX); @@ -1716,7 +1797,7 @@ i830_check_error_state(ScrnInfoPtr pScrn) errors++; } temp = INREG(LP_RING + RING_LEN); - if (temp & 1) { + if (!pI830->memory_manager && (temp & 1)) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "PRB0_CTL (0x%08lx) indicates ring buffer enabled\n", temp); errors++; diff --git a/driver/xf86-video-intel/src/i830_display.c b/driver/xf86-video-intel/src/i830_display.c index 66990c2a5..dd1310fad 100644 --- a/driver/xf86-video-intel/src/i830_display.c +++ b/driver/xf86-video-intel/src/i830_display.c @@ -67,10 +67,13 @@ typedef struct { #define INTEL_P2_NUM 2 -typedef struct { +typedef struct intel_limit intel_limit_t; +struct intel_limit { intel_range_t dot, vco, n, m, m1, m2, p, p1; intel_p2_t p2; -} intel_limit_t; + Bool (* find_pll)(const intel_limit_t *, xf86CrtcPtr, + int, int, intel_clock_t *); +}; #define I8XX_DOT_MIN 25000 #define I8XX_DOT_MAX 350000 @@ -100,6 +103,8 @@ typedef struct { #define I9XX_DOT_MAX 400000 #define I9XX_VCO_MIN 1400000 #define I9XX_VCO_MAX 2800000 +#define IGD_VCO_MIN 1700000 +#define IGD_VCO_MAX 3500000 /* Haven't found any reason to go this fast, but newer chips support it */ #define I96X_VCO_MAX 3200000 @@ -111,19 +116,31 @@ typedef struct { */ #define I9XX_N_MIN 1 #define I9XX_N_MAX 6 +/* IGD's Ncounter is a ring counter */ +#define IGD_N_MIN 3 +#define IGD_N_MAX 6 #define I9XX_M_MIN 70 #define I9XX_M_MAX 120 +#define IGD_M_MIN 2 +#define IGD_M_MAX 256 /* these two come from the calm1 macro */ #define I9XX_M1_MIN 10 #define I9XX_M1_MAX 22 #define I9XX_M2_MIN 5 #define I9XX_M2_MAX 9 +/* IGD M1 is reserved, and must be 0 */ +#define IGD_M1_MIN 0 +#define IGD_M1_MAX 0 +#define IGD_M2_MIN 0 +#define IGD_M2_MAX 254 #define I9XX_P_SDVO_DAC_MIN 5 #define I9XX_P_SDVO_DAC_MAX 80 #define I9XX_P_LVDS_MIN 7 #define I9XX_P_LVDS_MAX 98 +#define IGD_P_LVDS_MIN 7 +#define IGD_P_LVDS_MAX 112 #define I9XX_P1_MIN 1 #define I9XX_P1_MAX 8 #define I9XX_P2_SDVO_DAC_SLOW 10 @@ -137,6 +154,97 @@ typedef struct { #define INTEL_LIMIT_I8XX_LVDS 1 #define INTEL_LIMIT_I9XX_SDVO_DAC 2 #define INTEL_LIMIT_I9XX_LVDS 3 +#define INTEL_LIMIT_IGD_SDVO_DAC 4 +#define INTEL_LIMIT_IGD_LVDS 5 +#define INTEL_LIMIT_G4X_SDVO 6 +#define INTEL_LIMIT_G4X_HDMI_DAC 7 +#define INTEL_LIMIT_G4X_SINGLE_LVDS 8 +#define INTEL_LIMIT_G4X_DUAL_LVDS 9 + +/*The parameter is for SDVO on G4x platform*/ +#define G4X_VCO_MIN 1750000 +#define G4X_VCO_MAX 3500000 +#define G4X_DOT_SDVO_MIN 25000 +#define G4X_DOT_SDVO_MAX 270000 +#define G4X_N_SDVO_MIN 1 +#define G4X_N_SDVO_MAX 4 +#define G4X_M_SDVO_MIN 104 +#define G4X_M_SDVO_MAX 138 +#define G4X_M1_SDVO_MIN 17 +#define G4X_M1_SDVO_MAX 23 +#define G4X_M2_SDVO_MIN 5 +#define G4X_M2_SDVO_MAX 11 +#define G4X_P_SDVO_MIN 10 +#define G4X_P_SDVO_MAX 30 +#define G4X_P1_SDVO_MIN 1 +#define G4X_P1_SDVO_MAX 3 +#define G4X_P2_SDVO_SLOW 10 +#define G4X_P2_SDVO_FAST 10 +#define G4X_P2_SDVO_LIMIT 270000 + +/*The parameter is for HDMI_DAC on G4x platform*/ +#define G4X_DOT_HDMI_DAC_MIN 22000 +#define G4X_DOT_HDMI_DAC_MAX 400000 +#define G4X_N_HDMI_DAC_MIN 1 +#define G4X_N_HDMI_DAC_MAX 4 +#define G4X_M_HDMI_DAC_MIN 104 +#define G4X_M_HDMI_DAC_MAX 138 +#define G4X_M1_HDMI_DAC_MIN 16 +#define G4X_M1_HDMI_DAC_MAX 23 +#define G4X_M2_HDMI_DAC_MIN 5 +#define G4X_M2_HDMI_DAC_MAX 11 +#define G4X_P_HDMI_DAC_MIN 5 +#define G4X_P_HDMI_DAC_MAX 80 +#define G4X_P1_HDMI_DAC_MIN 1 +#define G4X_P1_HDMI_DAC_MAX 8 +#define G4X_P2_HDMI_DAC_SLOW 10 +#define G4X_P2_HDMI_DAC_FAST 5 +#define G4X_P2_HDMI_DAC_LIMIT 165000 + +/*The parameter is for SINGLE_LVDS on G4x platform*/ +#define G4X_DOT_SINGLE_LVDS_MIN 20000 +#define G4X_DOT_SINGLE_LVDS_MAX 115000 +#define G4X_N_SINGLE_LVDS_MIN 1 +#define G4X_N_SINGLE_LVDS_MAX 3 +#define G4X_M_SINGLE_LVDS_MIN 104 +#define G4X_M_SINGLE_LVDS_MAX 138 +#define G4X_M1_SINGLE_LVDS_MIN 17 +#define G4X_M1_SINGLE_LVDS_MAX 23 +#define G4X_M2_SINGLE_LVDS_MIN 5 +#define G4X_M2_SINGLE_LVDS_MAX 11 +#define G4X_P_SINGLE_LVDS_MIN 28 +#define G4X_P_SINGLE_LVDS_MAX 112 +#define G4X_P1_SINGLE_LVDS_MIN 2 +#define G4X_P1_SINGLE_LVDS_MAX 8 +#define G4X_P2_SINGLE_LVDS_SLOW 14 +#define G4X_P2_SINGLE_LVDS_FAST 14 +#define G4X_P2_SINGLE_LVDS_LIMIT 0 + +/*The parameter is for DUAL_LVDS on G4x platform*/ +#define G4X_DOT_DUAL_LVDS_MIN 80000 +#define G4X_DOT_DUAL_LVDS_MAX 224000 +#define G4X_N_DUAL_LVDS_MIN 1 +#define G4X_N_DUAL_LVDS_MAX 3 +#define G4X_M_DUAL_LVDS_MIN 104 +#define G4X_M_DUAL_LVDS_MAX 138 +#define G4X_M1_DUAL_LVDS_MIN 17 +#define G4X_M1_DUAL_LVDS_MAX 23 +#define G4X_M2_DUAL_LVDS_MIN 5 +#define G4X_M2_DUAL_LVDS_MAX 11 +#define G4X_P_DUAL_LVDS_MIN 14 +#define G4X_P_DUAL_LVDS_MAX 42 +#define G4X_P1_DUAL_LVDS_MIN 2 +#define G4X_P1_DUAL_LVDS_MAX 6 +#define G4X_P2_DUAL_LVDS_SLOW 7 +#define G4X_P2_DUAL_LVDS_FAST 7 +#define G4X_P2_DUAL_LVDS_LIMIT 0 + +static Bool +intel_find_pll_i8xx_and_i9xx(const intel_limit_t *, xf86CrtcPtr, + int, int, intel_clock_t *); +static Bool +intel_find_pll_g4x(const intel_limit_t *, xf86CrtcPtr, + int, int, intel_clock_t *); static const intel_limit_t intel_limits[] = { { /* INTEL_LIMIT_I8XX_DVO_DAC */ @@ -150,6 +258,7 @@ static const intel_limit_t intel_limits[] = { .p1 = { .min = I8XX_P1_MIN, .max = I8XX_P1_MAX }, .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT, .p2_slow = I8XX_P2_SLOW, .p2_fast = I8XX_P2_FAST }, + .find_pll = intel_find_pll_i8xx_and_i9xx, }, { /* INTEL_LIMIT_I8XX_LVDS */ .dot = { .min = I8XX_DOT_MIN, .max = I8XX_DOT_MAX }, @@ -162,6 +271,7 @@ static const intel_limit_t intel_limits[] = { .p1 = { .min = I8XX_P1_LVDS_MIN, .max = I8XX_P1_LVDS_MAX }, .p2 = { .dot_limit = I8XX_P2_SLOW_LIMIT, .p2_slow = I8XX_P2_LVDS_SLOW, .p2_fast = I8XX_P2_LVDS_FAST }, + .find_pll = intel_find_pll_i8xx_and_i9xx, }, { /* INTEL_LIMIT_I9XX_SDVO_DAC */ .dot = { .min = I9XX_DOT_MIN, .max = I9XX_DOT_MAX }, @@ -174,6 +284,7 @@ static const intel_limit_t intel_limits[] = { .p1 = { .min = I9XX_P1_MIN, .max = I9XX_P1_MAX }, .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT, .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST }, + .find_pll = intel_find_pll_i8xx_and_i9xx, }, { /* INTEL_LIMIT_I9XX_LVDS */ .dot = { .min = I9XX_DOT_MIN, .max = I9XX_DOT_MAX }, @@ -189,20 +300,150 @@ static const intel_limit_t intel_limits[] = { */ .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT, .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_FAST }, + .find_pll = intel_find_pll_i8xx_and_i9xx, + }, + { /* INTEL_LIMIT_IGD_SDVO */ + .dot = { .min = I9XX_DOT_MIN, .max = I9XX_DOT_MAX}, + .vco = { .min = IGD_VCO_MIN, .max = IGD_VCO_MAX }, + .n = { .min = IGD_N_MIN, .max = IGD_N_MAX }, + .m = { .min = IGD_M_MIN, .max = IGD_M_MAX }, + .m1 = { .min = IGD_M1_MIN, .max = IGD_M1_MAX }, + .m2 = { .min = IGD_M2_MIN, .max = IGD_M2_MAX }, + .p = { .min = I9XX_P_SDVO_DAC_MIN, .max = I9XX_P_SDVO_DAC_MAX }, + .p1 = { .min = I9XX_P1_MIN, .max = I9XX_P1_MAX }, + .p2 = { .dot_limit = I9XX_P2_SDVO_DAC_SLOW_LIMIT, + .p2_slow = I9XX_P2_SDVO_DAC_SLOW, .p2_fast = I9XX_P2_SDVO_DAC_FAST }, + .find_pll = intel_find_pll_i8xx_and_i9xx, + }, + { /* INTEL_LIMIT_IGD_LVDS */ + .dot = { .min = I9XX_DOT_MIN, .max = I9XX_DOT_MAX }, + .vco = { .min = IGD_VCO_MIN, .max = IGD_VCO_MAX }, + .n = { .min = IGD_N_MIN, .max = IGD_N_MAX }, + .m = { .min = IGD_M_MIN, .max = IGD_M_MAX }, + .m1 = { .min = IGD_M1_MIN, .max = IGD_M1_MAX }, + .m2 = { .min = IGD_M2_MIN, .max = IGD_M2_MAX }, + .p = { .min = IGD_P_LVDS_MIN, .max = IGD_P_LVDS_MAX }, + .p1 = { .min = I9XX_P1_MIN, .max = I9XX_P1_MAX }, + /* IGD only supports single-channel mode. */ + .p2 = { .dot_limit = I9XX_P2_LVDS_SLOW_LIMIT, + .p2_slow = I9XX_P2_LVDS_SLOW, .p2_fast = I9XX_P2_LVDS_SLOW }, + .find_pll = intel_find_pll_i8xx_and_i9xx, + }, + /* below parameter and function is for G4X Chipset Family*/ + { /* INTEL_LIMIT_G4X_SDVO */ + .dot = { .min = G4X_DOT_SDVO_MIN, .max = G4X_DOT_SDVO_MAX }, + .vco = { .min = G4X_VCO_MIN, .max = G4X_VCO_MAX}, + .n = { .min = G4X_N_SDVO_MIN, .max = G4X_N_SDVO_MAX }, + .m = { .min = G4X_M_SDVO_MIN, .max = G4X_M_SDVO_MAX }, + .m1 = { .min = G4X_M1_SDVO_MIN, .max = G4X_M1_SDVO_MAX }, + .m2 = { .min = G4X_M2_SDVO_MIN, .max = G4X_M2_SDVO_MAX }, + .p = { .min = G4X_P_SDVO_MIN, .max = G4X_P_SDVO_MAX }, + .p1 = { .min = G4X_P1_SDVO_MIN, .max = G4X_P1_SDVO_MAX}, + .p2 = { .dot_limit = G4X_P2_SDVO_LIMIT, + .p2_slow = G4X_P2_SDVO_SLOW, + .p2_fast = G4X_P2_SDVO_FAST }, + .find_pll = intel_find_pll_g4x, + }, + { /* INTEL_LIMIT_G4X_HDMI_DAC */ + .dot = { .min = G4X_DOT_HDMI_DAC_MIN, .max = G4X_DOT_HDMI_DAC_MAX }, + .vco = { .min = G4X_VCO_MIN, .max = G4X_VCO_MAX}, + .n = { .min = G4X_N_HDMI_DAC_MIN, .max = G4X_N_HDMI_DAC_MAX }, + .m = { .min = G4X_M_HDMI_DAC_MIN, .max = G4X_M_HDMI_DAC_MAX }, + .m1 = { .min = G4X_M1_HDMI_DAC_MIN, .max = G4X_M1_HDMI_DAC_MAX }, + .m2 = { .min = G4X_M2_HDMI_DAC_MIN, .max = G4X_M2_HDMI_DAC_MAX }, + .p = { .min = G4X_P_HDMI_DAC_MIN, .max = G4X_P_HDMI_DAC_MAX }, + .p1 = { .min = G4X_P1_HDMI_DAC_MIN, .max = G4X_P1_HDMI_DAC_MAX}, + .p2 = { .dot_limit = G4X_P2_HDMI_DAC_LIMIT, + .p2_slow = G4X_P2_HDMI_DAC_SLOW, + .p2_fast = G4X_P2_HDMI_DAC_FAST }, + .find_pll = intel_find_pll_g4x, + }, + { /* INTEL_LIMIT_G4X_SINGLE_LVDS */ + .dot = { .min = G4X_DOT_SINGLE_LVDS_MIN, + .max = G4X_DOT_SINGLE_LVDS_MAX }, + .vco = { .min = G4X_VCO_MIN, + .max = G4X_VCO_MAX }, + .n = { .min = G4X_N_SINGLE_LVDS_MIN, + .max = G4X_N_SINGLE_LVDS_MAX }, + .m = { .min = G4X_M_SINGLE_LVDS_MIN, + .max = G4X_M_SINGLE_LVDS_MAX }, + .m1 = { .min = G4X_M1_SINGLE_LVDS_MIN, + .max = G4X_M1_SINGLE_LVDS_MAX }, + .m2 = { .min = G4X_M2_SINGLE_LVDS_MIN, + .max = G4X_M2_SINGLE_LVDS_MAX }, + .p = { .min = G4X_P_SINGLE_LVDS_MIN, + .max = G4X_P_SINGLE_LVDS_MAX }, + .p1 = { .min = G4X_P1_SINGLE_LVDS_MIN, + .max = G4X_P1_SINGLE_LVDS_MAX }, + .p2 = { .dot_limit = G4X_P2_SINGLE_LVDS_LIMIT, + .p2_slow = G4X_P2_SINGLE_LVDS_SLOW, + .p2_fast = G4X_P2_SINGLE_LVDS_FAST }, + .find_pll = intel_find_pll_g4x, + }, + { /* INTEL_LIMIT_G4X_DUAL_LVDS */ + .dot = { .min = G4X_DOT_DUAL_LVDS_MIN, + .max = G4X_DOT_DUAL_LVDS_MAX }, + .vco = { .min = G4X_VCO_MIN, + .max = G4X_VCO_MAX}, + .n = { .min = G4X_N_DUAL_LVDS_MIN, + .max = G4X_N_DUAL_LVDS_MAX }, + .m = { .min = G4X_M_DUAL_LVDS_MIN, + .max = G4X_M_DUAL_LVDS_MAX }, + .m1 = { .min = G4X_M1_DUAL_LVDS_MIN, + .max = G4X_M1_DUAL_LVDS_MAX }, + .m2 = { .min = G4X_M2_DUAL_LVDS_MIN, + .max = G4X_M2_DUAL_LVDS_MAX }, + .p = { .min = G4X_P_DUAL_LVDS_MIN, + .max = G4X_P_DUAL_LVDS_MAX }, + .p1 = { .min = G4X_P1_DUAL_LVDS_MIN, + .max = G4X_P1_DUAL_LVDS_MAX}, + .p2 = { .dot_limit = G4X_P2_DUAL_LVDS_LIMIT, + .p2_slow = G4X_P2_DUAL_LVDS_SLOW, + .p2_fast = G4X_P2_DUAL_LVDS_FAST }, + .find_pll = intel_find_pll_g4x, }, }; +static const intel_limit_t *intel_limit_g4x (xf86CrtcPtr crtc) +{ + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); + const intel_limit_t *limit; + + if (i830PipeHasType (crtc, I830_OUTPUT_LVDS)) { + if ((INREG(LVDS) & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP) { + /* LVDS with dual channel */ + limit = &intel_limits[INTEL_LIMIT_G4X_DUAL_LVDS]; + } else /* LVDS with single channel */ + limit = &intel_limits[INTEL_LIMIT_G4X_SINGLE_LVDS]; + } else if (i830PipeHasType (crtc, I830_OUTPUT_HDMI) || + i830PipeHasType (crtc, I830_OUTPUT_ANALOG)) { + limit = &intel_limits[INTEL_LIMIT_G4X_HDMI_DAC]; + } else if (i830PipeHasType (crtc, I830_OUTPUT_SDVO)) { + limit = &intel_limits[INTEL_LIMIT_G4X_SDVO]; + } else /* The option is for other outputs */ + limit = &intel_limits[INTEL_LIMIT_I9XX_SDVO_DAC]; + return limit; +} + static const intel_limit_t *intel_limit (xf86CrtcPtr crtc) { ScrnInfoPtr pScrn = crtc->scrn; I830Ptr pI830 = I830PTR(pScrn); const intel_limit_t *limit; - if (IS_I9XX(pI830)) { + if (IS_G4X(pI830)) { + limit = intel_limit_g4x(crtc); + } else if (IS_I9XX(pI830) && !IS_IGD(pI830)) { if (i830PipeHasType (crtc, I830_OUTPUT_LVDS)) limit = &intel_limits[INTEL_LIMIT_I9XX_LVDS]; else limit = &intel_limits[INTEL_LIMIT_I9XX_SDVO_DAC]; + } else if (IS_IGD(pI830)) { + if (i830PipeHasType (crtc, I830_OUTPUT_LVDS)) + limit = &intel_limits[INTEL_LIMIT_IGD_LVDS]; + else + limit = &intel_limits[INTEL_LIMIT_IGD_SDVO_DAC]; } else { if (i830PipeHasType (crtc, I830_OUTPUT_LVDS)) limit = &intel_limits[INTEL_LIMIT_I8XX_LVDS]; @@ -233,11 +474,23 @@ static void i9xx_clock(int refclk, intel_clock_t *clock) clock->dot = clock->vco / clock->p; } +/* m1 is reserved as 0 in IGD, n is a ring counter */ +static void igd_clock(int refclk, intel_clock_t *clock) +{ + clock->m = clock->m2 + 2; + clock->p = clock->p1 * clock->p2; + clock->vco = refclk * clock->m / clock->n; + clock->dot = clock->vco / clock->p; +} + static void intel_clock(I830Ptr pI830, int refclk, intel_clock_t *clock) { - if (IS_I9XX(pI830)) - i9xx_clock (refclk, clock); - else + if (IS_I9XX(pI830)) { + if (IS_IGD(pI830)) + igd_clock(refclk, clock); + else + i9xx_clock (refclk, clock); + } else i8xx_clock (refclk, clock); } @@ -286,6 +539,8 @@ static Bool i830PllIsValid(xf86CrtcPtr crtc, intel_clock_t *clock) { const intel_limit_t *limit = intel_limit (crtc); + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); if (clock->p1 < limit->p1.min || limit->p1.max < clock->p1) i830PllInvalid ("p1 out of range\n"); @@ -295,7 +550,7 @@ i830PllIsValid(xf86CrtcPtr crtc, intel_clock_t *clock) i830PllInvalid ("m2 out of range\n"); if (clock->m1 < limit->m1.min || limit->m1.max < clock->m1) i830PllInvalid ("m1 out of range\n"); - if (clock->m1 <= clock->m2) + if (clock->m1 <= clock->m2 && !IS_IGD(pI830)) i830PllInvalid ("m1 <= m2\n"); if (clock->m < limit->m.min || limit->m.max < clock->m) i830PllInvalid ("m out of range\n"); @@ -312,18 +567,13 @@ i830PllIsValid(xf86CrtcPtr crtc, intel_clock_t *clock) return TRUE; } -/** - * Returns a set of divisors for the desired target clock with the given - * refclk, or FALSE. The returned values represent the clock equation: - * reflck * (5 * (m1 + 2) + (m2 + 2)) / (n + 2) / p1 / p2. - */ static Bool -i830FindBestPLL(xf86CrtcPtr crtc, int target, int refclk, intel_clock_t *best_clock) +intel_find_pll_i8xx_and_i9xx(const intel_limit_t * limit, xf86CrtcPtr crtc, + int target, int refclk, intel_clock_t *best_clock) { ScrnInfoPtr pScrn = crtc->scrn; I830Ptr pI830 = I830PTR(pScrn); - intel_clock_t clock; - const intel_limit_t *limit = intel_limit (crtc); + intel_clock_t clock; int err = target; if (i830PipeHasType(crtc, I830_OUTPUT_LVDS)) @@ -347,8 +597,11 @@ i830FindBestPLL(xf86CrtcPtr crtc, int target, int refclk, intel_clock_t *best_cl for (clock.m1 = limit->m1.min; clock.m1 <= limit->m1.max; clock.m1++) { - for (clock.m2 = limit->m2.min; clock.m2 < clock.m1 && clock.m2 <= limit->m2.max; clock.m2++) + for (clock.m2 = limit->m2.min; clock.m2 <= limit->m2.max; clock.m2++) { + /* m1 is always 0 in IGD */ + if (clock.m2 >= clock.m1 && !IS_IGD(pI830)) + break; for (clock.n = limit->n.min; clock.n <= limit->n.max; clock.n++) { for (clock.p1 = limit->p1.min; clock.p1 <= limit->p1.max; clock.p1++) @@ -372,6 +625,64 @@ i830FindBestPLL(xf86CrtcPtr crtc, int target, int refclk, intel_clock_t *best_cl return (err != target); } +static Bool +intel_find_pll_g4x(const intel_limit_t * limit, xf86CrtcPtr crtc, + int target, int refclk, intel_clock_t *best_clock) +{ + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); + intel_clock_t clock; + int max_n; + Bool found = FALSE; + int err_most = target * 0.0048; + + if (i830PipeHasType(crtc, I830_OUTPUT_LVDS)) + { + /* For LVDS, if the panel is on, just rely on its current settings for + * dual-channel. We haven't figured out how to reliably set up + * different single/dual channel state, if we even can. + */ + if ((INREG(LVDS) & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP) + clock.p2 = limit->p2.p2_fast; + else + clock.p2 = limit->p2.p2_slow; + } else { + if (target < limit->p2.dot_limit) + clock.p2 = limit->p2.p2_slow; + else + clock.p2 = limit->p2.p2_fast; + } + + max_n = limit->n.max; + /* based on hardware requirement prefer smaller n to precision */ + for (clock.n = limit->n.min; clock.n <= max_n; clock.n++) { + /* based on hardware requirement prefere larger m1,m2, p1*/ + for (clock.m1 = limit->m1.max; + clock.m1 >= limit->m1.min; clock.m1--) { + for (clock.m2 = limit->m2.max; + clock.m2 >= limit->m2.min; clock.m2--) { + for (clock.p1 = limit->p1.max; + clock.p1 >= limit->p1.min; clock.p1--) { + int this_err; + + intel_clock (pI830, refclk, &clock); + if (!i830PllIsValid(crtc, &clock)) + continue; + this_err = abs(clock.dot - target) ; + if (this_err < err_most) { + memcpy(best_clock, &clock, sizeof(intel_clock_t)); + err_most = this_err; + /* prefer smaller n to precision */ + max_n = clock.n; + found = TRUE; + } + } + } + } + } + return found; +} + void i830WaitForVblank(ScrnInfoPtr pScreen) { @@ -387,12 +698,14 @@ i830PipeSetBase(xf86CrtcPtr crtc, int x, int y) I830CrtcPrivatePtr intel_crtc = crtc->driver_private; int pipe = intel_crtc->pipe; int plane = intel_crtc->plane; - unsigned long Start, Offset; + unsigned long Start, Offset, Stride; int dspbase = (plane == 0 ? DSPABASE : DSPBBASE); int dspsurf = (plane == 0 ? DSPASURF : DSPBSURF); int dsptileoff = (plane == 0 ? DSPATILEOFF : DSPBTILEOFF); + int dspstride = (plane == 0) ? DSPASTRIDE : DSPBSTRIDE; Offset = ((y * pScrn->displayWidth + x) * pI830->cpp); + Stride = pScrn->displayWidth * pI830->cpp; if (pI830->front_buffer == NULL) { /* During startup we may be called as part of monitor detection while * there is no memory allocation done, so just supply a dummy base @@ -403,13 +716,15 @@ i830PipeSetBase(xf86CrtcPtr crtc, int x, int y) /* offset is done by shadow painting code, not here */ Start = (char *)crtc->rotatedData - (char *)pI830->FbBase; Offset = 0; - } else if (I830IsPrimary(pScrn)) { - Start = pI830->front_buffer->offset; + Stride = intel_crtc->rotate_mem->pitch; } else { - I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1); - Start = pI8301->front_buffer_2->offset; + Start = pI830->front_buffer->offset; } + crtc->x = x; + crtc->y = y; + + OUTREG(dspstride, Stride); if (IS_I965G(pI830)) { OUTREG(dspbase, Offset); POSTING_READ(dspbase); @@ -422,20 +737,20 @@ i830PipeSetBase(xf86CrtcPtr crtc, int x, int y) } #ifdef XF86DRI - if (pI830->directRenderingEnabled) { + if (pI830->directRenderingType == DRI_XF86DRI) { drmI830Sarea *sPriv = (drmI830Sarea *) DRIGetSAREAPrivate(pScrn->pScreen); if (!sPriv) return; - switch (plane) { + switch (pipe) { case 0: - sPriv->planeA_x = x; - sPriv->planeA_y = y; + sPriv->pipeA_x = x; + sPriv->pipeA_y = y; break; case 1: - sPriv->planeB_x = x; - sPriv->planeB_y = y; + sPriv->pipeB_x = x; + sPriv->pipeB_y = y; break; default: xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -745,7 +1060,7 @@ i830_use_fb_compression(xf86CrtcPtr crtc) return TRUE; } -#if defined(DRM_IOCTL_MODESET_CTL) && defined(XF86DRI) +#if defined(DRM_IOCTL_MODESET_CTL) && (defined(XF86DRI) || defined(DRI2)) static void i830_modeset_ctl(xf86CrtcPtr crtc, int pre) { ScrnInfoPtr pScrn = crtc->scrn; @@ -753,10 +1068,10 @@ static void i830_modeset_ctl(xf86CrtcPtr crtc, int pre) I830CrtcPrivatePtr intel_crtc = crtc->driver_private; struct drm_modeset_ctl modeset; - if (!pI830->directRenderingEnabled) - return; + if (pI830->directRenderingType <= DRI_NONE) + return; - modeset.crtc = intel_crtc->plane; + modeset.crtc = intel_crtc->pipe; /* * DPMS will be called many times (especially off), but we only @@ -777,16 +1092,40 @@ static void i830_modeset_ctl(xf86CrtcPtr crtc, int dpms_state) { return; } -#endif /* DRM_IOCTL_MODESET_CTL && XF86DRI */ +#endif /* DRM_IOCTL_MODESET_CTL && (XF86DRI || DRI2) */ -/** - * Sets the power management mode of the pipe and plane. - * - * This code should probably grow support for turning the cursor off and back - * on appropriately at the same time as we're turning the pipe off/on. - */ static void -i830_crtc_dpms(xf86CrtcPtr crtc, int mode) +i830_disable_vga_plane (xf86CrtcPtr crtc) +{ + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); + uint32_t vgacntrl = INREG(VGACNTRL); + uint8_t sr01; + + if (vgacntrl & VGA_DISP_DISABLE) + return; + + /* + Set bit 5 of SR01; + Wait 30us; + */ + OUTREG8(SRX, 1); + sr01 = INREG8(SRX + 1); + OUTREG8(SRX + 1, sr01 | (1 << 5)); + usleep(30); + /* disable center mode on 965GM and G4X platform */ + if (IS_I965GM(pI830) || IS_G4X(pI830)) + vgacntrl &= ~(3 << 24); + + vgacntrl |= VGA_DISP_DISABLE; + + OUTREG(VGACNTRL, vgacntrl); + i830WaitForVblank(pScrn); + +} + +void +i830_crtc_enable(xf86CrtcPtr crtc) { ScrnInfoPtr pScrn = crtc->scrn; I830Ptr pI830 = I830PTR(pScrn); @@ -799,110 +1138,155 @@ i830_crtc_dpms(xf86CrtcPtr crtc, int mode) int dspbase_reg = (plane == 0) ? DSPABASE : DSPBBASE; uint32_t temp; - /* XXX: When our outputs are all unaware of DPMS modes other than off and - * on, we should map those modes to DPMSModeOff in the CRTC. - */ - switch (mode) { - case DPMSModeOn: - case DPMSModeStandby: - case DPMSModeSuspend: - /* Enable the DPLL */ - temp = INREG(dpll_reg); - if ((temp & DPLL_VCO_ENABLE) == 0) - { - OUTREG(dpll_reg, temp); - POSTING_READ(dpll_reg); - /* Wait for the clocks to stabilize. */ - usleep(150); - OUTREG(dpll_reg, temp | DPLL_VCO_ENABLE); - POSTING_READ(dpll_reg); - /* Wait for the clocks to stabilize. */ - usleep(150); - OUTREG(dpll_reg, temp | DPLL_VCO_ENABLE); - POSTING_READ(dpll_reg); - /* Wait for the clocks to stabilize. */ - usleep(150); - } + /* Enable the DPLL */ + temp = INREG(dpll_reg); + if ((temp & DPLL_VCO_ENABLE) == 0) + { + OUTREG(dpll_reg, temp); + POSTING_READ(dpll_reg); + /* Wait for the clocks to stabilize. */ + usleep(150); + OUTREG(dpll_reg, temp | DPLL_VCO_ENABLE); + POSTING_READ(dpll_reg); + /* Wait for the clocks to stabilize. */ + usleep(150); + OUTREG(dpll_reg, temp | DPLL_VCO_ENABLE); + POSTING_READ(dpll_reg); + /* Wait for the clocks to stabilize. */ + usleep(150); + } - /* Enable the pipe */ - temp = INREG(pipeconf_reg); - if ((temp & PIPEACONF_ENABLE) == 0) - OUTREG(pipeconf_reg, temp | PIPEACONF_ENABLE); + /* Enable the pipe */ + temp = INREG(pipeconf_reg); + if ((temp & PIPEACONF_ENABLE) == 0) + OUTREG(pipeconf_reg, temp | PIPEACONF_ENABLE); - /* Enable the plane */ - temp = INREG(dspcntr_reg); - if ((temp & DISPLAY_PLANE_ENABLE) == 0) - { - OUTREG(dspcntr_reg, temp | DISPLAY_PLANE_ENABLE); - /* Flush the plane changes */ - OUTREG(dspbase_reg, INREG(dspbase_reg)); - } + /* Enable the plane */ + temp = INREG(dspcntr_reg); + if ((temp & DISPLAY_PLANE_ENABLE) == 0) + { + OUTREG(dspcntr_reg, temp | DISPLAY_PLANE_ENABLE); + /* Flush the plane changes */ + OUTREG(dspbase_reg, INREG(dspbase_reg)); + } - i830_crtc_load_lut(crtc); + i830_crtc_load_lut(crtc); - /* Give the overlay scaler a chance to enable if it's on this pipe */ - i830_crtc_dpms_video(crtc, TRUE); + /* Give the overlay scaler a chance to enable if it's on this pipe */ + i830_crtc_dpms_video(crtc, TRUE); - /* Reenable compression if needed */ - if (i830_use_fb_compression(crtc)) - i830_enable_fb_compression(crtc); - i830_modeset_ctl(crtc, 0); - break; - case DPMSModeOff: - i830_modeset_ctl(crtc, 1); - /* Shut off compression if in use */ - if (i830_use_fb_compression(crtc)) - i830_disable_fb_compression(crtc); + /* Reenable compression if needed */ + if (i830_use_fb_compression(crtc)) + i830_enable_fb_compression(crtc); + i830_modeset_ctl(crtc, 0); +} - /* Give the overlay scaler a chance to disable if it's on this pipe */ - i830_crtc_dpms_video(crtc, FALSE); +void +i830_crtc_disable(xf86CrtcPtr crtc, Bool disable_pipe) +{ + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); + I830CrtcPrivatePtr intel_crtc = crtc->driver_private; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + int dpll_reg = (pipe == 0) ? DPLL_A : DPLL_B; + int pipeconf_reg = (pipe == 0) ? PIPEACONF : PIPEBCONF; + int dspcntr_reg = (plane == 0) ? DSPACNTR : DSPBCNTR; + int dspbase_reg = (plane == 0) ? DSPABASE : DSPBBASE; + uint32_t temp; - /* Disable the VGA plane that we never use */ - OUTREG(VGACNTRL, VGA_DISP_DISABLE); + i830_modeset_ctl(crtc, 1); + /* Shut off compression if in use */ + if (i830_use_fb_compression(crtc)) + i830_disable_fb_compression(crtc); - /* May need to leave pipe A on */ - if ((pipe != 0) || !(pI830->quirk_flag & QUIRK_PIPEA_FORCE)) - { - /* Disable display plane */ - temp = INREG(dspcntr_reg); - if ((temp & DISPLAY_PLANE_ENABLE) != 0) - { - OUTREG(dspcntr_reg, temp & ~DISPLAY_PLANE_ENABLE); - /* Flush the plane changes */ - OUTREG(dspbase_reg, INREG(dspbase_reg)); - POSTING_READ(dspbase_reg); - } + /* Give the overlay scaler a chance to disable if it's on this pipe */ + i830_crtc_dpms_video(crtc, FALSE); - if (!IS_I9XX(pI830)) { - /* Wait for vblank for the disable to take effect */ - i830WaitForVblank(pScrn); - } + /* + * The documentation says : + * - Disable planes (VGA or hires) + * - Disable pipe + * - Disable VGA display + */ - /* Next, disable display pipes */ - temp = INREG(pipeconf_reg); - if ((temp & PIPEACONF_ENABLE) != 0) { - OUTREG(pipeconf_reg, temp & ~PIPEACONF_ENABLE); - POSTING_READ(pipeconf_reg); - } + /* Disable display plane */ + temp = INREG(dspcntr_reg); + if ((temp & DISPLAY_PLANE_ENABLE) != 0) + { + OUTREG(dspcntr_reg, temp & ~DISPLAY_PLANE_ENABLE); + /* Flush the plane changes */ + OUTREG(dspbase_reg, INREG(dspbase_reg)); + POSTING_READ(dspbase_reg); + } - /* Wait for vblank for the disable to take effect. */ - i830WaitForVblank(pScrn); + if (!IS_I9XX(pI830)) { + /* Wait for vblank for the disable to take effect */ + i830WaitForVblank(pScrn); + } - temp = INREG(dpll_reg); - if ((temp & DPLL_VCO_ENABLE) != 0) { - OUTREG(dpll_reg, temp & ~DPLL_VCO_ENABLE); - POSTING_READ(dpll_reg); - } + /* May need to leave pipe A on */ + if (disable_pipe) + { + /* Next, disable display pipes */ + temp = INREG(pipeconf_reg); + if ((temp & PIPEACONF_ENABLE) != 0) { + OUTREG(pipeconf_reg, temp & ~PIPEACONF_ENABLE); + POSTING_READ(pipeconf_reg); } + + /* Wait for vblank for the disable to take effect. */ + i830WaitForVblank(pScrn); + + temp = INREG(dpll_reg); + if ((temp & DPLL_VCO_ENABLE) != 0) { + OUTREG(dpll_reg, temp & ~DPLL_VCO_ENABLE); + POSTING_READ(dpll_reg); + } + /* Wait for the clocks to turn off. */ usleep(150); + } + + /* Disable the VGA plane that we never use. */ + i830_disable_vga_plane (crtc); +} + +/** + * Sets the power management mode of the pipe and plane. + * + * This code should probably grow support for turning the cursor off and back + * on appropriately at the same time as we're turning the pipe off/on. + */ +static void +i830_crtc_dpms(xf86CrtcPtr crtc, int mode) +{ + ScrnInfoPtr pScrn = crtc->scrn; + I830Ptr pI830 = I830PTR(pScrn); + I830CrtcPrivatePtr intel_crtc = crtc->driver_private; + int pipe = intel_crtc->pipe; + Bool disable_pipe = TRUE; + + /* XXX: When our outputs are all unaware of DPMS modes other than off and + * on, we should map those modes to DPMSModeOff in the CRTC. + */ + switch (mode) { + case DPMSModeOn: + case DPMSModeStandby: + case DPMSModeSuspend: + i830_crtc_enable(crtc); + break; + case DPMSModeOff: + if ((pipe == 0) && (pI830->quirk_flag & QUIRK_PIPEA_FORCE)) + disable_pipe = FALSE; + i830_crtc_disable(crtc, disable_pipe); break; } intel_crtc->dpms_mode = mode; #ifdef XF86DRI - if (pI830->directRenderingEnabled) { + if (pI830->directRenderingType == DRI_XF86DRI) { drmI830Sarea *sPriv = (drmI830Sarea *) DRIGetSAREAPrivate(pScrn->pScreen); Bool enabled = crtc->enabled && mode != DPMSModeOff; @@ -911,14 +1295,14 @@ i830_crtc_dpms(xf86CrtcPtr crtc, int mode) if (!sPriv) return; - switch (plane) { + switch (pipe) { case 0: - sPriv->planeA_w = enabled ? crtc->mode.HDisplay : 0; - sPriv->planeA_h = enabled ? crtc->mode.VDisplay : 0; + sPriv->pipeA_w = enabled ? crtc->mode.HDisplay : 0; + sPriv->pipeA_h = enabled ? crtc->mode.VDisplay : 0; break; case 1: - sPriv->planeB_w = enabled ? crtc->mode.HDisplay : 0; - sPriv->planeB_h = enabled ? crtc->mode.VDisplay : 0; + sPriv->pipeB_w = enabled ? crtc->mode.HDisplay : 0; + sPriv->pipeB_h = enabled ? crtc->mode.VDisplay : 0; break; default: xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -982,6 +1366,11 @@ i830_crtc_commit (xf86CrtcPtr crtc) /* Reenable FB compression if possible */ if (i830_use_fb_compression(crtc)) i830_enable_fb_compression(crtc); + +#ifdef XF86DRI + /* Tell DRI1 the news about new output config */ + i830_update_dri_buffers(crtc->scrn); +#endif } void @@ -1012,11 +1401,11 @@ i830_get_core_clock_speed(ScrnInfoPtr pScrn) /* Core clock values taken from the published datasheets. * The 830 may go up to 166 Mhz, which we should check. */ - if (IS_I945G(pI830) || IS_G33CLASS(pI830)) + if (IS_I945G(pI830) || (IS_G33CLASS(pI830) && !IS_IGDGM(pI830))) return 400000; else if (IS_I915G(pI830)) return 333000; - else if (IS_I945GM(pI830) || IS_845G(pI830)) + else if (IS_I945GM(pI830) || IS_845G(pI830) || IS_IGDGM(pI830)) return 200000; else if (IS_I915GM(pI830)) { uint16_t gcfgc; @@ -1116,7 +1505,7 @@ i830_update_dsparb(ScrnInfoPtr pScrn) /* * FIFO entries will be split based on programmed modes */ - if (IS_I965GM(pI830) || IS_GM45(pI830)) + if (IS_I965GM(pI830)) fifo_entries = 127; else if (IS_I9XX(pI830)) fifo_entries = 95; @@ -1189,16 +1578,15 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, int vsync_reg = (pipe == 0) ? VSYNC_A : VSYNC_B; int pipesrc_reg = (pipe == 0) ? PIPEASRC : PIPEBSRC; int dspcntr_reg = (plane == 0) ? DSPACNTR : DSPBCNTR; - int dspstride_reg = (plane == 0) ? DSPASTRIDE : DSPBSTRIDE; int dsppos_reg = (plane == 0) ? DSPAPOS : DSPBPOS; int dspsize_reg = (plane == 0) ? DSPASIZE : DSPBSIZE; - int pipestat_reg = (pipe == 0) ? PIPEASTAT : PIPEBSTAT; int i, num_outputs = 0; int refclk; intel_clock_t clock; uint32_t dpll = 0, fp = 0, dspcntr, pipeconf, lvds_bits = 0; Bool ok, is_sdvo = FALSE, is_dvo = FALSE; Bool is_crt = FALSE, is_lvds = FALSE, is_tv = FALSE; + const intel_limit_t *limit; /* Set up some convenient bools for what outputs are connected to * our pipe, used in DPLL setup. @@ -1251,7 +1639,13 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, refclk = 48000; } - ok = i830FindBestPLL(crtc, adjusted_mode->Clock, refclk, &clock); + /* + * Returns a set of divisors for the desired target clock with the given + * refclk, or FALSE. The returned values represent the clock equation: + * reflck * (5 * (m1 + 2) + (m2 + 2)) / (n + 2) / p1 / p2. + */ + limit = intel_limit (crtc); + ok = limit->find_pll(limit, crtc, adjusted_mode->Clock, refclk, &clock); if (!ok) FatalError("Couldn't find PLL settings for mode!\n"); @@ -1263,7 +1657,30 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, (float)adjusted_mode->Clock / 1000); } - fp = clock.n << 16 | clock.m1 << 8 | clock.m2; + /* SDVO TV has fixed PLL values depends on its clock range, + this mirrors vbios setting. */ + if (is_sdvo && is_tv) { + if (adjusted_mode->Clock >= 100000 && + adjusted_mode->Clock < 140500) { + clock.p1 = 2; + clock.p2 = 10; + clock.n = 3; + clock.m1 = 16; + clock.m2 = 8; + } else if (adjusted_mode->Clock >= 140500 && + adjusted_mode->Clock <= 200000) { + clock.p1 = 1; + clock.p2 = 10; + clock.n = 6; + clock.m1 = 12; + clock.m2 = 8; + } + } + + if (IS_IGD(pI830)) + fp = (1 << clock.n) << 16 | clock.m1 << 8 | clock.m2; + else + fp = clock.n << 16 | clock.m1 << 8 | clock.m2; dpll = DPLL_VGA_MODE_DIS; if (IS_I9XX(pI830)) { @@ -1274,8 +1691,7 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, if (is_sdvo) { dpll |= DPLL_DVO_HIGH_SPEED; - if ((IS_I945G(pI830) || IS_I945GM(pI830) || IS_G33CLASS(pI830)) && - !is_tv) + if ((IS_I945G(pI830) || IS_I945GM(pI830) || IS_G33CLASS(pI830))) { int sdvo_pixel_multiply = adjusted_mode->Clock / mode->Clock; dpll |= (sdvo_pixel_multiply - 1) << SDVO_MULTIPLIER_SHIFT_HIRES; @@ -1283,7 +1699,10 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, } /* compute bitmask from p1 value */ - dpll |= (1 << (clock.p1 - 1)) << 16; + if (IS_IGD(pI830)) + dpll |= (1 << (clock.p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT_IGD; + else + dpll |= (1 << (clock.p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT; switch (clock.p2) { case 5: dpll |= DPLL_DAC_SERIAL_P2_CLOCK_DIV_5; @@ -1485,7 +1904,6 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, ((adjusted_mode->CrtcVBlankEnd - 1) << 16)); OUTREG(vsync_reg, (adjusted_mode->CrtcVSyncStart - 1) | ((adjusted_mode->CrtcVSyncEnd - 1) << 16)); - OUTREG(dspstride_reg, pScrn->displayWidth * pI830->cpp); /* pipesrc and dspsize control the size that is scaled from, which should * always be the user's requested size. */ @@ -1504,9 +1922,6 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, #endif i830WaitForVblank(pScrn); - - /* Clear any FIFO underrun status that may have occurred normally */ - OUTREG(pipestat_reg, INREG(pipestat_reg) | FIFO_UNDERRUN); } @@ -1565,12 +1980,14 @@ i830_crtc_shadow_allocate (xf86CrtcPtr crtc, int width, int height) unsigned long rotate_pitch; int align = KB(4), size; - rotate_pitch = pScrn->displayWidth * pI830->cpp; + width = i830_pad_drawable_width(width, pI830->cpp); + rotate_pitch = width * pI830->cpp; size = rotate_pitch * height; assert(intel_crtc->rotate_mem == NULL); intel_crtc->rotate_mem = i830_allocate_memory(pScrn, "rotated crtc", - size, align, 0); + size, rotate_pitch, align, + 0, TILE_NONE); if (intel_crtc->rotate_mem == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Couldn't allocate shadow memory for rotated CRTC\n"); @@ -1588,14 +2005,15 @@ static PixmapPtr i830_crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height) { ScrnInfoPtr pScrn = crtc->scrn; + I830CrtcPrivatePtr intel_crtc = crtc->driver_private; I830Ptr pI830 = I830PTR(pScrn); - unsigned long rotate_pitch; + int rotate_pitch; PixmapPtr rotate_pixmap; if (!data) data = i830_crtc_shadow_allocate (crtc, width, height); - rotate_pitch = pScrn->displayWidth * pI830->cpp; + rotate_pitch = i830_pad_drawable_width(width, pI830->cpp) * pI830->cpp; rotate_pixmap = GetScratchPixmapHeader(pScrn->pScreen, width, height, @@ -1608,6 +2026,8 @@ i830_crtc_shadow_create(xf86CrtcPtr crtc, void *data, int width, int height) xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Couldn't allocate shadow pixmap for rotated CRTC\n"); } + if (intel_crtc->rotate_mem && intel_crtc->rotate_mem->bo) + i830_set_pixmap_bo(rotate_pixmap, intel_crtc->rotate_mem->bo); return rotate_pixmap; } @@ -1628,6 +2048,31 @@ i830_crtc_shadow_destroy(xf86CrtcPtr crtc, PixmapPtr rotate_pixmap, void *data) } } +#if RANDR_13_INTERFACE +static void +i830_crtc_set_origin(xf86CrtcPtr crtc, int x, int y) +{ + if (crtc->enabled) + i830PipeSetBase(crtc, x, y); +} +#endif + +/* The screen bo has changed, reset each active crtc to point at + * the same location that it currently points at, but in the new bo + */ +void +i830_set_new_crtc_bo(ScrnInfoPtr pScrn) +{ + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); + int i; + + for (i = 0; i < xf86_config->num_crtc; i++) { + xf86CrtcPtr crtc = xf86_config->crtc[i]; + + if (crtc->enabled && !crtc->transform_in_use) + i830PipeSetBase(crtc, crtc->x, crtc->y); + } +} void i830DescribeOutputConfiguration(ScrnInfoPtr pScrn) @@ -1829,11 +2274,20 @@ i830_crtc_clock_get(ScrnInfoPtr pScrn, xf86CrtcPtr crtc) fp = INREG((pipe == 0) ? FPA1 : FPB1); clock.m1 = (fp & FP_M1_DIV_MASK) >> FP_M1_DIV_SHIFT; - clock.m2 = (fp & FP_M2_DIV_MASK) >> FP_M2_DIV_SHIFT; - clock.n = (fp & FP_N_DIV_MASK) >> FP_N_DIV_SHIFT; + if (IS_IGD(pI830)) { + clock.n = ffs((fp & FP_N_IGD_DIV_MASK) >> FP_N_DIV_SHIFT) - 1; + clock.m2 = (fp & FP_M2_IGD_DIV_MASK) >> FP_M2_DIV_SHIFT; + } else { + clock.n = (fp & FP_N_DIV_MASK) >> FP_N_DIV_SHIFT; + clock.m2 = (fp & FP_M2_DIV_MASK) >> FP_M2_DIV_SHIFT; + } if (IS_I9XX(pI830)) { - clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK) >> - DPLL_FPA01_P1_POST_DIV_SHIFT); + if (IS_IGD(pI830)) + clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK_IGD) >> + DPLL_FPA01_P1_POST_DIV_SHIFT_IGD); + else + clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK) >> + DPLL_FPA01_P1_POST_DIV_SHIFT); switch (dpll & DPLL_MODE_MASK) { case DPLLB_MODE_DAC_SERIAL: @@ -1850,9 +2304,9 @@ i830_crtc_clock_get(ScrnInfoPtr pScrn, xf86CrtcPtr crtc) } if ((dpll & PLL_REF_INPUT_MASK) == PLLB_REF_INPUT_SPREADSPECTRUMIN) - i9xx_clock(100000, &clock); + intel_clock(pI830, 100000, &clock); else - i9xx_clock(96000, &clock); + intel_clock(pI830, 96000, &clock); } else { Bool is_lvds = (pipe == 1) && (INREG(LVDS) & LVDS_PORT_EN); @@ -1867,9 +2321,9 @@ i830_crtc_clock_get(ScrnInfoPtr pScrn, xf86CrtcPtr crtc) clock.p2 = 14; if ((dpll & PLL_REF_INPUT_MASK) == PLLB_REF_INPUT_SPREADSPECTRUMIN) - i8xx_clock(66000, &clock); /* XXX: might not be 66MHz */ + intel_clock(pI830, 66000, &clock); /* XXX: might not be 66MHz */ else - i8xx_clock(48000, &clock); + intel_clock(pI830, 48000, &clock); } else { if (dpll & PLL_P1_DIVIDE_BY_TWO) { clock.p1 = 2; @@ -1882,7 +2336,7 @@ i830_crtc_clock_get(ScrnInfoPtr pScrn, xf86CrtcPtr crtc) else clock.p2 = 2; - i8xx_clock(48000, &clock); + intel_clock(pI830, 48000, &clock); } } @@ -1949,6 +2403,9 @@ static const xf86CrtcFuncsRec i830_crtc_funcs = { /* .load_cursor_image = i830_crtc_load_cursor_image, */ .load_cursor_argb = i830_crtc_load_cursor_argb, .destroy = NULL, /* XXX */ +#if RANDR_13_INTERFACE + .set_origin = i830_crtc_set_origin, +#endif }; void diff --git a/driver/xf86-video-intel/src/i830_display.h b/driver/xf86-video-intel/src/i830_display.h index 1eeb7f15f..0ba196d39 100644 --- a/driver/xf86-video-intel/src/i830_display.h +++ b/driver/xf86-video-intel/src/i830_display.h @@ -31,6 +31,9 @@ void i830PipeSetBase(xf86CrtcPtr crtc, int x, int y); void i830WaitForVblank(ScrnInfoPtr pScrn); void i830DescribeOutputConfiguration(ScrnInfoPtr pScrn); +void i830_set_new_crtc_bo(ScrnInfoPtr pScrn); +void i830_crtc_disable(xf86CrtcPtr crtc, Bool disable_pipe); +void i830_crtc_enable(xf86CrtcPtr crtc); xf86CrtcPtr i830GetLoadDetectPipe(xf86OutputPtr output, DisplayModePtr mode, int *dpms_mode); void i830ReleaseLoadDetectPipe(xf86OutputPtr output, int dpms_mode); diff --git a/driver/xf86-video-intel/src/i830_dri.c b/driver/xf86-video-intel/src/i830_dri.c index bbdde415b..6a3249298 100644 --- a/driver/xf86-video-intel/src/i830_dri.c +++ b/driver/xf86-video-intel/src/i830_dri.c @@ -65,6 +65,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include <stdio.h> #include <string.h> #include <assert.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/ioctl.h> +#include <errno.h> +#include <unistd.h> +#include <fcntl.h> #include "xf86.h" #include "xf86_OSproc.h" @@ -83,25 +89,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "i915_drm.h" -/* This block and the corresponding configure test can be removed when - * libdrm >= 2.3.1 is required. - */ -#ifndef HAVE_I915_FLIP - -#define DRM_VBLANK_FLIP 0x8000000 - -typedef struct drm_i915_flip { - int pipes; -} drm_i915_flip_t; - -#undef DRM_IOCTL_I915_FLIP -#define DRM_IOCTL_I915_FLIP DRM_IOW(DRM_COMMAND_BASE + DRM_I915_FLIP, \ - drm_i915_flip_t) +#include "dristruct.h" +#ifdef DRI2 +#include "dri2.h" #endif -#include "dristruct.h" - static Bool I830InitVisualConfigs(ScreenPtr pScreen); static Bool I830CreateContext(ScreenPtr pScreen, VisualPtr visual, drm_context_t hwContext, void *pVisualConfigPriv, @@ -119,14 +112,6 @@ static void I830DRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, static void I830DRITransitionTo2d(ScreenPtr pScreen); static void I830DRITransitionTo3d(ScreenPtr pScreen); -#if defined(DAMAGE) && (DRIINFO_MAJOR_VERSION > 5 || \ - (DRIINFO_MAJOR_VERSION == 5 && DRIINFO_MINOR_VERSION >= 1)) -#define DRI_SUPPORTS_CLIP_NOTIFY 1 -#else -#define DRI_SUPPORTS_CLIP_NOTIFY 0 -static void I830DRITransitionMultiToSingle3d(ScreenPtr pScreen); -static void I830DRITransitionSingleToMulti3d(ScreenPtr pScreen); -#endif #if (DRIINFO_MAJOR_VERSION > 5 || \ (DRIINFO_MAJOR_VERSION == 5 && DRIINFO_MINOR_VERSION >= 4)) @@ -135,10 +120,6 @@ static void I830DRITransitionSingleToMulti3d(ScreenPtr pScreen); #define DRI_DRIVER_FRAMEBUFFER_MAP 0 #endif -#if DRI_SUPPORTS_CLIP_NOTIFY -static void I830DRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num); -#endif - extern void GlxSetVisualConfigs(int nconfigs, __GLXvisualConfig * configs, void **configprivs); @@ -165,29 +146,38 @@ static Bool I830InitDma(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - I830RingBuffer *ring = pI830->LpRing; + I830RingBuffer *ring = &pI830->ring; I830DRIPtr pI830DRI = (I830DRIPtr) pI830->pDRIInfo->devPrivate; drmI830Init info; memset(&info, 0, sizeof(drmI830Init)); info.func = I830_INIT_DMA; - info.ring_start = ring->mem->offset + pI830->LinearAddr; - info.ring_end = ring->mem->end + pI830->LinearAddr; - info.ring_size = ring->mem->size; + /* Initialize fields that are used in the absence of GEM */ + if (!pI830->memory_manager && !pI830->use_drm_mode) { + info.ring_start = ring->mem->offset + pI830->LinearAddr; + info.ring_end = ring->mem->end + pI830->LinearAddr; + info.ring_size = ring->mem->size; + + /* Not used as of the middle of GEM development. */ + info.mmio_offset = (unsigned int)pI830DRI->regs; + + /* Not used as of before GEM development */ + info.front_offset = pI830->front_buffer->offset; + info.back_offset = pI830->back_buffer->offset; + info.depth_offset = pI830->depth_buffer->offset; + info.pitch = pScrn->displayWidth; + info.back_pitch = pScrn->displayWidth; + info.depth_pitch = pScrn->displayWidth; + info.w = pScrn->virtualX; + info.h = pScrn->virtualY; + } - info.mmio_offset = -1; info.sarea_priv_offset = sizeof(XF86DRISAREARec); - info.front_offset = pI830->front_buffer->offset; - info.back_offset = pI830->back_buffer->offset; - info.depth_offset = pI830->depth_buffer->offset; - info.w = pScrn->virtualX; - info.h = pScrn->virtualY; - info.pitch = pScrn->displayWidth; - info.back_pitch = pScrn->displayWidth; - info.depth_pitch = pScrn->displayWidth; + /* This should probably have been moved alongside offset/pitch in the sarea. + */ info.cpp = pI830->cpp; if (drmCommandWrite(pI830->drmSubFD, DRM_I830_INIT, @@ -594,14 +584,10 @@ I830DRIScreenInit(ScreenPtr pScreen) #if DRIINFO_MAJOR_VERSION > 5 || \ (DRIINFO_MAJOR_VERSION == 5 && DRIINFO_MINOR_VERSION >= 3) - if (pI830->useEXA) + if (pI830->accel == ACCEL_EXA) pDRIInfo->texOffsetStart = I830TexOffsetStart; #endif -#if DRI_SUPPORTS_CLIP_NOTIFY - pDRIInfo->ClipNotify = I830DRIClipNotify; -#endif - #if DRI_DRIVER_FRAMEBUFFER_MAP /* DRI version is high enough that we can get the DRI code to not * try to manage the framebuffer. @@ -621,11 +607,6 @@ I830DRIScreenInit(ScreenPtr pScreen) pDRIInfo->TransitionTo2d = I830DRITransitionTo2d; pDRIInfo->TransitionTo3d = I830DRITransitionTo3d; -#if !DRI_SUPPORTS_CLIP_NOTIFY - pDRIInfo->TransitionSingleToMulti3D = I830DRITransitionSingleToMulti3d; - pDRIInfo->TransitionMultiToSingle3D = I830DRITransitionMultiToSingle3d; -#endif - /* do driver-independent DRI screen initialization here */ if (!DRIScreenInit(pScreen, pDRIInfo, &pI830->drmSubFD)) { xf86DrvMsg(pScreen->myNum, X_ERROR, @@ -728,14 +709,6 @@ I830DRIScreenInit(ScreenPtr pScreen) return FALSE; } pI830->drmMinor = version->version_minor; -#ifdef DAMAGE - if (pI830->allowPageFlip && pI830->drmMinor < 9) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "DRM version 1.9 or newer required for Page flipping. " - "Disabling.\n"); - pI830->allowPageFlip = FALSE; - } -#endif drmFreeVersion(version); } } @@ -771,6 +744,51 @@ I830InitTextureHeap(ScrnInfoPtr pScrn) } } +/* + * Map registers & ring buffer + */ +static Bool +I830DRIMapHW(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); + DRIInfoPtr pDRIInfo = pI830->pDRIInfo; + I830DRIPtr pI830DRI = pDRIInfo->devPrivate; + + /* Kernel deals with direct hw access in this case */ + if (pI830->use_drm_mode) + return TRUE; + + DPRINTF(PFX, "I830DRIMapHW\n"); + pI830DRI->regsSize = I830_REG_SIZE; + if (drmAddMap(pI830->drmSubFD, (drm_handle_t)pI830->MMIOAddr, + pI830DRI->regsSize, DRM_REGISTERS, 0, + (drmAddress) &pI830DRI->regs) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, "[drm] drmAddMap(regs) failed\n"); + DRICloseScreen(pScreen); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] Registers = 0x%08x\n", + (int)pI830DRI->regs); + + if (!pI830->memory_manager) { + if (drmAddMap(pI830->drmSubFD, + (drm_handle_t)pI830->ring.mem->offset + + pI830->LinearAddr, + pI830->ring.mem->size, DRM_AGP, 0, + (drmAddress) &pI830->ring_map) < 0) { + xf86DrvMsg(pScreen->myNum, X_ERROR, + "[drm] drmAddMap(ring_map) failed. Disabling DRI\n"); + DRICloseScreen(pScreen); + return FALSE; + } + xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] ring buffer = 0x%08x\n", + (int)pI830->ring_map); + } + + return TRUE; +} + /** * Sets up mappings for static, lifetime-fixed allocations, and inital SAREA * setup. @@ -784,29 +802,24 @@ I830DRIDoMappings(ScreenPtr pScreen) I830DRIPtr pI830DRI = pDRIInfo->devPrivate; drmI830Sarea *sarea = (drmI830Sarea *) DRIGetSAREAPrivate(pScreen); - DPRINTF(PFX, "I830DRIDoMappings\n"); - - if (drmAddMap(pI830->drmSubFD, - (drm_handle_t)pI830->LpRing->mem->offset + pI830->LinearAddr, - pI830->LpRing->mem->size, DRM_AGP, 0, - (drmAddress) &pI830->ring_map) < 0) { - xf86DrvMsg(pScreen->myNum, X_ERROR, - "[drm] drmAddMap(ring_map) failed. Disabling DRI\n"); - DRICloseScreen(pScreen); - return FALSE; + if (!I830DRIMapHW(pScreen)) { + DRICloseScreen(pScreen); + return FALSE; } - xf86DrvMsg(pScreen->myNum, X_INFO, "[drm] ring buffer = 0x%08x\n", - (int)pI830->ring_map); if (!I830InitDma(pScrn)) { DRICloseScreen(pScreen); return FALSE; } + if (pI830->memory_manager == NULL) + intel_bufmgr_fake_set_last_dispatch(pI830->bufmgr, + (volatile unsigned int *) + &sarea->last_dispatch); + /* init to zero to be safe */ sarea->front_handle = 0; sarea->back_handle = 0; - sarea->third_handle = 0; sarea->depth_handle = 0; sarea->tex_handle = 0; @@ -903,12 +916,14 @@ Bool I830DRIResume(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); DPRINTF(PFX, "I830DRIResume\n"); I830ResumeDma(pScrn); - I830DRIInstIrqHandler(pScrn); + if (!pI830->memory_manager) + I830DRIInstIrqHandler(pScrn); return TRUE; } @@ -922,11 +937,7 @@ I830DRICloseScreen(ScreenPtr pScreen) DPRINTF(PFX, "I830DRICloseScreen\n"); -#ifdef DAMAGE - REGION_UNINIT(pScreen, &pI830->driRegion); -#endif - - if (pI830DRI->irq) { + if (!pI830->memory_manager && pI830DRI->irq) { drmCtlUninstHandler(pI830->drmSubFD); pI830DRI->irq = 0; } @@ -947,6 +958,7 @@ I830DRICloseScreen(ScreenPtr pScreen) xfree(pI830->pVisualConfigs); if (pI830->pVisualConfigsPriv) xfree(pI830->pVisualConfigsPriv); + pI830->directRenderingType = DRI_NONE; } static Bool @@ -978,61 +990,6 @@ I830DRIFinishScreenInit(ScreenPtr pScreen) return TRUE; } -#ifdef DAMAGE -/* This should be done *before* XAA syncs, - * Otherwise will have to sync again??? - */ -static void -I830DRIDoRefreshArea (ScrnInfoPtr pScrn, int num, BoxPtr pbox, uint32_t dst) -{ - I830Ptr pI830 = I830PTR(pScrn); - int i, cmd, br13 = (pScrn->displayWidth * pI830->cpp) | (0xcc << 16); - - if (pScrn->bitsPerPixel == 32) { - cmd = (XY_SRC_COPY_BLT_CMD | XY_SRC_COPY_BLT_WRITE_ALPHA | - XY_SRC_COPY_BLT_WRITE_RGB); - br13 |= 3 << 24; - } else { - cmd = (XY_SRC_COPY_BLT_CMD); - br13 |= 1 << 24; - } - - for (i = 0 ; i < num ; i++, pbox++) { - BEGIN_BATCH(8); - OUT_BATCH(cmd); - OUT_BATCH(br13); - OUT_BATCH((pbox->y1 << 16) | pbox->x1); - OUT_BATCH((pbox->y2 << 16) | pbox->x2); - OUT_BATCH(dst); - OUT_BATCH((pbox->y1 << 16) | pbox->x1); - OUT_BATCH(br13 & 0xffff); - OUT_BATCH(pI830->front_buffer->offset); - ADVANCE_BATCH(); - } -} - -static void -I830DRIRefreshArea (ScrnInfoPtr pScrn, int num, BoxPtr pbox) -{ - I830Ptr pI830 = I830PTR(pScrn); - drmI830Sarea *pSAREAPriv = DRIGetSAREAPrivate(pScrn->pScreen); - - /* Don't want to do this when no 3d is active and pages are - * right-way-round : - */ - if (!pSAREAPriv->pf_active && pSAREAPriv->pf_current_page == 0) - return; - - I830DRIDoRefreshArea(pScrn, num, pbox, pI830->back_buffer->offset); - - if (pI830->third_buffer) { - I830DRIDoRefreshArea(pScrn, num, pbox, pI830->third_buffer->offset); - } - - DamageEmpty(pI830->pDamage); -} -#endif - static void I830DRISwapContext(ScreenPtr pScreen, DRISyncType syncType, DRIContextType oldContextType, void *oldContext, @@ -1047,97 +1004,22 @@ I830DRISwapContext(ScreenPtr pScreen, DRISyncType syncType, if (I810_DEBUG & DEBUG_VERBOSE_DRI) ErrorF("i830DRISwapContext (in)\n"); - *pI830->last_3d = LAST_3D_OTHER; + pI830->last_3d = LAST_3D_OTHER; if (!pScrn->vtSema) return; pI830->LockHeld = 1; - i830_refresh_ring(pScrn); - - I830EmitFlush(pScrn); - -#ifdef DAMAGE - if (!pI830->pDamage && pI830->allowPageFlip) { - PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen); - pI830->pDamage = DamageCreate(NULL, NULL, DamageReportNone, TRUE, - pScreen, pPix); + if (!pI830->memory_manager) + i830_refresh_ring(pScrn); - if (pI830->pDamage == NULL) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "No screen damage record, page flipping disabled\n"); - pI830->allowPageFlip = FALSE; - } else { - DamageRegister(&pPix->drawable, pI830->pDamage); - - DamageDamageRegion(&pPix->drawable, - &WindowTable[pScreen->myNum]->winSize); - - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Damage tracking initialized for page flipping\n"); - } - } -#endif } else if (syncType == DRI_2D_SYNC && oldContextType == DRI_NO_CONTEXT && newContextType == DRI_2D_CONTEXT) { -#ifdef DAMAGE - drmI830Sarea *sPriv = (drmI830Sarea *) DRIGetSAREAPrivate(pScreen); -#endif - if (I810_DEBUG & DEBUG_VERBOSE_DRI) ErrorF("i830DRISwapContext (out)\n"); if (!pScrn->vtSema) return; - -#ifdef DAMAGE - if (pI830->pDamage) { - RegionPtr pDamageReg = DamageRegion(pI830->pDamage); - - if (pDamageReg) { - RegionRec region; - int nrects; - - REGION_NULL(pScreen, ®ion); - REGION_SUBTRACT(pScreen, ®ion, pDamageReg, &pI830->driRegion); - - if ((nrects = REGION_NUM_RECTS(®ion))) - I830DRIRefreshArea(pScrn, nrects, REGION_RECTS(®ion)); - - REGION_UNINIT(pScreen, ®ion); - } - } -#endif - - I830EmitFlush(pScrn); - -#ifdef DAMAGE - /* Try flipping back to the front page if necessary */ - if (sPriv && !sPriv->pf_enabled && sPriv->pf_current_page != 0) { - drm_i915_flip_t flip = { .pipes = 0 }; - - if (sPriv->pf_current_page & (0x3 << 2)) { - sPriv->pf_current_page = sPriv->pf_current_page & 0x3; - sPriv->pf_current_page |= (sPriv->third_handle ? 2 : 1) << 2; - - flip.pipes |= 0x2; - } - - if (sPriv->pf_current_page & 0x3) { - sPriv->pf_current_page = sPriv->pf_current_page & (0x3 << 2); - sPriv->pf_current_page |= sPriv->third_handle ? 2 : 1; - - flip.pipes |= 0x1; - } - - drmCommandWrite(pI830->drmSubFD, DRM_I915_FLIP, &flip, sizeof(flip)); - - if (sPriv->pf_current_page != 0) - xf86DrvMsg(pScreen->myNum, X_WARNING, - "[dri] %s: kernel failed to unflip buffers.\n", __func__); - } -#endif - pI830->LockHeld = 0; } else if (I810_DEBUG & DEBUG_VERBOSE_DRI) ErrorF("i830DRISwapContext (other)\n"); @@ -1148,47 +1030,39 @@ I830DRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index) { ScreenPtr pScreen = pWin->drawable.pScreen; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - BoxPtr pbox = REGION_RECTS(prgn); - int nbox = REGION_NUM_RECTS(prgn); + BoxPtr pbox; + int nbox; + int buffer, first_buffer, last_buffer; if (I810_DEBUG & DEBUG_VERBOSE_DRI) ErrorF("I830DRIInitBuffers\n"); - I830SetupForSolidFill(pScrn, 0, GXcopy, -1); - while (nbox--) { - I830SelectBuffer(pScrn, I830_SELECT_BACK); - I830SubsequentSolidFillRect(pScrn, pbox->x1, pbox->y1, - pbox->x2 - pbox->x1, pbox->y2 - pbox->y1); + first_buffer = I830_SELECT_BACK; + last_buffer = I830_SELECT_DEPTH; + + for (buffer = first_buffer; buffer <= last_buffer; buffer++) { + pbox = REGION_RECTS(prgn); + nbox = REGION_NUM_RECTS(prgn); + + if (!I830SelectBuffer(pScrn, buffer)) + continue; - if (I830PTR(pScrn)->third_buffer) { - I830SelectBuffer(pScrn, I830_SELECT_THIRD); + if (buffer == I830_SELECT_DEPTH) { + switch (pScrn->bitsPerPixel) { + case 16: + I830SetupForSolidFill(pScrn, 0xffff, GXcopy, -1); + break; + case 32: + I830SetupForSolidFill(pScrn, 0xffffff, GXcopy, -1); + break; + } + } else + I830SetupForSolidFill(pScrn, 0, GXcopy, -1); + while (nbox--) { I830SubsequentSolidFillRect(pScrn, pbox->x1, pbox->y1, pbox->x2 - pbox->x1, pbox->y2 - pbox->y1); + pbox++; } - - pbox++; - } - - /* Clear the depth buffer - uses 0xffff rather than 0. - */ - pbox = REGION_RECTS(prgn); - nbox = REGION_NUM_RECTS(prgn); - - I830SelectBuffer(pScrn, I830_SELECT_DEPTH); - - switch (pScrn->bitsPerPixel) { - case 16: - I830SetupForSolidFill(pScrn, 0xffff, GXcopy, -1); - break; - case 32: - I830SetupForSolidFill(pScrn, 0xffffff, GXcopy, -1); - break; - } - - while (nbox--) { - I830SubsequentSolidFillRect(pScrn, pbox->x1, pbox->y1, - pbox->x2 - pbox->x1, pbox->y2 - pbox->y1); - pbox++; } I830SelectBuffer(pScrn, I830_SELECT_FRONT); @@ -1206,7 +1080,6 @@ I830DRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, { ScreenPtr pScreen = pParent->drawable.pScreen; ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - I830Ptr pI830 = I830PTR(pScrn); BoxPtr pboxTmp, pboxNext, pboxBase; DDXPointPtr pptTmp, pptNew2 = NULL; int xdir, ydir; @@ -1229,6 +1102,7 @@ I830DRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, int dx = pParent->drawable.x - ptOldOrg.x; int dy = pParent->drawable.y - ptOldOrg.y; + int buffer, first_buffer, last_buffer; /* If the copy will overlap in Y, reverse the order */ if (dy > 0) { @@ -1310,44 +1184,45 @@ I830DRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, /* SelectBuffer isn't really a good concept for the i810. */ I830EmitFlush(pScrn); - I830SetupForScreenToScreenCopy(pScrn, xdir, ydir, GXcopy, -1, -1); - for (; nbox--; pbox++) { - - int x1 = pbox->x1; - int y1 = pbox->y1; - int destx = x1 + dx; - int desty = y1 + dy; - int w = pbox->x2 - x1 + 1; - int h = pbox->y2 - y1 + 1; - - if (destx < 0) - x1 -= destx, w += destx, destx = 0; - if (desty < 0) - y1 -= desty, h += desty, desty = 0; - if (destx + w > screenwidth) - w = screenwidth - destx; - if (desty + h > screenheight) - h = screenheight - desty; - if (w <= 0) - continue; - if (h <= 0) - continue; + first_buffer = I830_SELECT_BACK; + last_buffer = I830_SELECT_DEPTH; - if (I810_DEBUG & DEBUG_VERBOSE_DRI) - ErrorF("MoveBuffers %d,%d %dx%d dx: %d dy: %d\n", - x1, y1, w, h, dx, dy); + for (buffer = first_buffer; buffer <= last_buffer; buffer++) { + if (!I830SelectBuffer(pScrn, buffer)) + continue; + I830SetupForScreenToScreenCopy(pScrn, xdir, ydir, GXcopy, -1, -1); + pbox = REGION_RECTS(prgnSrc); + nbox = REGION_NUM_RECTS(prgnSrc); + for (; nbox--; pbox++) { + + int x1 = pbox->x1; + int y1 = pbox->y1; + int destx = x1 + dx; + int desty = y1 + dy; + int w = pbox->x2 - x1 + 1; + int h = pbox->y2 - y1 + 1; + + if (destx < 0) + x1 -= destx, w += destx, destx = 0; + if (desty < 0) + y1 -= desty, h += desty, desty = 0; + if (destx + w > screenwidth) + w = screenwidth - destx; + if (desty + h > screenheight) + h = screenheight - desty; + if (w <= 0) + continue; + if (h <= 0) + continue; + + if (I810_DEBUG & DEBUG_VERBOSE_DRI) + ErrorF("MoveBuffers %d,%d %dx%d dx: %d dy: %d\n", + x1, y1, w, h, dx, dy); - I830SelectBuffer(pScrn, I830_SELECT_BACK); - I830SubsequentScreenToScreenCopy(pScrn, x1, y1, destx, desty, w, h); - if (pI830->third_buffer) { - I830SelectBuffer(pScrn, I830_SELECT_THIRD); I830SubsequentScreenToScreenCopy(pScrn, x1, y1, destx, desty, w, h); } - if (!IS_I965G(pI830)) { - I830SelectBuffer(pScrn, I830_SELECT_DEPTH); - I830SubsequentScreenToScreenCopy(pScrn, x1, y1, destx, desty, w, h); - } } + I830SelectBuffer(pScrn, I830_SELECT_FRONT); I830EmitFlush(pScrn); @@ -1362,70 +1237,12 @@ I830DRIMoveBuffers(WindowPtr pParent, DDXPointRec ptOldOrg, i830MarkSync(pScrn); } -/* Use callbacks from dri.c to support pageflipping mode for a single - * 3d context without need for any specific full-screen extension. - * - * Also see tdfx driver for example of using these callbacks to - * allocate and free 3d-specific memory on demand. - */ - -/* Use the miext/shadow module to maintain a list of dirty rectangles. - * These are blitted to the back buffer to keep both buffers clean - * during page-flipping when the 3d application isn't fullscreen. - * - * Unlike most use of the shadow code, both buffers are in video - * memory. - * - * An alternative to this would be to organize for all on-screen - * drawing operations to be duplicated for the two buffers. That - * might be faster, but seems like a lot more work... - */ - -static void -I830DRISetPfMask(ScreenPtr pScreen, int pfMask) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - I830Ptr pI830 = I830PTR(pScrn); - drmI830Sarea *pSAREAPriv = DRIGetSAREAPrivate(pScreen); - - if (pI830->allowPageFlip && pfMask) { - pSAREAPriv->pf_enabled = pI830->allowPageFlip; - pSAREAPriv->pf_active = pfMask; - } else - pSAREAPriv->pf_active = 0; -} - -#if !DRI_SUPPORTS_CLIP_NOTIFY -static void -I830DRITransitionSingleToMulti3d(ScreenPtr pScreen) -{ - /* Tell the clients not to pageflip. How? - * -- Field in sarea, plus bumping the window counters. - * -- DRM needs to cope with Front-to-Back swapbuffers. - */ - I830DRISetPfMask(pScreen, 0); -} - -static void -I830DRITransitionMultiToSingle3d(ScreenPtr pScreen) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - I830Ptr pI830 = I830PTR(pScrn); - - /* Let the remaining 3d app start page flipping again. - */ - I830DRISetPfMask(pScreen, pI830->allowPageFlip ? 0x3 : 0); -} -#endif /* !DRI_SUPPORTS_CLIP_NOTIFY */ - static void I830DRITransitionTo3d(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - I830DRISetPfMask(pScreen, pI830->allowPageFlip ? 0x3 : 0); - pI830->want_vblank_interrupts = TRUE; I830DRISetVBlankInterrupt(pScrn, TRUE); } @@ -1435,66 +1252,31 @@ I830DRITransitionTo2d(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - drmI830Sarea *sPriv = (drmI830Sarea *) DRIGetSAREAPrivate(pScreen); - - I830DRISetPfMask(pScreen, 0); - - sPriv->pf_enabled = 0; pI830->want_vblank_interrupts = FALSE; I830DRISetVBlankInterrupt(pScrn, FALSE); } -#if DRI_SUPPORTS_CLIP_NOTIFY -static void -I830DRIClipNotify(ScreenPtr pScreen, WindowPtr *ppWin, int num) +static int +i830_name_buffer (ScrnInfoPtr pScrn, i830_memory *mem) { - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - I830Ptr pI830 = I830PTR(pScrn); - unsigned pfMask = 0; - - REGION_UNINIT(pScreen, &pI830->driRegion); - REGION_NULL(pScreen, &pI830->driRegion); - - if (num > 0) { - drmI830Sarea *sPriv = (drmI830Sarea *) DRIGetSAREAPrivate(pScreen); - BoxRec crtcBox[2]; - unsigned numvisible[2] = { 0, 0 }; - int i, j; - - crtcBox[0].x1 = sPriv->planeA_x; - crtcBox[0].y1 = sPriv->planeA_y; - crtcBox[0].x2 = crtcBox[0].x1 + sPriv->planeA_w; - crtcBox[0].y2 = crtcBox[0].y1 + sPriv->planeA_h; - crtcBox[1].x1 = sPriv->planeB_x; - crtcBox[1].y1 = sPriv->planeB_y; - crtcBox[1].x2 = crtcBox[1].x1 + sPriv->planeB_w; - crtcBox[1].y2 = crtcBox[1].y1 + sPriv->planeB_h; - - for (i = 0; i < 2; i++) { - for (j = 0; j < num; j++) { - WindowPtr pWin = ppWin[j]; - - if (pWin) { - if (RECT_IN_REGION(pScreen, &pWin->clipList, &crtcBox[i]) != - rgnOUT) - numvisible[i]++; - - if (i == 0) - REGION_UNION(pScreen, &pI830->driRegion, &pWin->clipList, - &pI830->driRegion); + if (mem && mem->bo) + { + if (!mem->gem_name) + { + int ret; + ret = dri_bo_flink(mem->bo, &mem->gem_name); + if (ret != 0) + { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[drm] failed to name buffer %d\n", -errno); + return -1; } - } - - if (numvisible[i] == 1) - pfMask |= 1 << i; - } - } else - REGION_NULL(pScreen, &pI830->driRegion); - - I830DRISetPfMask(pScreen, pfMask); + } + return mem->gem_name; + } + return -1; } -#endif /* DRI_SUPPORTS_CLIP_NOTIFY */ /** * Update the SAREA fields with current buffer information. @@ -1510,6 +1292,9 @@ i830_update_sarea(ScrnInfoPtr pScrn, drmI830Sarea *sarea) ScreenPtr pScreen = pScrn->pScreen; I830Ptr pI830 = I830PTR(pScrn); + if (pI830->directRenderingType == DRI_DRI2) + return; + sarea->width = pScreen->width; sarea->height = pScreen->height; sarea->pitch = pScrn->displayWidth; @@ -1518,29 +1303,14 @@ i830_update_sarea(ScrnInfoPtr pScrn, drmI830Sarea *sarea) sarea->front_tiled = (pI830->front_buffer->tiling != TILE_NONE); sarea->back_tiled = (pI830->back_buffer->tiling != TILE_NONE); - if (pI830->third_buffer != NULL) - sarea->third_tiled = (pI830->third_buffer->tiling != TILE_NONE); - else - sarea->third_tiled = FALSE; sarea->depth_tiled = (pI830->depth_buffer->tiling != TILE_NONE); sarea->rotated_tiled = FALSE; sarea->log_tex_granularity = pI830->TexGranularity; - sarea->front_bo_handle = -1; - sarea->back_bo_handle = -1; - sarea->third_bo_handle = -1; - sarea->depth_bo_handle = -1; -#ifdef XF86DRI_MM - if (pI830->front_buffer->bo.size) - sarea->front_bo_handle = pI830->front_buffer->bo.handle; - if (pI830->back_buffer->bo.size) - sarea->back_bo_handle = pI830->back_buffer->bo.handle; - if (pI830->third_buffer != NULL && pI830->third_buffer->bo.size) - sarea->third_bo_handle = pI830->third_buffer->bo.handle; - if (pI830->depth_buffer->bo.size) - sarea->depth_bo_handle = pI830->depth_buffer->bo.handle; -#endif + sarea->front_bo_handle = i830_name_buffer (pScrn, pI830->front_buffer); + sarea->back_bo_handle = i830_name_buffer (pScrn, pI830->back_buffer); + sarea->depth_bo_handle = i830_name_buffer (pScrn, pI830->depth_buffer); /* The rotation is now handled entirely by the X Server, so just leave the * DRI unaware. @@ -1629,17 +1399,9 @@ i830_update_dri_mappings(ScrnInfoPtr pScrn, drmI830Sarea *sarea) return FALSE; } - if (pI830->third_buffer) { - if (!i830_do_addmap(pScrn, pI830->third_buffer, &sarea->third_handle, - &sarea->third_size, &sarea->third_offset)) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Disabling DRI.\n"); - return FALSE; - } - } else { - sarea->third_handle = 0; - sarea->third_offset = 0; - sarea->third_size = 0; - } + sarea->third_handle = 0; + sarea->third_offset = 0; + sarea->third_size = 0; if (!i830_do_addmap(pScrn, pI830->depth_buffer, &sarea->depth_handle, &sarea->depth_size, &sarea->depth_offset)) { @@ -1682,9 +1444,15 @@ Bool i830_update_dri_buffers(ScrnInfoPtr pScrn) { ScreenPtr pScreen = pScrn->pScreen; - drmI830Sarea *sarea = (drmI830Sarea *) DRIGetSAREAPrivate(pScreen); + I830Ptr pI830 = I830PTR(pScrn); + drmI830Sarea *sarea; Bool success; + if (pI830->directRenderingType != DRI_XF86DRI) + return TRUE; + + sarea = (drmI830Sarea *) DRIGetSAREAPrivate(pScreen); + success = i830_update_dri_mappings(pScrn, sarea); if (!success) return FALSE; @@ -1707,7 +1475,7 @@ I830DRISetVBlankInterrupt (ScrnInfoPtr pScrn, Bool on) if (!pI830->want_vblank_interrupts) on = FALSE; - if (pI830->directRenderingEnabled && pI830->drmMinor >= 5) { + if (pI830->directRenderingType == DRI_XF86DRI && pI830->drmMinor >= 5) { if (on) { if (xf86_config->num_crtc > 1 && xf86_config->crtc[1]->enabled) if (pI830->drmMinor >= 6) @@ -1733,10 +1501,11 @@ I830DRILock(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - if (pI830->directRenderingEnabled && !pI830->LockHeld) { + if (pI830->directRenderingType == DRI_XF86DRI && !pI830->LockHeld) { DRILock(screenInfo.screens[pScrn->scrnIndex], 0); pI830->LockHeld = 1; - i830_refresh_ring(pScrn); + if (!pI830->memory_manager) + i830_refresh_ring(pScrn); return TRUE; } else @@ -1750,8 +1519,235 @@ I830DRIUnlock(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - if (pI830->directRenderingEnabled && pI830->LockHeld) { + if (pI830->directRenderingType == DRI_XF86DRI && pI830->LockHeld) { DRIUnlock(screenInfo.screens[pScrn->scrnIndex]); pI830->LockHeld = 0; } } + +#ifdef DRI2 + +typedef struct { + PixmapPtr pPixmap; +} I830DRI2BufferPrivateRec, *I830DRI2BufferPrivatePtr; + +static DRI2BufferPtr +I830DRI2CreateBuffers(DrawablePtr pDraw, unsigned int *attachments, int count) +{ + ScreenPtr pScreen = pDraw->pScreen; + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); + DRI2BufferPtr buffers; + dri_bo *bo; + int i; + I830DRI2BufferPrivatePtr privates; + PixmapPtr pPixmap, pDepthPixmap; + + buffers = xcalloc(count, sizeof *buffers); + if (buffers == NULL) + return NULL; + privates = xcalloc(count, sizeof *privates); + if (privates == NULL) { + xfree(buffers); + return NULL; + } + + pDepthPixmap = NULL; + for (i = 0; i < count; i++) { + if (attachments[i] == DRI2BufferFrontLeft) { + if (pDraw->type == DRAWABLE_PIXMAP) + pPixmap = (PixmapPtr) pDraw; + else + pPixmap = (*pScreen->GetWindowPixmap)((WindowPtr) pDraw); + pPixmap->refcnt++; + } else if (attachments[i] == DRI2BufferStencil && pDepthPixmap) { + pPixmap = pDepthPixmap; + pPixmap->refcnt++; + } else { + unsigned int hint = 0; + + switch (attachments[i]) { + case DRI2BufferDepth: + if (SUPPORTS_YTILING(pI830)) + hint = INTEL_CREATE_PIXMAP_TILING_Y; + else + hint = INTEL_CREATE_PIXMAP_TILING_X; + break; + case DRI2BufferFakeFrontLeft: + case DRI2BufferFakeFrontRight: + case DRI2BufferBackLeft: + case DRI2BufferBackRight: + hint = INTEL_CREATE_PIXMAP_TILING_X; + break; + } + + if (!pI830->tiling || + (!IS_I965G(pI830) && !pI830->kernel_exec_fencing)) + hint = 0; + + pPixmap = (*pScreen->CreatePixmap)(pScreen, + pDraw->width, + pDraw->height, + pDraw->depth, + hint); + + } + + if (attachments[i] == DRI2BufferDepth) + pDepthPixmap = pPixmap; + + buffers[i].attachment = attachments[i]; + buffers[i].pitch = pPixmap->devKind; + buffers[i].cpp = pPixmap->drawable.bitsPerPixel / 8; + buffers[i].driverPrivate = &privates[i]; + buffers[i].flags = 0; /* not tiled */ + privates[i].pPixmap = pPixmap; + + bo = i830_get_pixmap_bo (pPixmap); + if (dri_bo_flink(bo, &buffers[i].name) != 0) { + /* failed to name buffer */ + } + + } + + return buffers; +} + +static void +I830DRI2DestroyBuffers(DrawablePtr pDraw, DRI2BufferPtr buffers, int count) +{ + ScreenPtr pScreen = pDraw->pScreen; + I830DRI2BufferPrivatePtr private; + int i; + + for (i = 0; i < count; i++) + { + private = buffers[i].driverPrivate; + (*pScreen->DestroyPixmap)(private->pPixmap); + } + + if (buffers) + { + xfree(buffers[0].driverPrivate); + xfree(buffers); + } +} + +static void +I830DRI2CopyRegion(DrawablePtr pDraw, RegionPtr pRegion, + DRI2BufferPtr pDestBuffer, DRI2BufferPtr pSrcBuffer) +{ + I830DRI2BufferPrivatePtr private = pSrcBuffer->driverPrivate; + ScreenPtr pScreen = pDraw->pScreen; + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); + PixmapPtr pPixmap = private->pPixmap; + RegionPtr pCopyClip; + GCPtr pGC; + + pGC = GetScratchGC(pDraw->depth, pScreen); + pCopyClip = REGION_CREATE(pScreen, NULL, 0); + REGION_COPY(pScreen, pCopyClip, pRegion); + (*pGC->funcs->ChangeClip) (pGC, CT_REGION, pCopyClip, 0); + ValidateGC(pDraw, pGC); + (*pGC->ops->CopyArea)(&pPixmap->drawable, + pDraw, pGC, 0, 0, pDraw->width, pDraw->height, 0, 0); + FreeScratchGC(pGC); + + /* Emit a flush of the rendering cache, or on the 965 and beyond + * rendering results may not hit the framebuffer until significantly + * later. + */ + I830EmitFlush(pScrn); + pI830->need_mi_flush = FALSE; + + /* We can't rely on getting into the block handler before the DRI + * client gets to run again so flush now. */ + intel_batch_flush(pScrn, TRUE); +#if ALWAYS_SYNC + I830Sync(pScrn); +#endif + drmCommandNone(pI830->drmSubFD, DRM_I915_GEM_THROTTLE); + +} + +Bool I830DRI2ScreenInit(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); + DRI2InfoRec info; + char *p, buf[64]; + int i; + struct stat sbuf; + dev_t d; + + if (pI830->accel != ACCEL_UXA) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "DRI2 requires UXA\n"); + return FALSE; + } + + sprintf(buf, "pci:%04x:%02x:%02x.%d", + pI830->PciInfo->domain, + pI830->PciInfo->bus, + pI830->PciInfo->dev, + pI830->PciInfo->func); + + info.fd = -1; + +#ifdef XF86DRM_MODE + /* Use the already opened (master) fd from modesetting */ + if (pI830->use_drm_mode) + info.fd = pI830->drmSubFD; +#endif + + if (info.fd < 0) + info.fd = drmOpen("i915", buf); + + if (info.fd < 0) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Failed to open DRM device\n"); + return FALSE; + } + + /* The whole drmOpen thing is a fiasco and we need to find a way + * back to just using open(2). For now, however, lets just make + * things worse with even more ad hoc directory walking code to + * discover the device file name. */ + + fstat(info.fd, &sbuf); + d = sbuf.st_rdev; + + p = pI830->deviceName; + for (i = 0; i < DRM_MAX_MINOR; i++) { + sprintf(p, DRM_DEV_NAME, DRM_DIR_NAME, i); + if (stat(p, &sbuf) == 0 && sbuf.st_rdev == d) + break; + } + if (i == DRM_MAX_MINOR) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "DRI2: failed to open drm device\n"); + return FALSE; + } + + info.driverName = IS_I965G(pI830) ? "i965" : "i915"; + info.deviceName = p; + info.version = 1; + + info.CreateBuffers = I830DRI2CreateBuffers; + info.DestroyBuffers = I830DRI2DestroyBuffers; + info.CopyRegion = I830DRI2CopyRegion; + + pI830->drmSubFD = info.fd; + + return DRI2ScreenInit(pScreen, &info); +} + +void I830DRI2CloseScreen(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); + + DRI2CloseScreen(pScreen); + pI830->directRenderingType = DRI_NONE; +} + +#endif diff --git a/driver/xf86-video-intel/src/i830_dri.h b/driver/xf86-video-intel/src/i830_dri.h index a14049784..83ddd8572 100644 --- a/driver/xf86-video-intel/src/i830_dri.h +++ b/driver/xf86-video-intel/src/i830_dri.h @@ -9,8 +9,8 @@ #define I830_MAX_DRAWABLES 256 #define I830_MAJOR_VERSION 1 -#define I830_MINOR_VERSION 7 -#define I830_PATCHLEVEL 2 +#define I830_MINOR_VERSION 9 +#define I830_PATCHLEVEL 0 #define I830_REG_SIZE 0x80000 @@ -59,5 +59,4 @@ typedef struct { int dummy; } I830DRIContextRec, *I830DRIContextPtr; - #endif diff --git a/driver/xf86-video-intel/src/i830_driver.c b/driver/xf86-video-intel/src/i830_driver.c index 0a747c1d8..9b580bd66 100644 --- a/driver/xf86-video-intel/src/i830_driver.c +++ b/driver/xf86-video-intel/src/i830_driver.c @@ -177,6 +177,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "xf86_OSproc.h" #include "xf86Resources.h" #include "xf86RAC.h" +#include "xf86Priv.h" #include "xf86cmap.h" #include "compiler.h" #include "mibstore.h" @@ -190,7 +191,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "dixstruct.h" #include "xf86xv.h" #include <X11/extensions/Xv.h> -#include "vbe.h" #include "shadow.h" #include "i830.h" #include "i830_display.h" @@ -209,9 +209,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #ifdef XF86DRI #include "dri.h" #include <sys/ioctl.h> -#ifdef XF86DRI_MM -#include "xf86mm.h" +#include "i915_drm.h" #endif + +#ifdef XF86DRM_MODE +#include <xf86drmMode.h> #endif #ifdef I830_USE_EXA @@ -242,6 +244,8 @@ static SymTabRec I830Chipsets[] = { {PCI_CHIP_I945_G, "945G"}, {PCI_CHIP_I945_GM, "945GM"}, {PCI_CHIP_I945_GME, "945GME"}, + {PCI_CHIP_IGD_GM, "IGD"}, + {PCI_CHIP_IGD_G, "IGD"}, {PCI_CHIP_I965_G, "965G"}, {PCI_CHIP_G35_G, "G35"}, {PCI_CHIP_I965_Q, "965Q"}, @@ -255,6 +259,7 @@ static SymTabRec I830Chipsets[] = { {PCI_CHIP_IGD_E_G, "Intel Integrated Graphics Device"}, {PCI_CHIP_G45_G, "G45/G43"}, {PCI_CHIP_Q45_G, "Q45/Q43"}, + {PCI_CHIP_G41_G, "G41"}, {-1, NULL} }; @@ -269,6 +274,8 @@ static PciChipsets I830PciChipsets[] = { {PCI_CHIP_I945_G, PCI_CHIP_I945_G, RES_SHARED_VGA}, {PCI_CHIP_I945_GM, PCI_CHIP_I945_GM, RES_SHARED_VGA}, {PCI_CHIP_I945_GME, PCI_CHIP_I945_GME, RES_SHARED_VGA}, + {PCI_CHIP_IGD_GM, PCI_CHIP_IGD_GM, RES_SHARED_VGA}, + {PCI_CHIP_IGD_G, PCI_CHIP_IGD_G, RES_SHARED_VGA}, {PCI_CHIP_I965_G, PCI_CHIP_I965_G, RES_SHARED_VGA}, {PCI_CHIP_G35_G, PCI_CHIP_G35_G, RES_SHARED_VGA}, {PCI_CHIP_I965_Q, PCI_CHIP_I965_Q, RES_SHARED_VGA}, @@ -282,6 +289,7 @@ static PciChipsets I830PciChipsets[] = { {PCI_CHIP_IGD_E_G, PCI_CHIP_IGD_E_G, RES_SHARED_VGA}, {PCI_CHIP_G45_G, PCI_CHIP_G45_G, RES_SHARED_VGA}, {PCI_CHIP_Q45_G, PCI_CHIP_Q45_G, RES_SHARED_VGA}, + {PCI_CHIP_G41_G, PCI_CHIP_G41_G, RES_SHARED_VGA}, {-1, -1, RES_UNDEFINED} }; @@ -292,59 +300,43 @@ static PciChipsets I830PciChipsets[] = { */ typedef enum { -#if defined(I830_USE_XAA) && defined(I830_USE_EXA) OPTION_ACCELMETHOD, -#endif OPTION_NOACCEL, - OPTION_SW_CURSOR, OPTION_CACHE_LINES, OPTION_DRI, - OPTION_PAGEFLIP, - OPTION_XVIDEO, OPTION_VIDEO_KEY, OPTION_COLOR_KEY, - OPTION_CHECKDEVICES, OPTION_MODEDEBUG, + OPTION_FALLBACKDEBUG, OPTION_LVDS24BITMODE, OPTION_FBC, OPTION_TILING, -#ifdef XF86DRI_MM - OPTION_INTELTEXPOOL, -#endif OPTION_LVDSFIXEDMODE, - OPTION_TRIPLEBUFFER, OPTION_FORCEENABLEPIPEA, #ifdef INTEL_XVMC OPTION_XVMC, #endif + OPTION_PREFER_OVERLAY, } I830Opts; static OptionInfoRec I830Options[] = { -#if defined(I830_USE_XAA) && defined(I830_USE_EXA) {OPTION_ACCELMETHOD, "AccelMethod", OPTV_ANYSTR, {0}, FALSE}, -#endif {OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE}, - {OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE}, {OPTION_CACHE_LINES, "CacheLines", OPTV_INTEGER, {0}, FALSE}, {OPTION_DRI, "DRI", OPTV_BOOLEAN, {0}, TRUE}, - {OPTION_PAGEFLIP, "PageFlip", OPTV_BOOLEAN, {0}, FALSE}, - {OPTION_XVIDEO, "XVideo", OPTV_BOOLEAN, {0}, TRUE}, {OPTION_COLOR_KEY, "ColorKey", OPTV_INTEGER, {0}, FALSE}, {OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE}, - {OPTION_CHECKDEVICES, "CheckDevices",OPTV_BOOLEAN, {0}, FALSE}, {OPTION_MODEDEBUG, "ModeDebug", OPTV_BOOLEAN, {0}, FALSE}, + {OPTION_FALLBACKDEBUG, "FallbackDebug", OPTV_BOOLEAN, {0}, FALSE}, {OPTION_LVDS24BITMODE, "LVDS24Bit", OPTV_BOOLEAN, {0}, FALSE}, {OPTION_FBC, "FramebufferCompression", OPTV_BOOLEAN, {0}, TRUE}, {OPTION_TILING, "Tiling", OPTV_BOOLEAN, {0}, TRUE}, -#ifdef XF86DRI_MM - {OPTION_INTELTEXPOOL,"Legacy3D", OPTV_BOOLEAN, {0}, FALSE}, -#endif {OPTION_LVDSFIXEDMODE, "LVDSFixedMode", OPTV_BOOLEAN, {0}, FALSE}, - {OPTION_TRIPLEBUFFER, "TripleBuffer", OPTV_BOOLEAN, {0}, FALSE}, {OPTION_FORCEENABLEPIPEA, "ForceEnablePipeA", OPTV_BOOLEAN, {0}, FALSE}, #ifdef INTEL_XVMC {OPTION_XVMC, "XvMC", OPTV_BOOLEAN, {0}, TRUE}, #endif + {OPTION_PREFER_OVERLAY, "XvPreferOverlay", OPTV_BOOLEAN, {0}, FALSE}, {-1, NULL, OPTV_NONE, {0}, FALSE} }; /* *INDENT-ON* */ @@ -361,7 +353,6 @@ const char *i830_output_type_names[] = { static void i830AdjustFrame(int scrnIndex, int x, int y, int flags); static Bool I830CloseScreen(int scrnIndex, ScreenPtr pScreen); static Bool I830EnterVT(int scrnIndex, int flags); -static CARD32 I830CheckDevicesTimer(OsTimerPtr timer, CARD32 now, pointer arg); static Bool SaveHWState(ScrnInfoPtr pScrn); static Bool RestoreHWState(ScrnInfoPtr pScrn); @@ -432,17 +423,6 @@ I830FreeRec(ScrnInfoPtr pScrn) pScrn->driverPrivate = NULL; } -static void -I830ProbeDDC(ScrnInfoPtr pScrn, int index) -{ - vbeInfoPtr pVbe; - - /* The vbe module gets loaded in PreInit(), so no need to load it here. */ - - pVbe = VBEInit(NULL, index); - ConfiguredMonitor = vbeDoEDID(pVbe, NULL); -} - static int I830DetectMemory(ScrnInfoPtr pScrn) { @@ -453,9 +433,6 @@ I830DetectMemory(ScrnInfoPtr pScrn) uint16_t gmch_ctrl; int memsize = 0, gtt_size; int range; -#if 0 - VbeInfoBlock *vbeInfo; -#endif #if XSERVER_LIBPCIACCESS struct pci_device *bridge = intel_host_bridge (); @@ -518,7 +495,7 @@ I830DetectMemory(ScrnInfoPtr pScrn) range = gtt_size + 4; /* new 4 series hardware has seperate GTT stolen with GFX stolen */ - if (IS_G4X(pI830) || IS_GM45(pI830)) + if (IS_G4X(pI830) || IS_IGD(pI830)) range = 4; if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I9XX(pI830)) { @@ -653,7 +630,7 @@ I830MapMMIO(ScrnInfoPtr pScrn) if (IS_I965G(pI830)) { - if (IS_GM45(pI830) || IS_G4X(pI830)) { + if (IS_G4X(pI830)) { gttaddr = pI830->MMIOAddr + MB(2); pI830->GTTMapSize = MB(2); } else { @@ -726,9 +703,8 @@ I830MapMem(ScrnInfoPtr pScrn) return FALSE; #endif - if (I830IsPrimary(pScrn) && pI830->LpRing->mem != NULL) { - pI830->LpRing->virtual_start = - pI830->FbBase + pI830->LpRing->mem->offset; + if (pI830->ring.mem != NULL) { + pI830->ring.virtual_start = pI830->FbBase + pI830->ring.mem->offset; } return TRUE; @@ -841,27 +817,47 @@ I830LoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, } } -static void +void i830_update_front_offset(ScrnInfoPtr pScrn) { ScreenPtr pScreen = pScrn->pScreen; I830Ptr pI830 = I830PTR(pScrn); + int pitch = pScrn->displayWidth * pI830->cpp; + pointer data = NULL; /* Update buffer locations, which may have changed as a result of * i830_bind_all_memory(). */ pScrn->fbOffset = pI830->front_buffer->offset; + if (pI830->starting || pI830->accel == ACCEL_UXA) + return; + /* If we are still in ScreenInit, there is no screen pixmap to be updated * yet. We'll fix it up at CreateScreenResources. */ - if (!pI830->starting) { - if (!pScreen->ModifyPixmapHeader(pScreen->GetScreenPixmap(pScreen), - -1, -1, -1, -1, -1, - (pointer)(pI830->FbBase + - pScrn->fbOffset))) - FatalError("Couldn't adjust screen pixmap\n"); + if (!pI830->memory_manager) { + data = pI830->FbBase + pScrn->fbOffset; /* default to legacy */ + } else { + dri_bo *bo = pI830->front_buffer->bo; + + if (bo) { + if (pI830->kernel_exec_fencing) { + if (drm_intel_gem_bo_map_gtt(bo)) + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "%s: bo map failed\n", + __FUNCTION__); + data = bo->virtual; + } else { + /* Will already be pinned by bind_all_memory in this case */ + drm_intel_gem_bo_start_gtt_access(bo, 1); + data = pI830->FbBase + bo->offset; + } + } } + if (!pScreen->ModifyPixmapHeader(pScreen->GetScreenPixmap(pScreen), + pScrn->virtualX, pScrn->virtualY, -1, -1, + pitch, data)) + FatalError("Couldn't adjust screen pixmap\n"); } /** @@ -882,6 +878,10 @@ i830CreateScreenResources(ScreenPtr pScreen) i830_update_front_offset(pScrn); +#ifdef I830_USE_UXA + if (pI830->accel == ACCEL_UXA) + i830_uxa_create_screen_resources(pScreen); +#endif return TRUE; } @@ -924,19 +924,21 @@ I830SetupOutputs(ScrnInfoPtr pScrn) i830_lvds_init(pScrn); if (IS_I9XX(pI830)) { - if (INREG(SDVOB) & SDVO_DETECTED) { - Bool found = i830_sdvo_init(pScrn, SDVOB); + Bool found = FALSE; + if ((INREG(SDVOB) & SDVO_DETECTED)) { + found = i830_sdvo_init(pScrn, SDVOB); if (!found && SUPPORTS_INTEGRATED_HDMI(pI830)) i830_hdmi_init(pScrn, SDVOB); } - if (INREG(SDVOC) & SDVO_DETECTED) { - Bool found = i830_sdvo_init(pScrn, SDVOC); + if ((INREG(SDVOB) & SDVO_DETECTED)) + found = i830_sdvo_init(pScrn, SDVOC); + + if ((INREG(SDVOC) & SDVO_DETECTED) && + !found && SUPPORTS_INTEGRATED_HDMI(pI830)) + i830_hdmi_init(pScrn, SDVOC); - if (!found && SUPPORTS_INTEGRATED_HDMI(pI830)) - i830_hdmi_init(pScrn, SDVOC); - } } else { i830_dvo_init(pScrn); } @@ -973,13 +975,19 @@ i830_init_clock_gating(ScrnInfoPtr pScrn) /* Disable clock gating reported to work incorrectly according to the specs. */ - if (IS_GM45(pI830) || IS_G4X(pI830)) { + if (IS_G4X(pI830)) { + uint32_t dspclk_gate; OUTREG(RENCLK_GATE_D1, 0); - OUTREG(RENCLK_GATE_D2, 0); + OUTREG(RENCLK_GATE_D2, VF_UNIT_CLOCK_GATE_DISABLE | + GS_UNIT_CLOCK_GATE_DISABLE | + CL_UNIT_CLOCK_GATE_DISABLE); OUTREG(RAMCLK_GATE_D, 0); - OUTREG(DSPCLK_GATE_D, VRHUNIT_CLOCK_GATE_DISABLE | - OVRUNIT_CLOCK_GATE_DISABLE | - OVCUNIT_CLOCK_GATE_DISABLE); + dspclk_gate = VRHUNIT_CLOCK_GATE_DISABLE | + OVRUNIT_CLOCK_GATE_DISABLE | + OVCUNIT_CLOCK_GATE_DISABLE; + if (IS_GM45(pI830)) + dspclk_gate |= DSSUNIT_CLOCK_GATE_DISABLE; + OUTREG(DSPCLK_GATE_D, dspclk_gate); } else if (IS_I965GM(pI830)) { OUTREG(RENCLK_GATE_D1, I965_RCC_CLOCK_GATE_DISABLE); OUTREG(RENCLK_GATE_D2, 0); @@ -1064,36 +1072,113 @@ PreInitCleanup(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - if (I830IsPrimary(pScrn)) { - if (pI830->entityPrivate) - pI830->entityPrivate->pScrn_1 = NULL; - } else { - if (pI830->entityPrivate) - pI830->entityPrivate->pScrn_2 = NULL; - } if (pI830->MMIOBase) I830UnmapMMIO(pScrn); I830FreeRec(pScrn); } +/* + * Adjust *width to allow for tiling if possible + */ Bool -I830IsPrimary(ScrnInfoPtr pScrn) +i830_tiled_width(I830Ptr i830, int *width, int cpp) { - I830Ptr pI830 = I830PTR(pScrn); + Bool tiled = FALSE; - if (xf86IsEntityShared(pScrn->entityList[0])) { - if (pI830->init == 0) return TRUE; - else return FALSE; - } + /* + * Adjust the display width to allow for front buffer tiling if possible + */ + if (i830->tiling) { + if (IS_I965G(i830)) { + int tile_pixels = 512 / cpp; + *width = (*width + tile_pixels - 1) & + ~(tile_pixels - 1); + tiled = TRUE; + } else { + /* Good pitches to allow tiling. Don't care about pitches < 1024 + * pixels. + */ + static const int pitches[] = { + 1024, + 2048, + 4096, + 8192, + 0 + }; + int i; - return TRUE; + for (i = 0; pitches[i] != 0; i++) { + if (pitches[i] >= *width) { + *width = pitches[i]; + tiled = TRUE; + break; + } + } + } + } + return tiled; +} + +/* + * Pad to accelerator requirement + */ +int +i830_pad_drawable_width(int width, int cpp) +{ + return (width + 63) & ~63; } static Bool i830_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height) { +#ifdef DRI2 + I830Ptr i830 = I830PTR(scrn); + int old_width = scrn->displayWidth; +#endif + int old_x = scrn->virtualX; + int old_y = scrn->virtualY; + + if (old_x == width && old_y == height) + return TRUE; + scrn->virtualX = width; scrn->virtualY = height; +#ifdef DRI2 + if (i830->can_resize && i830->front_buffer) + { + i830_memory *new_front, *old_front; + Bool tiled; + ScreenPtr screen = screenInfo.screens[scrn->scrnIndex]; + + scrn->displayWidth = i830_pad_drawable_width(width, i830->cpp); + tiled = i830_tiled_width(i830, &scrn->displayWidth, i830->cpp); + xf86DrvMsg(scrn->scrnIndex, X_INFO, "Allocate new frame buffer %dx%d stride %d\n", + width, height, scrn->displayWidth); + I830Sync(scrn); + i830WaitForVblank(scrn); + new_front = i830_allocate_framebuffer(scrn); + if (!new_front) { + scrn->virtualX = old_x; + scrn->virtualY = old_y; + scrn->displayWidth = old_width; + return FALSE; + } + old_front = i830->front_buffer; + i830->front_buffer = new_front; + i830_set_pixmap_bo(screen->GetScreenPixmap(screen), + new_front->bo); + scrn->fbOffset = i830->front_buffer->offset; + screen->ModifyPixmapHeader(screen->GetScreenPixmap(screen), + width, height, -1, -1, scrn->displayWidth * i830->cpp, + NULL); + xf86DrvMsg(scrn->scrnIndex, X_INFO, "New front buffer at 0x%lx\n", + i830->front_buffer->offset); + i830_set_new_crtc_bo(scrn); + I830Sync(scrn); + i830WaitForVblank(scrn); + i830_free_memory(scrn, old_front); + } +#endif return TRUE; } @@ -1118,6 +1203,10 @@ i830SetHotkeyControl(ScrnInfoPtr pScrn, int mode) I830Ptr pI830 = I830PTR(pScrn); uint8_t gr18; + /* Don't mess with kernel settings... */ + if (pI830->use_drm_mode) + return; + gr18 = pI830->readControl(pI830, GRX, 0x18); if (mode == HOTKEY_BIOS_SWITCH) gr18 &= ~HOTKEY_VBIOS_SWITCH_BLOCK; @@ -1126,6 +1215,41 @@ i830SetHotkeyControl(ScrnInfoPtr pScrn, int mode) pI830->writeControl(pI830, GRX, 0x18, gr18); } +#ifdef XF86DRM_MODE +/* + * DRM mode setting Linux only at this point... later on we could + * add a wrapper here. + */ +static Bool i830_kernel_mode_enabled(ScrnInfoPtr pScrn) +{ +#if XSERVER_LIBPCIACCESS + struct pci_device *PciInfo; +#else + pciVideoPtr PciInfo; +#endif + EntityInfoPtr pEnt; + char *busIdString; + int ret; + + pEnt = xf86GetEntityInfo(pScrn->entityList[0]); + PciInfo = xf86GetPciInfoForEntity(pEnt->index); + + if (!xf86LoaderCheckSymbol("DRICreatePCIBusID")) + return FALSE; + + busIdString = DRICreatePCIBusID(PciInfo); + + ret = drmCheckModesettingSupported(busIdString); + xfree(busIdString); + if (ret) + return FALSE; + + return TRUE; +} +#else +#define i830_kernel_mode_enabled(x) FALSE +#endif + static Bool i830_detect_chipset(ScrnInfoPtr pScrn) { @@ -1135,6 +1259,11 @@ i830_detect_chipset(ScrnInfoPtr pScrn) uint32_t capid; int fb_bar, mmio_bar; + + /* We have to use PIO to probe, because we haven't mapped yet. */ + if (!pI830->use_drm_mode) + I830SetPIOAccess(pI830); + switch (DEVICE_ID(pI830->PciInfo)) { case PCI_CHIP_I830_M: chipname = "830M"; @@ -1191,6 +1320,12 @@ i830_detect_chipset(ScrnInfoPtr pScrn) case PCI_CHIP_I945_GME: chipname = "945GME"; break; + case PCI_CHIP_IGD_GM: + chipname = "IGD"; + break; + case PCI_CHIP_IGD_G: + chipname = "IGD"; + break; case PCI_CHIP_I965_G: chipname = "965G"; break; @@ -1230,6 +1365,9 @@ i830_detect_chipset(ScrnInfoPtr pScrn) case PCI_CHIP_Q45_G: chipname = "Q45/Q43"; break; + case PCI_CHIP_G41_G: + chipname = "G41"; + break; default: chipname = "unknown chipset"; break; @@ -1262,6 +1400,19 @@ i830_detect_chipset(ScrnInfoPtr pScrn) xf86DrvMsg(pScrn->scrnIndex, from, "Chipset: \"%s\"\n", (pScrn->chipset != NULL) ? pScrn->chipset : "Unknown i8xx"); + /* Check if the HW cursor needs physical address. */ + if (IS_MOBILE(pI830) || IS_I9XX(pI830)) + pI830->CursorNeedsPhysical = TRUE; + else + pI830->CursorNeedsPhysical = FALSE; + + if (IS_I965G(pI830) || IS_G33CLASS(pI830)) + pI830->CursorNeedsPhysical = FALSE; + + /* Skip the rest if the kernel is taking care of things */ + if (pI830->use_drm_mode) + return TRUE; + /* Now that we know the chipset, figure out the resource base addrs */ if (IS_I9XX(pI830)) { fb_bar = 2; @@ -1340,6 +1491,310 @@ i830_detect_chipset(ScrnInfoPtr pScrn) return TRUE; } +static const char *accel_name[] = +{ + "unspecified", + "no", + "XAA", + "EXA", + "UXA", +}; + +static Bool +I830LoadSyms(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + + if (pI830->use_drm_mode) + return TRUE; + + /* The vgahw module should be loaded here when needed */ + if (!xf86LoadSubModule(pScrn, "vgahw")) + return FALSE; + xf86LoaderReqSymLists(I810vgahwSymbols, NULL); + + if (!xf86LoadSubModule(pScrn, "ramdac")) + return FALSE; + xf86LoaderReqSymLists(I810ramdacSymbols, NULL); + + return TRUE; +} + +static Bool +I830GetEarlyOptions(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + + /* Process the options */ + xf86CollectOptions(pScrn, NULL); + if (!(pI830->Options = xalloc(sizeof(I830Options)))) + return FALSE; + memcpy(pI830->Options, I830Options, sizeof(I830Options)); + xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, pI830->Options); + + pI830->fallback_debug = xf86ReturnOptValBool(pI830->Options, + OPTION_FALLBACKDEBUG, FALSE); + + if (xf86ReturnOptValBool(pI830->Options, OPTION_MODEDEBUG, FALSE)) { + pI830->debug_modes = TRUE; + } else { + pI830->debug_modes = FALSE; + } + + if (xf86ReturnOptValBool(pI830->Options, OPTION_LVDS24BITMODE, FALSE)) { + pI830->lvds_24_bit_mode = TRUE; + } else { + pI830->lvds_24_bit_mode = FALSE; + } + + if (xf86ReturnOptValBool(pI830->Options, OPTION_LVDSFIXEDMODE, TRUE)) { + pI830->skip_panel_detect = FALSE; + } else { + pI830->skip_panel_detect = TRUE; + } + + if (xf86ReturnOptValBool(pI830->Options, OPTION_FORCEENABLEPIPEA, FALSE)) + pI830->quirk_flag |= QUIRK_PIPEA_FORCE; + + return TRUE; +} + +static void +I830PreInitCrtcConfig(ScrnInfoPtr pScrn) +{ + xf86CrtcConfigPtr xf86_config; + I830Ptr pI830 = I830PTR(pScrn); + int max_width, max_height; + + /* check quirks */ + i830_fixup_devices(pScrn); + + /* Allocate an xf86CrtcConfig */ + xf86CrtcConfigInit (pScrn, &i830_xf86crtc_config_funcs); + xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); + + /* See i830_exa.c comments for why we limit the framebuffer size like this. + */ + if (IS_I965G(pI830)) { + max_height = max_width = min(16384 / pI830->cpp, 8192); + } else { + max_width = 2048; + max_height = 2048; + } + xf86CrtcSetSizeRange (pScrn, 320, 200, max_width, max_height); +} + +static Bool +I830AccelMethodInit(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + MessageType from = X_PROBED; + char *s; + int i, num_pipe; + + if (xf86ReturnOptValBool(pI830->Options, OPTION_NOACCEL, FALSE)) { + pI830->accel = ACCEL_NONE; + } + + /* + * The ugliness below: + * If either XAA or EXA (exclusive) is compiled in, default to it. + * + * If both are compiled in, and the user didn't specify noAccel, use the + * config option AccelMethod to determine which to use, defaulting to EXA + * if none is specified, or if the string was unrecognized. + * + * Then, just to make things more confusing, the default EXA will + * be overridden to UXA if KMS is available. See I830DrmModeInit. + * + * All this *will* go away when we remov XAA and EXA support from + * this driver. (And there will be much rejoicing.) + */ + if (!(pI830->accel == ACCEL_NONE)) { +#ifdef I830_USE_UXA + pI830->accel = ACCEL_UXA; +#endif +#ifdef I830_USE_EXA + pI830->accel = ACCEL_EXA; +#endif +#if I830_USE_XAA + I830_USE_EXA + I830_USE_UXA >= 2 + from = X_DEFAULT; + if ((s = (char *)xf86GetOptValString(pI830->Options, + OPTION_ACCELMETHOD))) { + if (!xf86NameCmp(s, "EXA")) { + from = X_CONFIG; + pI830->accel = ACCEL_EXA; + } + else if (!xf86NameCmp(s, "XAA")) { + from = X_CONFIG; + pI830->accel = ACCEL_XAA; + } + else if (!xf86NameCmp(s, "UXA")) { + from = X_CONFIG; + pI830->accel = ACCEL_UXA; + } + } +#endif + xf86DrvMsg(pScrn->scrnIndex, from, "Using %s for acceleration\n", + accel_name[pI830->accel]); + } + + pI830->directRenderingType = DRI_NONE; + if (!xf86ReturnOptValBool(pI830->Options, OPTION_DRI, TRUE)) + pI830->directRenderingType = DRI_DISABLED; + +#ifdef XF86DRI + if (pI830->accel == ACCEL_NONE) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it " + "needs 2D acceleration.\n"); + pI830->directRenderingType = DRI_DISABLED; + } else if (pScrn->depth != 16 && pScrn->depth != 24) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it " + "runs only at depths 16 and 24.\n"); + pI830->directRenderingType = DRI_DISABLED; + } +#endif /* XF86DRI */ + + I830MapMMIO(pScrn); + + if (pI830->debug_modes) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Hardware state on X startup:\n"); + i830DumpRegs (pScrn); + } + + i830TakeRegSnapshot(pScrn); + + if (DEVICE_ID(pI830->PciInfo) == PCI_CHIP_E7221_G) + num_pipe = 1; + else + if (IS_MOBILE(pI830) || IS_I9XX(pI830)) + num_pipe = 2; + else + num_pipe = 1; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%d display pipe%s available.\n", + num_pipe, num_pipe > 1 ? "s" : ""); + + I830PreInitDDC(pScrn); + for (i = 0; i < num_pipe; i++) { + i830_crtc_init(pScrn, i); + } + I830SetupOutputs(pScrn); + + SaveHWState(pScrn); + pI830->can_resize = FALSE; + if (pI830->accel == ACCEL_UXA && pI830->directRenderingType != DRI_XF86DRI) + pI830->can_resize = TRUE; +#if !defined(DRI2) && defined(XF86DRI) + /* Disable resizing so that DRI1 can initialize and give us GEM support. */ + pI830->can_resize = FALSE; +#endif + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Resizable framebuffer: %s (%d %d)\n", + pI830->can_resize ? "available" : "not available", + pI830->directRenderingType, pI830->accel); + + if (!xf86InitialConfiguration (pScrn, pI830->can_resize)) + { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes.\n"); + RestoreHWState(pScrn); + PreInitCleanup(pScrn); + return FALSE; + } + RestoreHWState(pScrn); + + /* XXX This should go away, replaced by xf86Crtc.c support for it */ + pI830->rotation = RR_Rotate_0; + + pI830->stolen_size = I830DetectMemory(pScrn); + + return TRUE; +} + +static Bool +I830DrmModeInit(ScrnInfoPtr pScrn) +{ +#ifdef XF86DRM_MODE + I830Ptr pI830 = I830PTR(pScrn); + char *bus_id; + char *s; + int ret; + + /* Default to UXA but allow override */ + pI830->accel = ACCEL_UXA; + + if ((s = (char *)xf86GetOptValString(pI830->Options, OPTION_ACCELMETHOD))) { + if (xf86NameCmp(s, "UXA")) + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "kernel mode setting active,overridding accelmethod and using UXA\n"); + } + + pI830->can_resize = FALSE; + if (pI830->accel == ACCEL_UXA && pI830->directRenderingType != DRI_XF86DRI) + pI830->can_resize = TRUE; + + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Resizable framebuffer: %s (%d %d)\n", + pI830->can_resize ? "available" : "not available", + pI830->directRenderingType, pI830->accel); + + bus_id = DRICreatePCIBusID(pI830->PciInfo); + + /* Create a bus Id */ + /* Low level DRM open */ + ret = DRIOpenDRMMaster(pScrn, SAREA_MAX, bus_id, "i915"); + xfree(bus_id); + if (!ret) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "[dri] DRIGetVersion failed to open the DRM\n" + "[dri] Disabling DRI.\n"); + return FALSE; + } + + pI830->drmSubFD = DRIMasterFD(pScrn); + if (drmmode_pre_init(pScrn, pI830->drmSubFD, pI830->cpp) == FALSE) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Kernel modesetting setup failed\n"); + PreInitCleanup(pScrn); + return FALSE; + } + + pI830->directRenderingType = DRI_NONE; + pI830->allocate_classic_textures = FALSE; + + i830_init_bufmgr(pScrn); +#endif + + return TRUE; +} + +static void +I830XvInit(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + MessageType from = X_PROBED; + + pI830->XvPreferOverlay = xf86ReturnOptValBool(pI830->Options, OPTION_PREFER_OVERLAY, FALSE); + +#ifdef I830_XV + if (xf86GetOptValInteger(pI830->Options, OPTION_VIDEO_KEY, + &(pI830->colorKey))) { + from = X_CONFIG; + } else if (xf86GetOptValInteger(pI830->Options, OPTION_COLOR_KEY, + &(pI830->colorKey))) { + from = X_CONFIG; + } else { + pI830->colorKey = + (1 << pScrn->offset.red) | (1 << pScrn->offset.green) | + (((pScrn->mask.blue >> pScrn->offset.blue) - 1) << + pScrn->offset.blue); + from = X_DEFAULT; + } + xf86DrvMsg(pScrn->scrnIndex, from, "video overlay key set to 0x%x\n", + pI830->colorKey); +#endif +} + /** * This is called per zaphod head (so usually just once) to do initialization * before the Screen is created. @@ -1350,48 +1805,23 @@ i830_detect_chipset(ScrnInfoPtr pScrn) static Bool I830PreInit(ScrnInfoPtr pScrn, int flags) { - xf86CrtcConfigPtr xf86_config; vgaHWPtr hwp; I830Ptr pI830; - MessageType from = X_PROBED; rgb defaultWeight = { 0, 0, 0 }; EntityInfoPtr pEnt; - I830EntPtr pI830Ent = NULL; int flags24; - int i; - char *s; - pointer pVBEModule = NULL; - int num_pipe; - int max_width, max_height; + Gamma zeros = { 0.0, 0.0, 0.0 }; + int drm_mode_setting; if (pScrn->numEntities != 1) return FALSE; - /* Load int10 module */ - if (!xf86LoadSubModule(pScrn, "int10")) - return FALSE; - xf86LoaderReqSymLists(I810int10Symbols, NULL); - - /* Load vbe module */ - if (!(pVBEModule = xf86LoadSubModule(pScrn, "vbe"))) - return FALSE; - xf86LoaderReqSymLists(I810vbeSymbols, NULL); + drm_mode_setting = i830_kernel_mode_enabled(pScrn); pEnt = xf86GetEntityInfo(pScrn->entityList[0]); - if (flags & PROBE_DETECT) { - I830ProbeDDC(pScrn, pEnt->index); - return TRUE; - } - - /* The vgahw module should be loaded here when needed */ - if (!xf86LoadSubModule(pScrn, "vgahw")) - return FALSE; - xf86LoaderReqSymLists(I810vgahwSymbols, NULL); - - /* Allocate a vgaHWRec */ - if (!vgaHWGetHWRec(pScrn)) - return FALSE; + if (flags & PROBE_DETECT) + return TRUE; /* Allocate driverPrivate */ if (!I830GetRec(pScrn)) @@ -1400,6 +1830,18 @@ I830PreInit(ScrnInfoPtr pScrn, int flags) pI830 = I830PTR(pScrn); pI830->SaveGeneration = -1; pI830->pEnt = pEnt; + pI830->use_drm_mode = drm_mode_setting; + pI830->kernel_exec_fencing = pI830->use_drm_mode; + + if (!I830LoadSyms(pScrn)) + return FALSE; + + if (!drm_mode_setting) { + /* Allocate a vgaHWRec */ + if (!vgaHWGetHWRec(pScrn)) + return FALSE; + hwp = VGAHWPTR(pScrn); + } pScrn->displayWidth = 640; /* default it */ @@ -1412,43 +1854,11 @@ I830PreInit(ScrnInfoPtr pScrn, int flags) pI830->PciInfo->func); #endif - /* Allocate an entity private if necessary */ - if (xf86IsEntityShared(pScrn->entityList[0])) { - pI830Ent = xf86GetEntityPrivate(pScrn->entityList[0], - I830EntityIndex)->ptr; - pI830->entityPrivate = pI830Ent; - } else - pI830->entityPrivate = NULL; - if (xf86RegisterResources(pI830->pEnt->index, NULL, ResNone)) { PreInitCleanup(pScrn); return FALSE; } - if (xf86IsEntityShared(pScrn->entityList[0])) { - if (xf86IsPrimInitDone(pScrn->entityList[0])) { - pI830->init = 1; - - if (!pI830Ent->pScrn_1) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Failed to setup second head due to primary head failure.\n"); - return FALSE; - } - } else { - xf86SetPrimInitDone(pScrn->entityList[0]); - pI830->init = 0; - } - } - - if (xf86IsEntityShared(pScrn->entityList[0])) { - if (!I830IsPrimary(pScrn)) { - pI830Ent->pScrn_2 = pScrn; - } else { - pI830Ent->pScrn_1 = pScrn; - pI830Ent->pScrn_2 = NULL; - } - } - pScrn->racMemFlags = RAC_FB | RAC_COLORMAP; pScrn->monitor = pScrn->confScreen->monitor; pScrn->progClock = TRUE; @@ -1478,297 +1888,37 @@ I830PreInit(ScrnInfoPtr pScrn, int flags) if (!xf86SetDefaultVisual(pScrn, -1)) return FALSE; - hwp = VGAHWPTR(pScrn); + if (!pI830->use_drm_mode) + hwp = VGAHWPTR(pScrn); + pI830->cpp = pScrn->bitsPerPixel / 8; pI830->preinit = TRUE; - /* Process the options */ - xf86CollectOptions(pScrn, NULL); - if (!(pI830->Options = xalloc(sizeof(I830Options)))) - return FALSE; - memcpy(pI830->Options, I830Options, sizeof(I830Options)); - xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, pI830->Options); - - if (xf86ReturnOptValBool(pI830->Options, OPTION_MODEDEBUG, FALSE)) { - pI830->debug_modes = TRUE; - } else { - pI830->debug_modes = FALSE; - } - - if (xf86ReturnOptValBool(pI830->Options, OPTION_LVDS24BITMODE, FALSE)) { - pI830->lvds_24_bit_mode = TRUE; - } else { - pI830->lvds_24_bit_mode = FALSE; - } - - if (xf86ReturnOptValBool(pI830->Options, OPTION_LVDSFIXEDMODE, TRUE)) { - pI830->skip_panel_detect = FALSE; - } else { - pI830->skip_panel_detect = TRUE; - } - - if (xf86ReturnOptValBool(pI830->Options, OPTION_FORCEENABLEPIPEA, FALSE)) - pI830->quirk_flag |= QUIRK_PIPEA_FORCE; - - /* We have to use PIO to probe, because we haven't mapped yet. */ - I830SetPIOAccess(pI830); + if (!I830GetEarlyOptions(pScrn)) + return FALSE; if (!i830_detect_chipset(pScrn)) return FALSE; - /* check quirks */ - i830_fixup_devices(pScrn); - - /* Allocate an xf86CrtcConfig */ - xf86CrtcConfigInit (pScrn, &i830_xf86crtc_config_funcs); - xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); - - /* See i830_exa.c comments for why we limit the framebuffer size like this. - */ - if (IS_I965G(pI830)) { - max_width = 8192; - max_height = 8192; - } else { - max_width = 2048; - max_height = 2048; - } - xf86CrtcSetSizeRange (pScrn, 320, 200, max_width, max_height); - - /* Some of the probing needs MMIO access, so map it here. */ - I830MapMMIO(pScrn); - - if (pI830->debug_modes) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Hardware state on X startup:\n"); - i830DumpRegs (pScrn); - } - - i830TakeRegSnapshot(pScrn); - - if (DEVICE_ID(pI830->PciInfo) == PCI_CHIP_E7221_G) - num_pipe = 1; - else - if (IS_MOBILE(pI830) || IS_I9XX(pI830)) - num_pipe = 2; - else - num_pipe = 1; - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%d display pipe%s available.\n", - num_pipe, num_pipe > 1 ? "s" : ""); - - if (xf86ReturnOptValBool(pI830->Options, OPTION_NOACCEL, FALSE)) { - pI830->noAccel = TRUE; - } - - /* - * The ugliness below: - * If either XAA or EXA (exclusive) is compiled in, default to it. - * - * If both are compiled in, and the user didn't specify noAccel, use the - * config option AccelMethod to determine which to use, defaulting to EXA - * if none is specified, or if the string was unrecognized. - * - * All this *could* go away if we removed XAA support from this driver, - * for example. :) - */ - if (!pI830->noAccel) { -#ifdef I830_USE_EXA - pI830->useEXA = TRUE; -#else - pI830->useEXA = FALSE; -#endif -#if defined(I830_USE_XAA) && defined(I830_USE_EXA) - from = X_DEFAULT; - if ((s = (char *)xf86GetOptValString(pI830->Options, - OPTION_ACCELMETHOD))) { - if (!xf86NameCmp(s, "EXA")) { - from = X_CONFIG; - pI830->useEXA = TRUE; - } - else if (!xf86NameCmp(s, "XAA")) { - from = X_CONFIG; - pI830->useEXA = FALSE; - } - } -#endif - xf86DrvMsg(pScrn->scrnIndex, from, "Using %s for acceleration\n", - pI830->useEXA ? "EXA" : "XAA"); - } - - if (xf86ReturnOptValBool(pI830->Options, OPTION_SW_CURSOR, FALSE)) { - pI830->SWCursor = TRUE; - } - - pI830->directRenderingDisabled = - !xf86ReturnOptValBool(pI830->Options, OPTION_DRI, TRUE); - -#ifdef XF86DRI - if (!pI830->directRenderingDisabled) { - if (pI830->noAccel || pI830->SWCursor) { - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it " - "needs HW cursor and 2D acceleration.\n"); - pI830->directRenderingDisabled = TRUE; - } else if (pScrn->depth != 16 && pScrn->depth != 24) { - xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "DRI is disabled because it " - "runs only at depths 16 and 24.\n"); - pI830->directRenderingDisabled = TRUE; - } - - if (!pI830->directRenderingDisabled) { - pI830->allocate_classic_textures = TRUE; - - from = X_PROBED; - -#ifdef XF86DRI_MM - if (!IS_I965G(pI830)) { - Bool tmp; - - if (xf86GetOptValBool(pI830->Options, - OPTION_INTELTEXPOOL, &tmp)) { - from = X_CONFIG; - if (!tmp) - pI830->allocate_classic_textures = FALSE; - } - } -#endif - } - } - -#endif - if (i830_bios_init(pScrn)) - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "VBIOS initialization failed.\n"); - - I830PreInitDDC(pScrn); - for (i = 0; i < num_pipe; i++) { - i830_crtc_init(pScrn, i); - } - I830SetupOutputs(pScrn); + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "VBIOS initialization failed.\n"); - SaveHWState(pScrn); - if (!xf86InitialConfiguration (pScrn, FALSE)) - { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes.\n"); - RestoreHWState(pScrn); - PreInitCleanup(pScrn); - return FALSE; - } - RestoreHWState(pScrn); - - /* XXX This should go away, replaced by xf86Crtc.c support for it */ - pI830->rotation = RR_Rotate_0; - - /* - * Let's setup the mobile systems to check the lid status - */ - if (IS_MOBILE(pI830)) { - pI830->checkDevices = TRUE; - - if (!xf86ReturnOptValBool(pI830->Options, OPTION_CHECKDEVICES, TRUE)) { - pI830->checkDevices = FALSE; - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Monitoring connected displays disabled\n"); - } else - if (pI830->entityPrivate && !I830IsPrimary(pScrn) && - !I830PTR(pI830->entityPrivate->pScrn_1)->checkDevices) { - /* If checklid is off, on the primary head, then - * turn it off on the secondary*/ - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Monitoring connected displays disabled\n"); - pI830->checkDevices = FALSE; - } else - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Monitoring connected displays enabled\n"); - } else - pI830->checkDevices = FALSE; - - pI830->stolen_size = I830DetectMemory(pScrn); - - pI830->XvDisabled = - !xf86ReturnOptValBool(pI830->Options, OPTION_XVIDEO, TRUE); - -#ifdef I830_XV - if (xf86GetOptValInteger(pI830->Options, OPTION_VIDEO_KEY, - &(pI830->colorKey))) { - from = X_CONFIG; - } else if (xf86GetOptValInteger(pI830->Options, OPTION_COLOR_KEY, - &(pI830->colorKey))) { - from = X_CONFIG; + if (pI830->use_drm_mode) { + if (!I830DrmModeInit(pScrn)) + return FALSE; } else { - pI830->colorKey = (1 << pScrn->offset.red) | - (1 << pScrn->offset.green) | - (((pScrn->mask.blue >> pScrn->offset.blue) - 1) << - pScrn->offset.blue); - from = X_DEFAULT; - } - xf86DrvMsg(pScrn->scrnIndex, from, "video overlay key set to 0x%x\n", - pI830->colorKey); -#endif - -#ifdef XF86DRI - pI830->allowPageFlip = FALSE; - from = (!pI830->directRenderingDisabled && - xf86GetOptValBool(pI830->Options, OPTION_PAGEFLIP, - &pI830->allowPageFlip)) ? X_CONFIG : X_DEFAULT; - - xf86DrvMsg(pScrn->scrnIndex, from, "Will%s try to enable page flipping\n", - pI830->allowPageFlip ? "" : " not"); -#endif - -#ifdef XF86DRI - pI830->TripleBuffer = FALSE; - from = (!pI830->directRenderingDisabled && - xf86GetOptValBool(pI830->Options, OPTION_TRIPLEBUFFER, - &pI830->TripleBuffer)) ? X_CONFIG : X_DEFAULT; - - xf86DrvMsg(pScrn->scrnIndex, from, "Triple buffering %sabled\n", - pI830->TripleBuffer ? "en" : "dis"); -#endif - -#ifdef INTEL_XVMC - pI830->XvMCEnabled = FALSE; - from = (!pI830->directRenderingDisabled && - xf86GetOptValBool(pI830->Options, OPTION_XVMC, - &pI830->XvMCEnabled)) ? X_CONFIG : X_DEFAULT; - xf86DrvMsg(pScrn->scrnIndex, from, "Intel XvMC decoder %sabled\n", - pI830->XvMCEnabled ? "en" : "dis"); -#endif - - /* - * If the driver can do gamma correction, it should call xf86SetGamma() here. - */ - - { - Gamma zeros = { 0.0, 0.0, 0.0 }; - - if (!xf86SetGamma(pScrn, zeros)) { - PreInitCleanup(pScrn); - return FALSE; - } + I830PreInitCrtcConfig(pScrn); + if (!I830AccelMethodInit(pScrn)) + return FALSE; } - /* Check if the HW cursor needs physical address. */ - if (IS_MOBILE(pI830) || IS_I9XX(pI830)) - pI830->CursorNeedsPhysical = TRUE; - else - pI830->CursorNeedsPhysical = FALSE; - - if (IS_I965G(pI830) || IS_G33CLASS(pI830)) - pI830->CursorNeedsPhysical = FALSE; + I830XvInit(pScrn); - /* - * XXX If we knew the pre-initialised GTT format for certain, we could - * probably figure out the physical address even in the StolenOnly case. - */ - if (!I830IsPrimary(pScrn)) { - I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1); - if (!pI8301->SWCursor) { - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, - "Using HW Cursor because it's enabled on primary head.\n"); - pI830->SWCursor = FALSE; - } - } else - if (pI830->StolenOnly && pI830->CursorNeedsPhysical && !pI830->SWCursor) { - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, - "HW Cursor disabled because it needs agpgart memory.\n"); - pI830->SWCursor = TRUE; + if (!xf86SetGamma(pScrn, zeros)) { + PreInitCleanup(pScrn); + return FALSE; } if (pScrn->modes == NULL) { @@ -1780,7 +1930,7 @@ I830PreInit(ScrnInfoPtr pScrn, int flags) if (!IS_I965G(pI830) && pScrn->virtualY > 2048) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Cannot support > 2048 vertical lines. disabling acceleration.\n"); - pI830->noAccel = TRUE; + pI830->accel = ACCEL_NONE; } /* Set display resolution */ @@ -1794,18 +1944,19 @@ I830PreInit(ScrnInfoPtr pScrn, int flags) xf86LoaderReqSymLists(I810fbSymbols, NULL); + switch (pI830->accel) { #ifdef I830_USE_XAA - if (!pI830->noAccel && !pI830->useEXA) { + case ACCEL_XAA: if (!xf86LoadSubModule(pScrn, "xaa")) { PreInitCleanup(pScrn); return FALSE; } xf86LoaderReqSymLists(I810xaaSymbols, NULL); - } + break; #endif #ifdef I830_USE_EXA - if (!pI830->noAccel && pI830->useEXA) { + case ACCEL_EXA: { XF86ModReqInfo req; int errmaj, errmin; @@ -1823,42 +1974,42 @@ I830PreInit(ScrnInfoPtr pScrn, int flags) return FALSE; } xf86LoaderReqSymLists(I830exaSymbols, NULL); + break; } #endif - if (!pI830->SWCursor) { - if (!xf86LoadSubModule(pScrn, "ramdac")) { - PreInitCleanup(pScrn); - return FALSE; - } - xf86LoaderReqSymLists(I810ramdacSymbols, NULL); + default: + break; } - i830CompareRegsToSnapshot(pScrn, "After PreInit"); + if (!pI830->use_drm_mode) { + i830CompareRegsToSnapshot(pScrn, "After PreInit"); - I830UnmapMMIO(pScrn); - - /* We won't be using the VGA access after the probe. */ - I830SetMMIOAccess(pI830); - xf86SetOperatingState(resVgaIo, pI830->pEnt->index, ResUnusedOpr); - xf86SetOperatingState(resVgaMem, pI830->pEnt->index, ResDisableOpr); + I830UnmapMMIO(pScrn); -#if 0 - if (I830IsPrimary(pScrn)) { - vbeFree(pI830->pVbe); + /* We won't be using the VGA access after the probe. */ + I830SetMMIOAccess(pI830); + xf86SetOperatingState(resVgaIo, pI830->pEnt->index, ResUnusedOpr); + xf86SetOperatingState(resVgaMem, pI830->pEnt->index, ResDisableOpr); } - pI830->pVbe = NULL; -#endif #if defined(XF86DRI) /* Load the dri module if requested. */ if (xf86ReturnOptValBool(pI830->Options, OPTION_DRI, FALSE) && - !pI830->directRenderingDisabled) { + pI830->directRenderingType != DRI_DISABLED) { if (xf86LoadSubModule(pScrn, "dri")) { xf86LoaderReqSymLists(I810driSymbols, I810drmSymbols, NULL); } } #endif +#if defined(DRI2) + /* Load the dri2 module if requested. */ + if (xf86ReturnOptValBool(pI830->Options, OPTION_DRI, FALSE) && + pI830->directRenderingType != DRI_DISABLED) { + xf86LoadSubModule(pScrn, "dri2"); + } +#endif + pI830->preinit = FALSE; return TRUE; @@ -1878,17 +2029,12 @@ i830_stop_ring(ScrnInfoPtr pScrn, Bool flush) DPRINTF(PFX, "ResetState: flush is %s\n", BOOLTOSTRING(flush)); - if (!I830IsPrimary(pScrn)) return; - - if (pI830->entityPrivate) - pI830->entityPrivate->RingRunning = 0; - /* Flush the ring buffer (if enabled), then disable it. */ - if (!pI830->noAccel) { + if (pI830->accel != ACCEL_NONE) { temp = INREG(LP_RING + RING_LEN); if (temp & RING_VALID) { i830_refresh_ring(pScrn); - I830Sync(pScrn); + i830_wait_ring_idle(pScrn); } OUTREG(LP_RING + RING_LEN, 0); @@ -1906,34 +2052,29 @@ i830_start_ring(ScrnInfoPtr pScrn) DPRINTF(PFX, "SetRingRegs\n"); - if (pI830->noAccel) + if (pI830->accel == ACCEL_NONE) return; - if (!I830IsPrimary(pScrn)) return; - - if (pI830->entityPrivate) - pI830->entityPrivate->RingRunning = 1; - OUTREG(LP_RING + RING_LEN, 0); OUTREG(LP_RING + RING_TAIL, 0); OUTREG(LP_RING + RING_HEAD, 0); - assert((pI830->LpRing->mem->offset & I830_RING_START_MASK) == - pI830->LpRing->mem->offset); + assert((pI830->ring.mem->offset & I830_RING_START_MASK) == + pI830->ring.mem->offset); /* Don't care about the old value. Reserved bits must be zero anyway. */ - itemp = pI830->LpRing->mem->offset; + itemp = pI830->ring.mem->offset; OUTREG(LP_RING + RING_START, itemp); - if (((pI830->LpRing->mem->size - 4096) & I830_RING_NR_PAGES) != - pI830->LpRing->mem->size - 4096) { + if (((pI830->ring.mem->size - 4096) & I830_RING_NR_PAGES) != + pI830->ring.mem->size - 4096) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "I830SetRingRegs: Ring buffer size - 4096 (%lx) violates its " - "mask (%x)\n", pI830->LpRing->mem->size - 4096, + "mask (%x)\n", pI830->ring.mem->size - 4096, I830_RING_NR_PAGES); } /* Don't care about the old value. Reserved bits must be zero anyway. */ - itemp = (pI830->LpRing->mem->size - 4096) & I830_RING_NR_PAGES; + itemp = (pI830->ring.mem->size - 4096) & I830_RING_NR_PAGES; itemp |= (RING_NO_REPORT | RING_VALID); OUTREG(LP_RING + RING_LEN, itemp); i830_refresh_ring(pScrn); @@ -1947,14 +2088,14 @@ i830_refresh_ring(ScrnInfoPtr pScrn) /* If we're reaching RefreshRing as a result of grabbing the DRI lock * before we've set up the ringbuffer, don't bother. */ - if (pI830->LpRing->mem == NULL) + if (pI830->ring.mem == NULL) return; - pI830->LpRing->head = INREG(LP_RING + RING_HEAD) & I830_HEAD_MASK; - pI830->LpRing->tail = INREG(LP_RING + RING_TAIL); - pI830->LpRing->space = pI830->LpRing->head - (pI830->LpRing->tail + 8); - if (pI830->LpRing->space < 0) - pI830->LpRing->space += pI830->LpRing->mem->size; + pI830->ring.head = INREG(LP_RING + RING_HEAD) & I830_HEAD_MASK; + pI830->ring.tail = INREG(LP_RING + RING_TAIL); + pI830->ring.space = pI830->ring.head - (pI830->ring.tail + 8); + if (pI830->ring.space < 0) + pI830->ring.space += pI830->ring.mem->size; i830MarkSync(pScrn); } @@ -2156,7 +2297,7 @@ RestoreHWState(ScrnInfoPtr pScrn) /* Disable pipes */ for (i = 0; i < xf86_config->num_crtc; i++) { xf86CrtcPtr crtc = xf86_config->crtc[i]; - crtc->funcs->dpms(crtc, DPMSModeOff); + i830_crtc_disable(crtc, TRUE); } i830WaitForVblank(pScrn); @@ -2199,17 +2340,21 @@ RestoreHWState(ScrnInfoPtr pScrn) /* If the pipe A PLL is active, we can restore the pipe & plane config */ if (pI830->saveDPLL_A & DPLL_VCO_ENABLE) { + OUTREG(FPA0, pI830->saveFPA0); OUTREG(DPLL_A, pI830->saveDPLL_A & ~DPLL_VCO_ENABLE); + POSTING_READ(DPLL_A); usleep(150); } OUTREG(FPA0, pI830->saveFPA0); OUTREG(FPA1, pI830->saveFPA1); OUTREG(DPLL_A, pI830->saveDPLL_A); + POSTING_READ(DPLL_A); i830_dpll_settle(); if (IS_I965G(pI830)) OUTREG(DPLL_A_MD, pI830->saveDPLL_A_MD); else OUTREG(DPLL_A, pI830->saveDPLL_A); + POSTING_READ(DPLL_A); i830_dpll_settle(); /* Restore mode config */ @@ -2233,6 +2378,7 @@ RestoreHWState(ScrnInfoPtr pScrn) } OUTREG(PIPEACONF, pI830->savePIPEACONF); + POSTING_READ(PIPEACONF); i830WaitForVblank(pScrn); /* @@ -2245,12 +2391,14 @@ RestoreHWState(ScrnInfoPtr pScrn) DISPPLANE_SEL_PIPE_A) { OUTREG(DSPACNTR, pI830->saveDSPACNTR); OUTREG(DSPABASE, INREG(DSPABASE)); + POSTING_READ(DSPABASE); i830WaitForVblank(pScrn); } if ((pI830->saveDSPBCNTR & DISPPLANE_SEL_PIPE_MASK) == DISPPLANE_SEL_PIPE_A) { OUTREG(DSPBCNTR, pI830->saveDSPBCNTR); OUTREG(DSPBBASE, INREG(DSPBBASE)); + POSTING_READ(DSPBBASE); i830WaitForVblank(pScrn); } @@ -2260,17 +2408,21 @@ RestoreHWState(ScrnInfoPtr pScrn) /* If the pipe B PLL is active, we can restore the pipe & plane config */ if (pI830->saveDPLL_B & DPLL_VCO_ENABLE) { + OUTREG(FPB0, pI830->saveFPB0); OUTREG(DPLL_B, pI830->saveDPLL_B & ~DPLL_VCO_ENABLE); + POSTING_READ(DPLL_B); usleep(150); } OUTREG(FPB0, pI830->saveFPB0); OUTREG(FPB1, pI830->saveFPB1); OUTREG(DPLL_B, pI830->saveDPLL_B); + POSTING_READ(DPLL_B); i830_dpll_settle(); if (IS_I965G(pI830)) OUTREG(DPLL_B_MD, pI830->saveDPLL_B_MD); else OUTREG(DPLL_B, pI830->saveDPLL_B); + POSTING_READ(DPLL_B); i830_dpll_settle(); /* Restore mode config */ @@ -2293,6 +2445,7 @@ RestoreHWState(ScrnInfoPtr pScrn) } OUTREG(PIPEBCONF, pI830->savePIPEBCONF); + POSTING_READ(PIPEBCONF); i830WaitForVblank(pScrn); /* @@ -2357,10 +2510,6 @@ RestoreHWState(ScrnInfoPtr pScrn) OUTREG(FBC_CONTROL, pI830->saveFBC_CONTROL); } - /* Clear any FIFO underrun status that may have occurred normally */ - OUTREG(PIPEASTAT, INREG(PIPEASTAT) | FIFO_UNDERRUN); - OUTREG(PIPEBSTAT, INREG(PIPEBSTAT) | FIFO_UNDERRUN); - vgaHWRestore(pScrn, vgaReg, VGA_SR_FONTS); vgaHWLock(hwp); @@ -2445,13 +2594,12 @@ void IntelEmitInvarientState(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - uint32_t ctx_addr; - if (pI830->noAccel) + if (pI830->accel == ACCEL_NONE) return; #ifdef XF86DRI - if (pI830->directRenderingEnabled) { + if (pI830->directRenderingType == DRI_XF86DRI) { drmI830Sarea *sarea = DRIGetSAREAPrivate(pScrn->pScreen); /* Mark that the X Server was the last holder of the context */ @@ -2463,20 +2611,9 @@ IntelEmitInvarientState(ScrnInfoPtr pScrn) /* If we've emitted our state since the last clobber by another client, * skip it. */ - if (*pI830->last_3d != LAST_3D_OTHER) + if (pI830->last_3d != LAST_3D_OTHER) return; - ctx_addr = pI830->logical_context->offset; - assert((pI830->logical_context->offset & 2047) == 0); - { - BEGIN_BATCH(2); - OUT_BATCH(MI_SET_CONTEXT); - OUT_BATCH(pI830->logical_context->offset | - CTXT_NO_RESTORE | - CTXT_PALETTE_SAVE_DISABLE | CTXT_PALETTE_RESTORE_DISABLE); - ADVANCE_BATCH(); - } - if (!IS_I965G(pI830)) { if (IS_I9XX(pI830)) @@ -2493,7 +2630,6 @@ I830BlockHandler(int i, ScreenPtr pScreen = screenInfo.screens[i]; ScrnInfoPtr pScrn = xf86Screens[i]; I830Ptr pI830 = I830PTR(pScrn); - xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); pScreen->BlockHandler = pI830->BlockHandler; @@ -2502,36 +2638,35 @@ I830BlockHandler(int i, pI830->BlockHandler = pScreen->BlockHandler; pScreen->BlockHandler = I830BlockHandler; - /* Emit a flush of the rendering cache, or on the 965 and beyond - * rendering results may not hit the framebuffer until significantly - * later. In the direct rendering case this is already done just - * after the page flipping updates, so there's no need to duplicate - * the effort here. - */ - if (pScrn->vtSema && !pI830->noAccel && !pI830->directRenderingEnabled) - I830EmitFlush(pScrn); + if (pScrn->vtSema && pI830->accel != ACCEL_NONE) { + Bool flushed = FALSE; + /* Emit a flush of the rendering cache, or on the 965 and beyond + * rendering results may not hit the framebuffer until significantly + * later. + */ + if (pI830->accel != ACCEL_NONE && (pI830->need_mi_flush || pI830->batch_used)) + { + flushed = TRUE; + I830EmitFlush(pScrn); + } - /* - * Check for FIFO underruns at block time (which amounts to just - * periodically). If this happens, it means our DSPARB or some other - * memory arbitration setting is wrong for the current configuration - * (except for mode setting, where it may occur naturally). - * Check & ack the condition. - */ - if (pScrn->vtSema && !DSPARB_HWCONTROL(pI830)) { - if (xf86_config->crtc[0]->enabled && - (INREG(PIPEASTAT) & FIFO_UNDERRUN)) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "underrun on pipe A!\n"); - OUTREG(PIPEASTAT, INREG(PIPEASTAT) | FIFO_UNDERRUN); - } - if (xf86_config->num_crtc > 1 && - xf86_config->crtc[1]->enabled && - (INREG(PIPEBSTAT) & FIFO_UNDERRUN)) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "underrun on pipe B!\n"); - OUTREG(PIPEBSTAT, INREG(PIPEBSTAT) | FIFO_UNDERRUN); - } + /* Flush the batch, so that any rendering is executed in a timely + * fashion. + */ + intel_batch_flush(pScrn, flushed); +#ifdef XF86DRI + if (pI830->memory_manager) + drmCommandNone(pI830->drmSubFD, DRM_I915_GEM_THROTTLE); +#endif + + pI830->need_mi_flush = FALSE; } +#ifdef I830_USE_UXA + if (pI830->accel == ACCEL_UXA) + i830_uxa_block_handler (pScreen); +#endif + I830VideoBlockHandler(i, blockData, pTimeout, pReadmask); } @@ -2584,7 +2719,7 @@ i830_try_memory_allocation(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); Bool tiled = pI830->tiling; - Bool dri = pI830->directRenderingEnabled; + Bool xf86dri = pI830->directRenderingType == DRI_XF86DRI; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Attempting memory allocation with %stiled buffers.\n", @@ -2597,7 +2732,7 @@ i830_try_memory_allocation(ScrnInfoPtr pScrn) if (!i830_allocate_pwrctx(pScrn)) goto failed; - if (dri && !i830_allocate_3d_memory(pScrn)) + if (xf86dri && !i830_allocate_3d_memory(pScrn)) goto failed; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%siled allocation successful.\n", @@ -2609,7 +2744,6 @@ failed: tiled ? "T" : "Unt"); return FALSE; } - /* * Try to allocate memory in several ways: * 1) If direct rendering is enabled, try to allocate enough memory for tiled @@ -2624,39 +2758,9 @@ i830_memory_init(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); int savedDisplayWidth = pScrn->displayWidth; - int i; Bool tiled = FALSE; - /* - * Adjust the display width to allow for front buffer tiling if possible - */ - if (pI830->tiling) { - if (IS_I965G(pI830)) { - int tile_pixels = 512 / pI830->cpp; - pScrn->displayWidth = (pScrn->displayWidth + tile_pixels - 1) & - ~(tile_pixels - 1); - tiled = TRUE; - } else { - /* Good pitches to allow tiling. Don't care about pitches < 1024 - * pixels. - */ - static const int pitches[] = { - 1024, - 2048, - 4096, - 8192, - 0 - }; - - for (i = 0; pitches[i] != 0; i++) { - if (pitches[i] >= pScrn->displayWidth) { - pScrn->displayWidth = pitches[i]; - tiled = TRUE; - break; - } - } - } - } + tiled = i830_tiled_width(pI830, &pScrn->displayWidth, pI830->cpp); /* Set up our video memory allocator for the chosen videoRam */ if (!i830_allocator_init(pScrn, 0, pScrn->videoRam * KB(1))) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -2687,13 +2791,8 @@ i830_memory_init(ScrnInfoPtr pScrn) } } - /* If tiling fails we have to disable page flipping & FBC */ + /* If tiling fails we have to disable FBC */ pScrn->displayWidth = savedDisplayWidth; - if (pI830->allowPageFlip) - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Couldn't allocate tiled memory, page flipping " - "disabled\n"); - pI830->allowPageFlip = FALSE; if (pI830->fb_compression) xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Couldn't allocate tiled memory, fb compression " @@ -2701,14 +2800,14 @@ i830_memory_init(ScrnInfoPtr pScrn) pI830->fb_compression = FALSE; /* Try again, but leave DRI enabled */ - if (pI830->directRenderingEnabled) { + if (pI830->directRenderingType == DRI_XF86DRI) { if (i830_try_memory_allocation(pScrn)) return TRUE; else { i830_reset_allocations(pScrn); xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Couldn't allocate 3D memory, " "disabling DRI.\n"); - pI830->directRenderingEnabled = FALSE; + pI830->directRenderingType = DRI_NONE; } } @@ -2718,6 +2817,126 @@ i830_memory_init(ScrnInfoPtr pScrn) return FALSE; } +void +i830_init_bufmgr(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + + if (pI830->bufmgr) + return; + + if (pI830->memory_manager || pI830->use_drm_mode) { + int batch_size; + + batch_size = 4096 * 4; + + /* The 865 has issues with larger-than-page-sized batch buffers. */ + if (IS_I865G(pI830)) + batch_size = 4096; + + pI830->bufmgr = intel_bufmgr_gem_init(pI830->drmSubFD, batch_size); + intel_bufmgr_gem_enable_reuse(pI830->bufmgr); + } else { + assert(pI830->FbBase != NULL); + pI830->bufmgr = intel_bufmgr_fake_init(pI830->drmSubFD, + pI830->fake_bufmgr_mem->offset, + pI830->FbBase + + pI830->fake_bufmgr_mem->offset, + pI830->fake_bufmgr_mem->size, + NULL); + } +} + + +static void +I830AdjustMemory(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn; + I830Ptr pI830; + unsigned long sys_mem; + MessageType from; + + pScrn = xf86Screens[pScreen->myNum]; + pI830 = I830PTR(pScrn); + + /* Limit videoRam to how much we might be able to allocate from AGP */ + sys_mem = I830CheckAvailableMemory(pScrn); + if (sys_mem == -1) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "/dev/agpgart is either not available, or no memory " + "is available\nfor allocation. Please enable agpgart\n."); + pScrn->videoRam = pI830->stolen_size / KB(1); + } + if (sys_mem + (pI830->stolen_size / 1024) < pScrn->videoRam) { + pScrn->videoRam = sys_mem + (pI830->stolen_size / 1024); + from = X_PROBED; + if (sys_mem + (pI830->stolen_size / 1024) < + pI830->pEnt->device->videoRam) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "VideoRAM reduced to %d kByte " + "(limited to available sysmem)\n", pScrn->videoRam); + } + } + + /* Limit video RAM to the actual aperture size */ + if (pScrn->videoRam > pI830->FbMapSize / 1024) { + pScrn->videoRam = pI830->FbMapSize / 1024; + if (pI830->FbMapSize / 1024 < pI830->pEnt->device->videoRam) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "VideoRam reduced to %d kByte (limited to aperture " + "size)\n", + pScrn->videoRam); + } + } + + /* Make sure it's on a page boundary */ + if (pScrn->videoRam & 3) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "VideoRam reduced to %d KB " + "(page aligned - was %d KB)\n", + pScrn->videoRam & ~3, pScrn->videoRam); + pScrn->videoRam &= ~3; + } + + if (!IS_I965G(pI830) && pScrn->displayWidth > 2048) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Cannot support DRI with frame buffer width > 2048.\n"); + pI830->directRenderingType = DRI_DISABLED; + } +} + +static void +I830SwapPipes(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + xf86CrtcConfigPtr config; + int c; + + config = XF86_CRTC_CONFIG_PTR(pScrn); + + /* + * If an LVDS display is present, swap the plane/pipe mappings so we can + * use FBC on the builtin display. + * Note: 965+ chips can compress either plane, so we leave the mapping + * alone in that case. + * Also make sure the DRM can handle the swap. + */ + if (I830LVDSPresent(pScrn) && !IS_I965GM(pI830) && !IS_GM45(pI830) && + (pI830->directRenderingType != DRI_XF86DRI || + (pI830->directRenderingType == DRI_XF86DRI && pI830->drmMinor >= 10))) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "adjusting plane->pipe mappings " + "to allow for framebuffer compression\n"); + for (c = 0; c < config->num_crtc; c++) { + xf86CrtcPtr crtc = config->crtc[c]; + I830CrtcPrivatePtr intel_crtc = crtc->driver_private; + + if (intel_crtc->pipe == 0) + intel_crtc->plane = 1; + else if (intel_crtc->pipe == 1) + intel_crtc->plane = 0; + } + } +} + static void i830_disable_render_standby(ScrnInfoPtr pScrn) { @@ -2739,22 +2958,18 @@ static Bool I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) { ScrnInfoPtr pScrn; - vgaHWPtr hwp; + vgaHWPtr hwp = NULL; I830Ptr pI830; VisualPtr visual; - I830Ptr pI8301 = NULL; - unsigned long sys_mem; - int c; MessageType from; -#ifdef XF86DRI - xf86CrtcConfigPtr config; -#endif pScrn = xf86Screens[pScreen->myNum]; pI830 = I830PTR(pScrn); - hwp = VGAHWPTR(pScrn); - pScrn->displayWidth = (pScrn->virtualX + 63) & ~63; + if (!pI830->use_drm_mode) + hwp = VGAHWPTR(pScrn); + + pScrn->displayWidth = i830_pad_drawable_width(pScrn->virtualX, pI830->cpp); /* * The "VideoRam" config file parameter specifies the maximum amount of @@ -2798,66 +3013,26 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) #endif } - /* Limit videoRam to how much we might be able to allocate from AGP */ - sys_mem = I830CheckAvailableMemory(pScrn); - if (sys_mem == -1) { - if (pScrn->videoRam > pI830->stolen_size / KB(1)) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "/dev/agpgart is either not available, or no memory " - "is available\nfor allocation. " - "Using pre-allocated memory only.\n"); - pScrn->videoRam = pI830->stolen_size / KB(1); - } - pI830->StolenOnly = TRUE; + if (pI830->use_drm_mode) { +#ifdef XF86DRM_MODE + pI830->stolen_size = 0; + pScrn->videoRam = ~0UL / KB(1); +#endif } else { - if (sys_mem + (pI830->stolen_size / 1024) < pScrn->videoRam) { - pScrn->videoRam = sys_mem + (pI830->stolen_size / 1024); - from = X_PROBED; - if (sys_mem + (pI830->stolen_size / 1024) < - pI830->pEnt->device->videoRam) - { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "VideoRAM reduced to %d kByte " - "(limited to available sysmem)\n", pScrn->videoRam); - } - } - } - - /* Limit video RAM to the actual aperture size */ - if (pScrn->videoRam > pI830->FbMapSize / 1024) { - pScrn->videoRam = pI830->FbMapSize / 1024; - if (pI830->FbMapSize / 1024 < pI830->pEnt->device->videoRam) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "VideoRam reduced to %d kByte (limited to aperture " - "size)\n", - pScrn->videoRam); - } - } - - /* Make sure it's on a page boundary */ - if (pScrn->videoRam & 3) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "VideoRam reduced to %d KB " - "(page aligned - was %d KB)\n", - pScrn->videoRam & ~3, pScrn->videoRam); - pScrn->videoRam &= ~3; + I830AdjustMemory(pScreen); } - if (!IS_I965G(pI830) && pScrn->displayWidth > 2048) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Cannot support DRI with frame buffer width > 2048.\n"); - pI830->directRenderingDisabled = TRUE; - } +#ifdef DRI2 + if (pI830->directRenderingType == DRI_NONE && I830DRI2ScreenInit(pScreen)) + pI830->directRenderingType = DRI_DRI2; +#endif #ifdef XF86DRI /* If DRI hasn't been explicitly disabled, try to initialize it. * It will be used by the memory allocator. */ - if (!pI830->directRenderingDisabled) - pI830->directRenderingEnabled = I830DRIScreenInit(pScreen); - else - pI830->directRenderingEnabled = FALSE; -#else - pI830->directRenderingEnabled = FALSE; + if (!pI830->can_resize && pI830->directRenderingType == DRI_NONE && I830DRIScreenInit(pScreen)) + pI830->directRenderingType = DRI_XF86DRI; #endif /* Enable tiling by default */ @@ -2885,48 +3060,32 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) pI830->fb_compression = FALSE; } + if (pI830->use_drm_mode && pI830->fb_compression == TRUE) { + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, + "Kernel mode setting active, disabling FBC.\n"); + pI830->fb_compression = FALSE; + } + xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Framebuffer compression %sabled\n", pI830->fb_compression ? "en" : "dis"); xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Tiling %sabled\n", pI830->tiling ? "en" : "dis"); - if (I830IsPrimary(pScrn)) { - /* Alloc our pointers for the primary head */ - if (!pI830->LpRing) - pI830->LpRing = xcalloc(1, sizeof(I830RingBuffer)); - if (!pI830->overlayOn) - pI830->overlayOn = xalloc(sizeof(Bool)); - if (!pI830->last_3d) - pI830->last_3d = xalloc(sizeof(enum last_3d)); - if (!pI830->LpRing || !pI830->overlayOn || !pI830->last_3d) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Could not allocate primary data structures.\n"); - return FALSE; - } - *pI830->last_3d = LAST_3D_OTHER; - *pI830->overlayOn = FALSE; - if (pI830->entityPrivate) - pI830->entityPrivate->XvInUse = -1; - } else { - /* Make our second head point to the first heads structures */ - pI8301 = I830PTR(pI830->entityPrivate->pScrn_1); - pI830->LpRing = pI8301->LpRing; - pI830->overlay_regs = pI8301->overlay_regs; - pI830->overlayOn = pI8301->overlayOn; - pI830->last_3d = pI8301->last_3d; - } + pI830->last_3d = LAST_3D_OTHER; + pI830->overlayOn = FALSE; #ifdef I830_XV /* * Set this so that the overlay allocation is factored in when * appropriate. */ - pI830->XvEnabled = !pI830->XvDisabled; + pI830->XvEnabled = TRUE; #endif /* Need MMIO mapped to do GTT lookups during memory allocation. */ - I830MapMMIO(pScrn); + if (!pI830->use_drm_mode) + I830MapMMIO(pScrn); if (!i830_memory_init(pScrn)) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -2949,48 +3108,31 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) return FALSE; #ifdef I830_XV - pI830->XvEnabled = !pI830->XvDisabled; - if (pI830->XvEnabled) { - if (!I830IsPrimary(pScrn)) { - if (!pI8301->XvEnabled || pI830->noAccel) { - pI830->XvEnabled = FALSE; - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Xv is disabled.\n"); - } - } else - if (pI830->noAccel || pI830->StolenOnly) { - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Xv is disabled because it " - "needs 2D accel and AGPGART.\n"); - pI830->XvEnabled = FALSE; - } + if (pI830->accel == ACCEL_NONE) { + xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "Xv is disabled because it " + "needs 2D acceleration.\n"); + pI830->XvEnabled = FALSE; } #else pI830->XvEnabled = FALSE; #endif - if (!pI830->noAccel) { - if (pI830->LpRing->mem->size == 0) { + if (pI830->accel != ACCEL_NONE && !pI830->use_drm_mode) { + if (pI830->memory_manager == NULL && pI830->ring.mem->size == 0) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Disabling acceleration because the ring buffer " "allocation failed.\n"); - pI830->noAccel = TRUE; + pI830->accel = ACCEL_NONE; } } -#ifdef I830_XV - if (pI830->XvEnabled) { - if (pI830->noAccel) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Disabling Xv because it " - "needs 2D acceleration.\n"); - pI830->XvEnabled = FALSE; - } - if (!OVERLAY_NOEXIST(pI830) && pI830->overlay_regs == NULL) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Disabling Xv because the overlay register buffer " - "allocation failed.\n"); - pI830->XvEnabled = FALSE; - } + if (!pI830->use_drm_mode) { + DPRINTF(PFX, "assert( if(!I830MapMem(pScrn)) )\n"); + if (!I830MapMem(pScrn)) + return FALSE; + pScrn->memPhysBase = (unsigned long)pI830->FbBase; } -#endif + i830_init_bufmgr(pScrn); #ifdef XF86DRI /* @@ -2998,93 +3140,46 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) * is called. fbScreenInit will eventually call into the drivers * InitGLXVisuals call back. */ - - if (pI830->directRenderingEnabled) { - if (pI830->noAccel || pI830->SWCursor || (pI830->StolenOnly && I830IsPrimary(pScrn))) { + if (pI830->directRenderingType == DRI_XF86DRI) { + if (pI830->accel == ACCEL_NONE) { xf86DrvMsg(pScrn->scrnIndex, X_PROBED, "DRI is disabled because it " - "needs HW cursor, 2D accel and AGPGART.\n"); - pI830->directRenderingEnabled = FALSE; + "needs 2D acceleration.\n"); + pI830->directRenderingType = DRI_NONE; } } - if (pI830->directRenderingEnabled) - pI830->directRenderingEnabled = I830DRIDoMappings(pScreen); + if (pI830->directRenderingType == DRI_XF86DRI && + !I830DRIDoMappings(pScreen)) + pI830->directRenderingType = DRI_NONE; /* If we failed for any reason, free DRI memory. */ - if (!pI830->directRenderingEnabled) - i830_free_3d_memory(pScrn); - - config = XF86_CRTC_CONFIG_PTR(pScrn); + if (pI830->directRenderingType != DRI_XF86DRI && + pI830->back_buffer != NULL) + i830_free_3d_memory(pScrn); - /* - * If an LVDS display is present, swap the plane/pipe mappings so we can - * use FBC on the builtin display. - * Note: 965+ chips can compress either plane, so we leave the mapping - * alone in that case. - * Also make sure the DRM can handle the swap. - */ - if (I830LVDSPresent(pScrn) && !IS_I965GM(pI830) && !IS_GM45(pI830) && - (!pI830->directRenderingEnabled || - (pI830->directRenderingEnabled && pI830->drmMinor >= 10))) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "adjusting plane->pipe mappings " - "to allow for framebuffer compression\n"); - for (c = 0; c < config->num_crtc; c++) { - xf86CrtcPtr crtc = config->crtc[c]; - I830CrtcPrivatePtr intel_crtc = crtc->driver_private; - - if (intel_crtc->pipe == 0) - intel_crtc->plane = 1; - else if (intel_crtc->pipe == 1) - intel_crtc->plane = 0; - } - } - -#else - pI830->directRenderingEnabled = FALSE; -#endif - -#ifdef XF86DRI - - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Page Flipping %sabled\n", - pI830->allowPageFlip ? "en" : "dis"); + if (!pI830->use_drm_mode) + I830SwapPipes(pScrn); #endif - DPRINTF(PFX, "assert( if(!I830MapMem(pScrn)) )\n"); - if (!I830MapMem(pScrn)) - return FALSE; - - pScrn->memPhysBase = (unsigned long)pI830->FbBase; - - if (I830IsPrimary(pScrn)) { - pScrn->fbOffset = pI830->front_buffer->offset; - } else { - pScrn->fbOffset = pI8301->front_buffer_2->offset; - } + pScrn->fbOffset = pI830->front_buffer->offset; pI830->xoffset = (pScrn->fbOffset / pI830->cpp) % pScrn->displayWidth; pI830->yoffset = (pScrn->fbOffset / pI830->cpp) / pScrn->displayWidth; - vgaHWSetMmioFuncs(hwp, pI830->MMIOBase, 0); - vgaHWGetIOBase(hwp); - DPRINTF(PFX, "assert( if(!vgaHWMapMem(pScrn)) )\n"); - if (!vgaHWMapMem(pScrn)) - return FALSE; - - i830_disable_render_standby(pScrn); + if (!pI830->use_drm_mode) { + vgaHWSetMmioFuncs(hwp, pI830->MMIOBase, 0); + vgaHWGetIOBase(hwp); + DPRINTF(PFX, "assert( if(!vgaHWMapMem(pScrn)) )\n"); + if (!vgaHWMapMem(pScrn)) + return FALSE; + } DPRINTF(PFX, "assert( if(!I830EnterVT(scrnIndex, 0)) )\n"); - if (!pI830->useEXA) { - if (I830IsPrimary(pScrn)) { - if (!I830InitFBManager(pScreen, &(pI830->FbMemBox))) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Failed to init memory manager\n"); - } - } else { - if (!I830InitFBManager(pScreen, &(pI8301->FbMemBox2))) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Failed to init memory manager\n"); - } + if (pI830->accel <= ACCEL_XAA) { + if (!I830InitFBManager(pScreen, &(pI830->FbMemBox))) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to init memory manager\n"); } } @@ -3122,32 +3217,37 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) DPRINTF(PFX, "assert( if(!I830InitFBManager(pScreen, &(pI830->FbMemBox))) )\n"); - if (!pI830->noAccel) { + if (pI830->accel != ACCEL_NONE) { if (!I830AccelInit(pScreen)) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Hardware acceleration initialization failed\n"); } } + if (IS_I965G(pI830)) + pI830->batch_flush_notify = i965_batch_flush_notify; + else if (IS_I9XX(pI830)) + pI830->batch_flush_notify = i915_batch_flush_notify; + else + pI830->batch_flush_notify = NULL; + miInitializeBackingStore(pScreen); xf86SetBackingStore(pScreen); xf86SetSilkenMouse(pScreen); miDCInitialize(pScreen, xf86GetPointerScreenFuncs()); - if (!pI830->SWCursor) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Initializing HW Cursor\n"); - if (!I830CursorInit(pScreen)) - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Hardware cursor initialization failed\n"); - } else - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Initializing SW Cursor!\n"); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Initializing HW Cursor\n"); + if (!I830CursorInit(pScreen)) + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Hardware cursor initialization failed\n"); #ifdef XF86DRI /* Must be called before EnterVT, so we can acquire the DRI lock when * binding our memory. */ - if (pI830->directRenderingEnabled) - pI830->directRenderingEnabled = I830DRIFinishScreenInit(pScreen); + if (pI830->directRenderingType == DRI_XF86DRI && + !I830DRIFinishScreenInit(pScreen)) + pI830->directRenderingType = DRI_NONE; #endif /* Must force it before EnterVT, so we are in control of VT and @@ -3183,6 +3283,14 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) xf86DPMSInit(pScreen, xf86DPMSSet, 0); #ifdef I830_XV +#ifdef INTEL_XVMC + pI830->XvMCEnabled = FALSE; + from = (pI830->directRenderingType == DRI_XF86DRI && + xf86GetOptValBool(pI830->Options, OPTION_XVMC, + &pI830->XvMCEnabled)) ? X_CONFIG : X_DEFAULT; + xf86DrvMsg(pScrn->scrnIndex, from, "Intel XvMC decoder %sabled\n", + pI830->XvMCEnabled ? "en" : "dis"); +#endif /* Init video */ if (pI830->XvEnabled) I830InitVideo(pScreen); @@ -3191,15 +3299,23 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* Setup 3D engine, needed for rotation too */ IntelEmitInvarientState(pScrn); -#ifdef XF86DRI - if (pI830->directRenderingEnabled) { +#if defined(XF86DRI) || defined(DRI2) + switch (pI830->directRenderingType) { + case DRI_XF86DRI: pI830->directRenderingOpen = TRUE; - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Enabled\n"); - } else { - if (pI830->directRenderingDisabled) - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Disabled\n"); - else - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Failed\n"); + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "direct rendering: XF86DRI Enabled\n"); + break; + case DRI_DRI2: + pI830->directRenderingOpen = TRUE; + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: DRI2 Enabled\n"); + break; + case DRI_DISABLED: + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Disabled\n"); + break; + case DRI_NONE: + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Failed\n"); + break; } #else xf86DrvMsg(pScrn->scrnIndex, X_INFO, "direct rendering: Not available\n"); @@ -3232,6 +3348,9 @@ i830AdjustFrame(int scrnIndex, int x, int y, int flags) DPRINTF(PFX, "i830AdjustFrame: y = %d (+ %d), x = %d (+ %d)\n", x, pI830->xoffset, y, pI830->yoffset); + if (pI830->use_drm_mode) + return; + if (crtc && crtc->enabled) { /* Sync the engine before adjust frame */ @@ -3261,6 +3380,7 @@ I830LeaveVT(int scrnIndex, int flags) { ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; I830Ptr pI830 = I830PTR(pScrn); + int ret; #ifndef HAVE_FREE_SHADOW xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); int o; @@ -3271,24 +3391,20 @@ I830LeaveVT(int scrnIndex, int flags) pI830->leaving = TRUE; if (pI830->devicesTimer) - TimerCancel(pI830->devicesTimer); + TimerFree(pI830->devicesTimer); pI830->devicesTimer = NULL; i830SetHotkeyControl(pScrn, HOTKEY_BIOS_SWITCH); - if (!I830IsPrimary(pScrn)) { - I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1); - if (!pI8301->gtt_acquired) { - return; - } - } - #ifdef XF86DRI - if (pI830->directRenderingOpen) { + if (pI830->directRenderingOpen && + pI830->directRenderingType == DRI_XF86DRI) { DRILock(screenInfo.screens[pScrn->scrnIndex], 0); - I830DRISetVBlankInterrupt (pScrn, FALSE); - drmCtlUninstHandler(pI830->drmSubFD); + if (!pI830->memory_manager) { + I830DRISetVBlankInterrupt (pScrn, FALSE); + drmCtlUninstHandler(pI830->drmSubFD); + } } #endif @@ -3309,34 +3425,56 @@ I830LeaveVT(int scrnIndex, int flags) xf86_hide_cursors (pScrn); - RestoreHWState(pScrn); + I830Sync(pScrn); - i830_stop_ring(pScrn, TRUE); + if (!pI830->use_drm_mode) { + RestoreHWState(pScrn); + /* Evict everything from the bufmgr, as we're about to lose ownership of + * the graphics memory. + */ + if (!pI830->memory_manager) + intel_bufmgr_fake_evict_all(pI830->bufmgr); + + if (!pI830->memory_manager) + i830_stop_ring(pScrn, TRUE); - if (pI830->debug_modes) { - i830CompareRegsToSnapshot(pScrn, "After LeaveVT"); - i830DumpRegs (pScrn); + if (pI830->debug_modes) { + i830CompareRegsToSnapshot(pScrn, "After LeaveVT"); + i830DumpRegs (pScrn); + } } - if (I830IsPrimary(pScrn)) - i830_unbind_all_memory(pScrn); + intel_batch_teardown(pScrn); - /* Tell the kernel to evict all buffer objects and block new buffer - * allocations until we relese the lock. - */ -#ifdef XF86DRI_MM - if (pI830->directRenderingOpen) { - if (pI830->memory_manager != NULL && pScrn->vtSema) { - drmMMLock(pI830->drmSubFD, DRM_BO_MEM_TT, 1, 0); - } + i830_unbind_all_memory(pScrn); + +#ifdef XF86DRI + if (pI830->memory_manager && !pI830->use_drm_mode) { + int ret; + + /* Tell the kernel to evict all buffer objects and block GTT usage while + * we're no longer in control of the chip. + */ + ret = drmCommandNone(pI830->drmSubFD, DRM_I915_GEM_LEAVEVT); + if (ret != 0) + FatalError("DRM_I915_LEAVEVT failed: %s\n", strerror(ret)); } -#endif /* XF86DRI_MM */ +#endif /* XF86DRI */ - if (pI830->useEXA && IS_I965G(pI830)) + if ((pI830->accel == ACCEL_EXA || pI830->accel == ACCEL_UXA) && IS_I965G(pI830)) gen4_render_state_cleanup(pScrn); if (pI830->AccelInfoRec) pI830->AccelInfoRec->NeedToSync = FALSE; + +#ifdef XF86DRI +#if 0 + ret = drmDropMaster(pI830->drmSubFD); + if (ret) + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "drmDropMaster failed: %s\n", strerror(ret)); +#endif +#endif } /* @@ -3346,88 +3484,129 @@ static Bool I830EnterVT(int scrnIndex, int flags) { ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); I830Ptr pI830 = I830PTR(pScrn); + int i, ret; DPRINTF(PFX, "Enter VT\n"); +#ifdef XF86DRI +#if 0 + ret = drmSetMaster(pI830->drmSubFD); + if (ret) + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "drmDropMaster failed: %s\n", strerror(ret)); +#endif +#endif + /* * Only save state once per server generation since that's what most * drivers do. Could change this to save state at each VT enter. */ if (pI830->SaveGeneration != serverGeneration) { pI830->SaveGeneration = serverGeneration; - SaveHWState(pScrn); + if (!pI830->use_drm_mode) + SaveHWState(pScrn); + } + + /* Get the hardware into a known state if needed */ + if (!pI830->use_drm_mode) { + /* Disable outputs */ + for (i = 0; i < xf86_config->num_output; i++) { + xf86OutputPtr output = xf86_config->output[i]; + output->funcs->dpms(output, DPMSModeOff); + } + i830WaitForVblank(pScrn); + + /* Disable pipes */ + for (i = 0; i < xf86_config->num_crtc; i++) { + xf86CrtcPtr crtc = xf86_config->crtc[i]; + i830_crtc_disable(crtc, TRUE); + } + i830WaitForVblank(pScrn); } pI830->leaving = FALSE; -#ifdef XF86DRI_MM - if (pI830->directRenderingEnabled) { - /* Unlock the memory manager first of all so that we can pin our - * buffer objects + if (!pI830->use_drm_mode) + i830_disable_render_standby(pScrn); + +#ifdef XF86DRI + if (pI830->memory_manager && !pI830->use_drm_mode) { + int ret; + + /* Tell the kernel that we're back in control and ready for GTT + * usage. */ - if (pI830->memory_manager != NULL && pScrn->vtSema) { - drmMMUnlock(pI830->drmSubFD, DRM_BO_MEM_TT, 1); - } + ret = drmCommandNone(pI830->drmSubFD, DRM_I915_GEM_ENTERVT); + if (ret != 0) + FatalError("DRM_I915_ENTERVT failed: %s\n", strerror(ret)); } -#endif /* XF86DRI_MM */ +#endif /* XF86DRI */ - if (I830IsPrimary(pScrn)) - if (!i830_bind_all_memory(pScrn)) - return FALSE; + if (!i830_bind_all_memory(pScrn)) + return FALSE; i830_describe_allocations(pScrn, 1, ""); /* Update the screen pixmap in case the buffer moved */ i830_update_front_offset(pScrn); - if (pI830->useEXA && IS_I965G(pI830)) - gen4_render_state_init(pScrn); + intel_batch_init(pScrn); - if (i830_check_error_state(pScrn)) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Existing errors found in hardware state.\n"); - } + if ((pI830->accel == ACCEL_EXA || pI830->accel == ACCEL_UXA) && + IS_I965G(pI830)) + gen4_render_state_init(pScrn); - i830_stop_ring(pScrn, FALSE); - i830_start_ring(pScrn); - if (!pI830->SWCursor) - I830InitHWCursor(pScrn); + if (!pI830->use_drm_mode) { + if (i830_check_error_state(pScrn)) { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Existing errors found in hardware state.\n"); + } - /* Tell the BIOS that we're in control of mode setting now. */ - i830_init_bios_control(pScrn); + /* Re-set up the ring. */ + if (!pI830->memory_manager) { + i830_stop_ring(pScrn, FALSE); + i830_start_ring(pScrn); + } + I830InitHWCursor(pScrn); - i830_init_clock_gating(pScrn); + /* Tell the BIOS that we're in control of mode setting now. */ + i830_init_bios_control(pScrn); - if (pI830->power_context) - OUTREG(PWRCTXA, pI830->power_context->offset | PWRCTX_EN); + i830_init_clock_gating(pScrn); - /* Clear the framebuffer */ - memset(pI830->FbBase + pScrn->fbOffset, 0, - pScrn->virtualY * pScrn->displayWidth * pI830->cpp); + if (pI830->power_context) + OUTREG(PWRCTXA, pI830->power_context->offset | PWRCTX_EN); + /* Clear the framebuffer */ + memset(pI830->FbBase + pScrn->fbOffset, 0, + pScrn->virtualY * pScrn->displayWidth * pI830->cpp); + } if (!xf86SetDesiredModes (pScrn)) return FALSE; - - if (pI830->debug_modes) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Hardware state at EnterVT:\n"); - i830DumpRegs (pScrn); + + if (!pI830->use_drm_mode) { + if (pI830->debug_modes) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Hardware state at EnterVT:\n"); + i830DumpRegs (pScrn); + } + i830DescribeOutputConfiguration(pScrn); } - i830DescribeOutputConfiguration(pScrn); #ifdef XF86DRI - if (pI830->directRenderingEnabled) { + if (pI830->directRenderingType == DRI_XF86DRI) { /* HW status is fixed, we need to set it up before any drm * operation which accessing that page, like irq install, etc. */ - if (pI830->starting) { - if (HWS_NEED_GFX(pI830) && !I830DRISetHWS(pScrn)) { + if (pI830->starting && !pI830->memory_manager) { + if (pI830->hw_status != NULL && !I830DRISetHWS(pScrn)) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Fail to setup hardware status page.\n"); I830DRICloseScreen(pScrn->pScreen); return FALSE; } - if (!I830DRIInstIrqHandler(pScrn)) { + if (!pI830->memory_manager && !I830DRIInstIrqHandler(pScrn)) { I830DRICloseScreen(pScrn->pScreen); return FALSE; } @@ -3448,7 +3627,8 @@ I830EnterVT(int scrnIndex, int flags) I830DRIResume(screenInfo.screens[scrnIndex]); - i830_refresh_ring(pScrn); + if (!pI830->memory_manager) + i830_refresh_ring(pScrn); I830Sync(pScrn); sarea->texAge++; @@ -3462,18 +3642,16 @@ I830EnterVT(int scrnIndex, int flags) } #endif - /* Set the hotkey to just notify us. We can check its results periodically - * in the CheckDevicesTimer. Eventually we want the kernel to just hand us - * an input event when someone presses the button, but for now we just have - * to poll. + /* Set the hotkey to just notify us. We could check its results + * periodically and attempt to do something, but it seems like we basically + * never get results when we should, and this should all be better handled + * through ACPI putting the key events out through evdev and your desktop + * environment picking it up. */ i830SetHotkeyControl(pScrn, HOTKEY_DRIVER_NOTIFY); - if (pI830->checkDevices) - pI830->devicesTimer = TimerSet(NULL, 0, 1000, I830CheckDevicesTimer, pScrn); - /* Mark 3D state as being clobbered and setup the basics */ - *pI830->last_3d = LAST_3D_OTHER; + pI830->last_3d = LAST_3D_OTHER; IntelEmitInvarientState(pScrn); return TRUE; @@ -3501,23 +3679,17 @@ I830CloseScreen(int scrnIndex, ScreenPtr pScreen) if (pScrn->vtSema == TRUE) { I830LeaveVT(scrnIndex, 0); -#ifdef XF86DRI_MM - if (pI830->directRenderingEnabled) { - if (pI830->memory_manager != NULL) { - drmMMUnlock(pI830->drmSubFD, DRM_BO_MEM_TT, 1); - } - } -#endif /* XF86DRI_MM */ - } if (pI830->devicesTimer) - TimerCancel(pI830->devicesTimer); + TimerFree(pI830->devicesTimer); pI830->devicesTimer = NULL; - DPRINTF(PFX, "\nUnmapping memory\n"); - I830UnmapMem(pScrn); - vgaHWUnmapMem(pScrn); + if (!pI830->use_drm_mode) { + DPRINTF(PFX, "\nUnmapping memory\n"); + I830UnmapMem(pScrn); + vgaHWUnmapMem(pScrn); + } if (pI830->ScanlineColorExpandBuffers) { xfree(pI830->ScanlineColorExpandBuffers); @@ -3532,41 +3704,46 @@ I830CloseScreen(int scrnIndex, ScreenPtr pScreen) } #endif #ifdef I830_USE_EXA - if (pI830->useEXA && pI830->EXADriverPtr) { + if (pI830->EXADriverPtr) { exaDriverFini(pScreen); xfree(pI830->EXADriverPtr); pI830->EXADriverPtr = NULL; } #endif +#ifdef I830_USE_UXA + if (pI830->uxa_driver) { + uxa_driver_fini (pScreen); + xfree (pI830->uxa_driver); + pI830->uxa_driver = NULL; + } +#endif xf86_cursors_fini (pScreen); i830_allocator_fini(pScrn); -#ifdef XF86DRI - if (pI830->directRenderingOpen) { -#ifdef DAMAGE - if (pI830->pDamage) { - PixmapPtr pPix = pScreen->GetScreenPixmap(pScreen); - - DamageUnregister(&pPix->drawable, pI830->pDamage); - DamageDestroy(pI830->pDamage); - pI830->pDamage = NULL; - } + +#ifdef I830_XV + i965_free_video(pScrn); #endif + + dri_bufmgr_destroy(pI830->bufmgr); + pI830->bufmgr = NULL; + +#ifdef XF86DRI + if (pI830->directRenderingOpen && + pI830->directRenderingType == DRI_XF86DRI) { pI830->directRenderingOpen = FALSE; I830DRICloseScreen(pScreen); } #endif - if (I830IsPrimary(pScrn)) { - xf86GARTCloseScreen(scrnIndex); - - xfree(pI830->LpRing); - pI830->LpRing = NULL; - xfree(pI830->overlayOn); - pI830->overlayOn = NULL; - xfree(pI830->last_3d); - pI830->last_3d = NULL; +#ifdef DRI2 + if (pI830->directRenderingOpen && pI830->directRenderingType == DRI_DRI2) { + pI830->directRenderingOpen = FALSE; + I830DRI2CloseScreen(pScreen); } +#endif + + xf86GARTCloseScreen(scrnIndex); pScrn->PointerMoved = pI830->PointerMoved; pScrn->vtSema = FALSE; @@ -3644,21 +3821,8 @@ I830PMEvent(int scrnIndex, pmEvent event, Bool undo) break; /* This is currently used for ACPI */ case XF86_APM_CAPABILITY_CHANGED: -#if 0 - /* If we had status checking turned on, turn it off now */ - if (pI830->checkDevices) { - if (pI830->devicesTimer) - TimerCancel(pI830->devicesTimer); - pI830->devicesTimer = NULL; - pI830->checkDevices = FALSE; - } -#endif - if (!I830IsPrimary(pScrn)) - return TRUE; - ErrorF("I830PMEvent: Capability change\n"); - I830CheckDevicesTimer(NULL, 0, pScrn); SaveScreens(SCREEN_SAVER_FORCER, ScreenSaverReset); if (pI830->quirk_flag & QUIRK_RESET_MODES) xf86SetDesiredModes(pScrn); @@ -3723,62 +3887,39 @@ i830MonitorDetectDebugger(ScrnInfoPtr pScrn) } #endif -static CARD32 -I830CheckDevicesTimer(OsTimerPtr timer, CARD32 now, pointer arg) -{ - ScrnInfoPtr pScrn = (ScrnInfoPtr) arg; - I830Ptr pI830 = I830PTR(pScrn); - uint8_t gr18; - - if (!pScrn->vtSema) - return 1000; - -#if 0 - i830MonitorDetectDebugger(pScrn); -#endif - - /* Check for a hotkey press report from the BIOS. */ - gr18 = pI830->readControl(pI830, GRX, 0x18); - if ((gr18 & (HOTKEY_TOGGLE | HOTKEY_SWITCH)) != 0) { - /* The user has pressed the hotkey requesting a toggle or switch. - * Re-probe our connected displays and turn on whatever we find. - * - * In the future, we want the hotkey to dump down to a user app which - * implements a sensible policy using RandR-1.2. For now, all we get - * is this. - */ - - xf86ProbeOutputModes (pScrn, 0, 0); - xf86SetScrnInfoModes (pScrn); - xf86DiDGAReInit (pScrn->pScreen); - xf86SwitchMode(pScrn->pScreen, pScrn->currentMode); - - /* Clear the BIOS's hotkey press flags */ - gr18 &= ~(HOTKEY_TOGGLE | HOTKEY_SWITCH); - pI830->writeControl(pI830, GRX, 0x18, gr18); - } - - return 1000; -} - void i830WaitSync(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); + switch (pI830->accel) { #ifdef I830_USE_XAA - if (!pI830->noAccel && !pI830->useEXA && pI830->AccelInfoRec - && pI830->AccelInfoRec->NeedToSync) { - (*pI830->AccelInfoRec->Sync)(pScrn); - pI830->AccelInfoRec->NeedToSync = FALSE; - } + case ACCEL_XAA: + if (pI830->AccelInfoRec && pI830->AccelInfoRec->NeedToSync) { + (*pI830->AccelInfoRec->Sync)(pScrn); + pI830->AccelInfoRec->NeedToSync = FALSE; + } + break; #endif #ifdef I830_USE_EXA - if (!pI830->noAccel && pI830->useEXA && pI830->EXADriverPtr) { - ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; - exaWaitSync(pScreen); - } + case ACCEL_EXA: + if (pI830->EXADriverPtr) { + ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; + exaWaitSync(pScreen); + } + break; +#endif +#ifdef I830_USE_UXA + case ACCEL_UXA: + if (pI830->uxa_driver && pI830->need_sync) { + pI830->need_sync = FALSE; + I830Sync(pScrn); + } + break; #endif + default: + break; + } } void @@ -3786,16 +3927,30 @@ i830MarkSync(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); + switch (pI830->accel) { #ifdef I830_USE_XAA - if (!pI830->useEXA && pI830->AccelInfoRec) - pI830->AccelInfoRec->NeedToSync = TRUE; + case ACCEL_XAA: + if (pI830->AccelInfoRec) + pI830->AccelInfoRec->NeedToSync = TRUE; + break; #endif #ifdef I830_USE_EXA - if (pI830->useEXA && pI830->EXADriverPtr) { - ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; - exaMarkSync(pScreen); - } + case ACCEL_EXA: + if (pI830->EXADriverPtr) { + ScreenPtr pScreen = screenInfo.screens[pScrn->scrnIndex]; + exaMarkSync(pScreen); + } + break; #endif +#ifdef I830_USE_UXA + case ACCEL_UXA: + if (pI830->uxa_driver) + pI830->need_sync = TRUE; + break; +#endif + default: + break; + } } void diff --git a/driver/xf86-video-intel/src/i830_exa.c b/driver/xf86-video-intel/src/i830_exa.c index 2c807c513..39011bc64 100644 --- a/driver/xf86-video-intel/src/i830_exa.c +++ b/driver/xf86-video-intel/src/i830_exa.c @@ -35,26 +35,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "xaarop.h" #include "i830.h" #include "i810_reg.h" +#include "i915_drm.h" #include <string.h> - -#ifdef I830DEBUG -#define DEBUG_I830FALLBACK 1 -#endif +#include <sys/mman.h> #define ALWAYS_SYNC 0 - -#ifdef DEBUG_I830FALLBACK -#define I830FALLBACK(s, arg...) \ -do { \ - DPRINTF(PFX, "EXA fallback: " s "\n", ##arg); \ - return FALSE; \ -} while(0) -#else -#define I830FALLBACK(s, arg...) \ -do { \ - return FALSE; \ -} while(0) -#endif +#define ALWAYS_FLUSH 0 const int I830CopyROP[16] = { @@ -96,6 +82,22 @@ const int I830PatternROP[16] = ROP_1 }; +#ifdef I830_USE_UXA +static int uxa_pixmap_index; +#endif + +#ifndef SERVER_1_5 +static inline void *dixLookupPrivate(DevUnion **privates, int *key) +{ + return (*privates)[*key].ptr; +} + +static inline void dixSetPrivate(DevUnion **privates, int *key, void *val) +{ + (*privates)[*key].ptr = val; +} +#endif + /** * Returns whether a given pixmap is tiled or not. * @@ -110,6 +112,21 @@ i830_pixmap_tiled(PixmapPtr pPixmap) ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); unsigned long offset; + dri_bo *bo; + + bo = i830_get_pixmap_bo(pPixmap); + if (bo != NULL) { + uint32_t tiling_mode, swizzle_mode; + int ret; + + ret = drm_intel_bo_get_tiling(bo, &tiling_mode, &swizzle_mode); + if (ret != 0) { + FatalError("Couldn't get tiling on bo %p: %s\n", + bo, strerror(-ret)); + } + + return tiling_mode != I915_TILING_NONE; + } offset = intel_get_pixmap_offset(pPixmap); if (offset == pI830->front_buffer->offset && @@ -121,6 +138,36 @@ i830_pixmap_tiled(PixmapPtr pPixmap) return FALSE; } +Bool +i830_get_aperture_space(ScrnInfoPtr pScrn, drm_intel_bo **bo_table, int num_bos) +{ + I830Ptr pI830 = I830PTR(pScrn); + + bo_table[0] = pI830->batch_bo; + if (drm_intel_bufmgr_check_aperture_space(bo_table, num_bos) != 0) { + intel_batch_flush(pScrn, FALSE); + bo_table[0] = pI830->batch_bo; + if (drm_intel_bufmgr_check_aperture_space(bo_table, num_bos) != 0) + I830FALLBACK("Couldn't get aperture space for BOs\n"); + } + return TRUE; +} + +static unsigned long +i830_pixmap_pitch(PixmapPtr pixmap) +{ + return pixmap->devKind; +} + +static int +i830_pixmap_pitch_is_aligned(PixmapPtr pixmap) +{ + ScrnInfoPtr pScrn = xf86Screens[pixmap->drawable.pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); + + return i830_pixmap_pitch(pixmap) % pI830->accel_pixmap_pitch_alignment == 0; +} + static Bool i830_exa_pixmap_is_offscreen(PixmapPtr pPixmap) { @@ -162,7 +209,11 @@ I830EXAPrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg) { ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - unsigned long offset, pitch; + unsigned long pitch; + drm_intel_bo *bo_table[] = { + NULL, /* batch_bo */ + i830_get_pixmap_bo(pPixmap), + }; if (!EXA_PM_IS_SOLID(&pPixmap->drawable, planemask)) I830FALLBACK("planemask is not solid"); @@ -170,16 +221,19 @@ I830EXAPrepareSolid(PixmapPtr pPixmap, int alu, Pixel planemask, Pixel fg) if (pPixmap->drawable.bitsPerPixel == 24) I830FALLBACK("solid 24bpp unsupported!\n"); + if (pPixmap->drawable.bitsPerPixel < 8) + I830FALLBACK("under 8bpp pixmaps unsupported\n"); + i830_exa_check_pitch_2d(pPixmap); - offset = exaGetPixmapOffset(pPixmap); - pitch = exaGetPixmapPitch(pPixmap); + pitch = i830_pixmap_pitch(pPixmap); - if (offset % pI830->EXADriverPtr->pixmapOffsetAlign != 0) - I830FALLBACK("pixmap offset not aligned"); - if (pitch % pI830->EXADriverPtr->pixmapPitchAlign != 0) + if (!i830_pixmap_pitch_is_aligned(pPixmap)) I830FALLBACK("pixmap pitch not aligned"); + if (!i830_get_aperture_space(pScrn, bo_table, ARRAY_SIZE(bo_table))) + return FALSE; + pI830->BR[13] = (I830PatternROP[alu] & 0xff) << 16 ; switch (pPixmap->drawable.bitsPerPixel) { case 8: @@ -202,11 +256,10 @@ I830EXASolid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2) { ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - unsigned long offset, pitch; + unsigned long pitch; uint32_t cmd; - offset = exaGetPixmapOffset(pPixmap); - pitch = exaGetPixmapPitch(pPixmap); + pitch = i830_pixmap_pitch(pPixmap); { BEGIN_BATCH(6); @@ -227,7 +280,7 @@ I830EXASolid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2) OUT_BATCH(pI830->BR[13] | pitch); OUT_BATCH((y1 << 16) | (x1 & 0xffff)); OUT_BATCH((y2 << 16) | (x2 & 0xffff)); - OUT_BATCH(offset); + OUT_RELOC_PIXMAP(pPixmap, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0); OUT_BATCH(pI830->BR[16]); ADVANCE_BATCH(); } @@ -236,11 +289,16 @@ I830EXASolid(PixmapPtr pPixmap, int x1, int y1, int x2, int y2) static void I830EXADoneSolid(PixmapPtr pPixmap) { -#if ALWAYS_SYNC +#if ALWAYS_SYNC || ALWAYS_FLUSH ScrnInfoPtr pScrn = xf86Screens[pPixmap->drawable.pScreen->myNum]; +#if ALWAYS_FLUSH + intel_batch_flush(pScrn, FALSE); +#endif +#if ALWAYS_SYNC I830Sync(pScrn); #endif +#endif } /** @@ -253,10 +311,21 @@ I830EXAPrepareCopy(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, int xdir, { ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); + drm_intel_bo *bo_table[] = { + NULL, /* batch_bo */ + i830_get_pixmap_bo(pSrcPixmap), + i830_get_pixmap_bo(pDstPixmap), + }; if (!EXA_PM_IS_SOLID(&pSrcPixmap->drawable, planemask)) I830FALLBACK("planemask is not solid"); + if (pDstPixmap->drawable.bitsPerPixel < 8) + I830FALLBACK("under 8bpp pixmaps unsupported\n"); + + if (!i830_get_aperture_space(pScrn, bo_table, ARRAY_SIZE(bo_table))) + return FALSE; + i830_exa_check_pitch_2d(pSrcPixmap); i830_exa_check_pitch_2d(pDstPixmap); @@ -285,15 +354,13 @@ I830EXACopy(PixmapPtr pDstPixmap, int src_x1, int src_y1, int dst_x1, I830Ptr pI830 = I830PTR(pScrn); uint32_t cmd; int dst_x2, dst_y2; - unsigned int dst_off, dst_pitch, src_off, src_pitch; + unsigned int dst_pitch, src_pitch; dst_x2 = dst_x1 + w; dst_y2 = dst_y1 + h; - dst_off = exaGetPixmapOffset(pDstPixmap); - dst_pitch = exaGetPixmapPitch(pDstPixmap); - src_off = exaGetPixmapOffset(pI830->pSrcPixmap); - src_pitch = exaGetPixmapPitch(pI830->pSrcPixmap); + dst_pitch = i830_pixmap_pitch(pDstPixmap); + src_pitch = i830_pixmap_pitch(pI830->pSrcPixmap); { BEGIN_BATCH(8); @@ -322,10 +389,10 @@ I830EXACopy(PixmapPtr pDstPixmap, int src_x1, int src_y1, int dst_x1, OUT_BATCH(pI830->BR[13] | dst_pitch); OUT_BATCH((dst_y1 << 16) | (dst_x1 & 0xffff)); OUT_BATCH((dst_y2 << 16) | (dst_x2 & 0xffff)); - OUT_BATCH(dst_off); + OUT_RELOC_PIXMAP(pDstPixmap, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0); OUT_BATCH((src_y1 << 16) | (src_x1 & 0xffff)); OUT_BATCH(src_pitch); - OUT_BATCH(src_off); + OUT_RELOC_PIXMAP(pI830->pSrcPixmap, I915_GEM_DOMAIN_RENDER, 0, 0); ADVANCE_BATCH(); } @@ -334,11 +401,37 @@ I830EXACopy(PixmapPtr pDstPixmap, int src_x1, int src_y1, int dst_x1, static void I830EXADoneCopy(PixmapPtr pDstPixmap) { -#if ALWAYS_SYNC +#if ALWAYS_SYNC || ALWAYS_FLUSH ScrnInfoPtr pScrn = xf86Screens[pDstPixmap->drawable.pScreen->myNum]; +#if ALWAYS_FLUSH + intel_batch_flush(pScrn, FALSE); +#endif +#if ALWAYS_SYNC I830Sync(pScrn); #endif +#endif +} + + +/** + * Do any cleanup from the Composite operation. + * + * This is shared between i830 through i965. + */ +void +i830_done_composite(PixmapPtr pDst) +{ +#if ALWAYS_SYNC || ALWAYS_FLUSH + ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum]; + +#if ALWAYS_FLUSH + intel_batch_flush(pScrn, FALSE); +#endif +#if ALWAYS_SYNC + I830Sync(pScrn); +#endif +#endif } #define xFixedToFloat(val) \ @@ -424,10 +517,151 @@ i830_transform_is_affine (PictTransformPtr t) return t->matrix[2][0] == 0 && t->matrix[2][1] == 0; } -/* - * TODO: - * - Dual head? - */ +#ifdef XF86DRM_MODE + +static void * +I830EXACreatePixmap(ScreenPtr screen, int size, int align) +{ + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + I830Ptr i830 = I830PTR(scrn); + struct i830_exa_pixmap_priv *new_priv; + + new_priv = xcalloc(1, sizeof(struct i830_exa_pixmap_priv)); + if (!new_priv) + return NULL; + + if (size == 0) + return new_priv; + + new_priv->bo = dri_bo_alloc(i830->bufmgr, "pixmap", size, + i830->accel_pixmap_offset_alignment); + if (!new_priv->bo) { + xfree(new_priv); + return NULL; + } + + return new_priv; +} + +static void +I830EXADestroyPixmap(ScreenPtr pScreen, void *driverPriv) +{ + struct i830_exa_pixmap_priv *priv = driverPriv; + + if (priv->bo) + dri_bo_unreference(priv->bo); + xfree(priv); +} + +static Bool I830EXAPixmapIsOffscreen(PixmapPtr pPix) +{ + struct i830_exa_pixmap_priv *driver_priv = exaGetPixmapDriverPrivate(pPix); + + if (driver_priv && driver_priv->bo) + return TRUE; + + return FALSE; +} + +static Bool I830EXAPrepareAccess(PixmapPtr pPix, int index) +{ + ScreenPtr screen = pPix->drawable.pScreen; + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + I830Ptr i830 = I830PTR(scrn); + struct i830_exa_pixmap_priv *driver_priv = exaGetPixmapDriverPrivate(pPix); + + if (!driver_priv) { + xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: no driver private?\n", + __FUNCTION__); + return FALSE; + } + + if (!driver_priv->bo) { + xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: no buffer object?\n", + __FUNCTION__); + return TRUE; + } + + intel_batch_flush(scrn, FALSE); + if (i830->need_sync) { + I830Sync(scrn); + i830->need_sync = FALSE; + } + if (drm_intel_gem_bo_map_gtt(driver_priv->bo)) { + xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: bo map failed\n", + __FUNCTION__); + return FALSE; + } + pPix->devPrivate.ptr = driver_priv->bo->virtual; + + return TRUE; +} + +static void I830EXAFinishAccess(PixmapPtr pPix, int index) +{ + ScreenPtr screen = pPix->drawable.pScreen; + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + I830Ptr i830 = I830PTR(scrn); + struct i830_exa_pixmap_priv *driver_priv = exaGetPixmapDriverPrivate(pPix); + + if (!driver_priv) { + xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: no driver private?\n", + __FUNCTION__); + return; + } + + if (!driver_priv->bo) { + xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: no buffer object?\n", + __FUNCTION__); + return; + } + + dri_bo_unmap(driver_priv->bo); + pPix->devPrivate.ptr = NULL; + if (driver_priv->bo == i830->front_buffer->bo) + i830->need_flush = TRUE; +} + +static Bool I830EXAModifyPixmapHeader(PixmapPtr pPix, int width, int height, + int depth, int bitsPerPixel, int devKind, + pointer pPixData) +{ + ScreenPtr pScreen = pPix->drawable.pScreen; + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); + struct i830_exa_pixmap_priv *driver_priv = exaGetPixmapDriverPrivate(pPix); + + if (!driver_priv) + return FALSE; + + if (pI830->use_drm_mode && + drmmode_is_rotate_pixmap(pScrn, pPixData, &driver_priv->bo)) { + /* this is a rotate pixmap */ + dri_bo_unmap(driver_priv->bo); + dri_bo_reference(driver_priv->bo); + miModifyPixmapHeader(pPix, width, height, depth, + bitsPerPixel, devKind, NULL); + } + + if (pPixData == pI830->FbBase + pScrn->fbOffset) { + if (driver_priv->bo) + dri_bo_unreference(driver_priv->bo); + driver_priv->bo = + intel_bo_gem_create_from_name(pI830->bufmgr, "front", + pI830->front_buffer->gem_name); + if (!driver_priv->bo) + return FALSE; + + miModifyPixmapHeader(pPix, width, height, depth, + bitsPerPixel, devKind, NULL); + + return TRUE; + } + return FALSE; +} + +#endif /* XF86DRM_MODE */ + Bool I830EXAInit(ScreenPtr pScreen) { @@ -436,7 +670,7 @@ I830EXAInit(ScreenPtr pScreen) pI830->EXADriverPtr = exaDriverAlloc(); if (pI830->EXADriverPtr == NULL) { - pI830->noAccel = TRUE; + pI830->accel = ACCEL_NONE; return FALSE; } memset(pI830->EXADriverPtr, 0, sizeof(*pI830->EXADriverPtr)); @@ -454,16 +688,30 @@ I830EXAInit(ScreenPtr pScreen) "EXA compatibility mode. Output rotation rendering " "performance may suffer\n"); #endif - pI830->EXADriverPtr->memoryBase = pI830->FbBase; - if (pI830->exa_offscreen) { - pI830->EXADriverPtr->offScreenBase = pI830->exa_offscreen->offset; - pI830->EXADriverPtr->memorySize = pI830->exa_offscreen->offset + - pI830->exa_offscreen->size; + if (!pI830->use_drm_mode) { + pI830->EXADriverPtr->memoryBase = pI830->FbBase; + if (pI830->exa_offscreen) { + pI830->EXADriverPtr->offScreenBase = pI830->exa_offscreen->offset; + pI830->EXADriverPtr->memorySize = pI830->exa_offscreen->offset + + pI830->exa_offscreen->size; + } else { + pI830->EXADriverPtr->offScreenBase = pI830->FbMapSize; + pI830->EXADriverPtr->memorySize = pI830->FbMapSize; + } + pI830->EXADriverPtr->flags = EXA_OFFSCREEN_PIXMAPS; } else { - pI830->EXADriverPtr->offScreenBase = pI830->FbMapSize; - pI830->EXADriverPtr->memorySize = pI830->FbMapSize; +#ifdef XF86DRM_MODE + pI830->EXADriverPtr->flags = EXA_OFFSCREEN_PIXMAPS | EXA_HANDLES_PIXMAPS; + pI830->EXADriverPtr->PrepareAccess = I830EXAPrepareAccess; + pI830->EXADriverPtr->FinishAccess = I830EXAFinishAccess; +#if EXA_VERSION_MINOR >= 4 + pI830->EXADriverPtr->CreatePixmap = I830EXACreatePixmap; + pI830->EXADriverPtr->DestroyPixmap = I830EXADestroyPixmap; + pI830->EXADriverPtr->PixmapIsOffscreen = I830EXAPixmapIsOffscreen; + pI830->EXADriverPtr->ModifyPixmapHeader = I830EXAModifyPixmapHeader; +#endif +#endif /* XF86DRM_MODE */ } - pI830->EXADriverPtr->flags = EXA_OFFSCREEN_PIXMAPS; DPRINTF(PFX, "EXA Mem: memoryBase 0x%x, end 0x%x, offscreen base 0x%x, " "memorySize 0x%x\n", @@ -472,55 +720,10 @@ I830EXAInit(ScreenPtr pScreen) pI830->EXADriverPtr->offScreenBase, pI830->EXADriverPtr->memorySize); - - /* Limits are described in the BLT engine chapter under Graphics Data Size - * Limitations, and the descriptions of SURFACE_STATE, 3DSTATE_BUFFER_INFO, - * 3DSTATE_DRAWING_RECTANGLE, 3DSTATE_MAP_INFO, and 3DSTATE_MAP_INFO. - * - * i845 through i965 limits 2D rendering to 65536 lines and pitch of 32768. - * - * i965 limits 3D surface to (2*element size)-aligned offset if un-tiled. - * i965 limits 3D surface to 4kB-aligned offset if tiled. - * i965 limits 3D surfaces to w,h of ?,8192. - * i965 limits 3D surface to pitch of 1B - 128kB. - * i965 limits 3D surface pitch alignment to 1 or 2 times the element size. - * i965 limits 3D surface pitch alignment to 512B if tiled. - * i965 limits 3D destination drawing rect to w,h of 8192,8192. - * - * i915 limits 3D textures to 4B-aligned offset if un-tiled. - * i915 limits 3D textures to ~4kB-aligned offset if tiled. - * i915 limits 3D textures to width,height of 2048,2048. - * i915 limits 3D textures to pitch of 16B - 8kB, in dwords. - * i915 limits 3D destination to ~4kB-aligned offset if tiled. - * i915 limits 3D destination to pitch of 16B - 8kB, in dwords, if un-tiled. - * i915 limits 3D destination to pitch of 512B - 8kB, in tiles, if tiled. - * i915 limits 3D destination to POT aligned pitch if tiled. - * i915 limits 3D destination drawing rect to w,h of 2048,2048. - * - * i845 limits 3D textures to 4B-aligned offset if un-tiled. - * i845 limits 3D textures to ~4kB-aligned offset if tiled. - * i845 limits 3D textures to width,height of 2048,2048. - * i845 limits 3D textures to pitch of 4B - 8kB, in dwords. - * i845 limits 3D destination to 4B-aligned offset if un-tiled. - * i845 limits 3D destination to ~4kB-aligned offset if tiled. - * i845 limits 3D destination to pitch of 8B - 8kB, in dwords. - * i845 limits 3D destination drawing rect to w,h of 2048,2048. - * - * For the tiled issues, the only tiled buffer we draw to should be - * the front, which will have an appropriate pitch/offset already set up, - * so EXA doesn't need to worry. - */ - if (IS_I965G(pI830)) { - pI830->EXADriverPtr->pixmapOffsetAlign = 4 * 2; - pI830->EXADriverPtr->pixmapPitchAlign = 16; - pI830->EXADriverPtr->maxX = 8192; - pI830->EXADriverPtr->maxY = 8192; - } else { - pI830->EXADriverPtr->pixmapOffsetAlign = 4; - pI830->EXADriverPtr->pixmapPitchAlign = 16; - pI830->EXADriverPtr->maxX = 2048; - pI830->EXADriverPtr->maxY = 2048; - } + pI830->EXADriverPtr->pixmapOffsetAlign = pI830->accel_pixmap_offset_alignment; + pI830->EXADriverPtr->pixmapPitchAlign = pI830->accel_pixmap_pitch_alignment; + pI830->EXADriverPtr->maxX = pI830->accel_max_x; + pI830->EXADriverPtr->maxY = pI830->accel_max_y; /* Sync */ pI830->EXADriverPtr->WaitMarker = I830EXASync; @@ -546,7 +749,7 @@ I830EXAInit(ScreenPtr pScreen) { pI830->EXADriverPtr->CheckComposite = i915_check_composite; pI830->EXADriverPtr->PrepareComposite = i915_prepare_composite; - pI830->EXADriverPtr->Composite = i830_composite; + pI830->EXADriverPtr->Composite = i915_composite; pI830->EXADriverPtr->DoneComposite = i830_done_composite; } else { pI830->EXADriverPtr->CheckComposite = i965_check_composite; @@ -555,7 +758,8 @@ I830EXAInit(ScreenPtr pScreen) pI830->EXADriverPtr->DoneComposite = i830_done_composite; } #if EXA_VERSION_MINOR >= 2 - pI830->EXADriverPtr->PixmapIsOffscreen = i830_exa_pixmap_is_offscreen; + if (!pI830->use_drm_mode) + pI830->EXADriverPtr->PixmapIsOffscreen = i830_exa_pixmap_is_offscreen; #endif if(!exaDriverInit(pScreen, pI830->EXADriverPtr)) { @@ -564,7 +768,7 @@ I830EXAInit(ScreenPtr pScreen) pI830->EXADriverPtr->exa_minor = 0; if(!exaDriverInit(pScreen, pI830->EXADriverPtr)) { xfree(pI830->EXADriverPtr); - pI830->noAccel = TRUE; + pI830->accel = ACCEL_NONE; return FALSE; } } @@ -574,6 +778,338 @@ I830EXAInit(ScreenPtr pScreen) return TRUE; } +dri_bo * +i830_get_pixmap_bo(PixmapPtr pixmap) +{ + ScreenPtr screen = pixmap->drawable.pScreen; + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + I830Ptr i830 = I830PTR(scrn); + +#ifdef I830_USE_UXA + if (i830->accel == ACCEL_UXA) { + return dixLookupPrivate(&pixmap->devPrivates, &uxa_pixmap_index); + } +#endif +#ifdef XF86DRM_MODE + if (i830->accel == ACCEL_EXA) { + struct i830_exa_pixmap_priv *driver_priv = + exaGetPixmapDriverPrivate(pixmap); + return driver_priv ? driver_priv->bo : NULL; + } +#endif + + return NULL; +} + +void +i830_set_pixmap_bo(PixmapPtr pixmap, dri_bo *bo) +{ + ScrnInfoPtr pScrn = xf86Screens[pixmap->drawable.pScreen->myNum]; + I830Ptr i830 = I830PTR(pScrn); + dri_bo *old_bo = i830_get_pixmap_bo (pixmap); + + if (old_bo) + dri_bo_unreference (old_bo); +#if I830_USE_UXA + if (i830->accel == ACCEL_UXA) { + dri_bo_reference(bo); + dixSetPrivate(&pixmap->devPrivates, &uxa_pixmap_index, bo); + } +#endif +#ifdef XF86DRM_MODE + if (i830->accel == ACCEL_EXA) { + struct i830_exa_pixmap_priv *driver_priv = + exaGetPixmapDriverPrivate(pixmap); + if (driver_priv) { + dri_bo_reference(bo); + driver_priv->bo = bo; + } + } +#endif +} +#if defined(I830_USE_UXA) + +static void +i830_uxa_set_pixmap_bo (PixmapPtr pixmap, dri_bo *bo) +{ + dixSetPrivate(&pixmap->devPrivates, &uxa_pixmap_index, bo); +} + +static Bool +i830_uxa_prepare_access (PixmapPtr pixmap, uxa_access_t access) +{ + dri_bo *bo = i830_get_pixmap_bo (pixmap); + + if (bo) { + ScreenPtr screen = pixmap->drawable.pScreen; + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + I830Ptr i830 = I830PTR(scrn); + + intel_batch_flush(scrn, FALSE); + /* XXX: dri_bo_map should handle syncing for us, what's the deal? */ + if (i830->need_sync) { + I830Sync(scrn); + i830->need_sync = FALSE; + } + + /* No VT sema or GEM? No GTT mapping. */ + if (!scrn->vtSema || !i830->memory_manager) { + if (dri_bo_map(bo, access == UXA_ACCESS_RW) != 0) + return FALSE; + pixmap->devPrivate.ptr = bo->virtual; + return TRUE; + } + + /* Kernel manages fences at GTT map/fault time */ + if (i830->kernel_exec_fencing) { + if (drm_intel_gem_bo_map_gtt(bo)) { + xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: bo map failed\n", + __FUNCTION__); + return FALSE; + } + pixmap->devPrivate.ptr = bo->virtual; + } else { /* or not... */ + if (drm_intel_bo_pin(bo, 4096) != 0) + return FALSE; + drm_intel_gem_bo_start_gtt_access(bo, access == UXA_ACCESS_RW); + pixmap->devPrivate.ptr = i830->FbBase + bo->offset; + } + } + return TRUE; +} + +static void +i830_uxa_finish_access (PixmapPtr pixmap) +{ + dri_bo *bo = i830_get_pixmap_bo (pixmap); + + if (bo) { + ScreenPtr screen = pixmap->drawable.pScreen; + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + I830Ptr i830 = I830PTR(scrn); + + if (bo == i830->front_buffer->bo) + i830->need_flush = TRUE; + + if (!scrn->vtSema || !i830->memory_manager) { + dri_bo_unmap(bo); + pixmap->devPrivate.ptr = NULL; + return; + } + + if (i830->kernel_exec_fencing) + drm_intel_gem_bo_unmap_gtt(bo); + else + drm_intel_bo_unpin(bo); + pixmap->devPrivate.ptr = NULL; + } +} + +void +i830_uxa_block_handler (ScreenPtr screen) +{ + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + I830Ptr i830 = I830PTR(scrn); + + if (i830->need_flush) { + dri_bo_wait_rendering (i830->front_buffer->bo); + i830->need_flush = FALSE; + } +} + +static Bool +i830_uxa_pixmap_is_offscreen(PixmapPtr pixmap) +{ + ScreenPtr screen = pixmap->drawable.pScreen; + + /* The front buffer is always in memory and pinned */ + if (screen->GetScreenPixmap(screen) == pixmap) + return TRUE; + + return i830_get_pixmap_bo (pixmap) != NULL; +} + +static PixmapPtr +i830_uxa_create_pixmap (ScreenPtr screen, int w, int h, int depth, unsigned usage) +{ + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; + I830Ptr i830 = I830PTR(scrn); + dri_bo *bo; + int stride; + PixmapPtr pixmap; + + if (w > 32767 || h > 32767) + return NullPixmap; + +#ifdef SERVER_1_5 + pixmap = fbCreatePixmap (screen, 0, 0, depth, usage); +#else + pixmap = fbCreatePixmap (screen, 0, 0, depth); +#endif + + if (w && h) + { + unsigned int size; + uint32_t tiling = I915_TILING_NONE; + + stride = ROUND_TO((w * pixmap->drawable.bitsPerPixel + 7) / 8, + i830->accel_pixmap_pitch_alignment); + + if (usage == INTEL_CREATE_PIXMAP_TILING_X) + tiling = I915_TILING_X; + else if (usage == INTEL_CREATE_PIXMAP_TILING_Y) + tiling = I915_TILING_Y; + + if (tiling == I915_TILING_NONE) { + size = stride * h; + } else { + stride = i830_get_fence_pitch(i830, stride, tiling); + /* Round the object up to the size of the fence it will live in + * if necessary. We could potentially make the kernel allocate + * a larger aperture space and just bind the subset of pages in, + * but this is easier and also keeps us out of trouble (as much) + * with drm_intel_bufmgr_check_aperture(). + */ + size = i830_get_fence_size(i830, stride * h); + } + + bo = drm_intel_bo_alloc_for_render(i830->bufmgr, "pixmap", size, 0); + if (!bo) { + fbDestroyPixmap (pixmap); + return NullPixmap; + } + + if (tiling != I915_TILING_NONE) + drm_intel_bo_set_tiling(bo, &tiling, stride); + + screen->ModifyPixmapHeader (pixmap, w, h, 0, 0, stride, NULL); + + i830_uxa_set_pixmap_bo (pixmap, bo); + } + + return pixmap; +} + + +#ifndef SERVER_1_5 +static PixmapPtr +i830_uxa_server_14_create_pixmap (ScreenPtr screen, int w, int h, int depth) +{ + /* For server pre-1.6, we're never allocating DRI2 buffers, so no need for + * a hint. + */ + return i830_uxa_create_pixmap(screen, w, h, depth, 0); +} +#endif + +static Bool +i830_uxa_destroy_pixmap (PixmapPtr pixmap) +{ + if (pixmap->refcnt == 1) { + dri_bo *bo = i830_get_pixmap_bo (pixmap); + + if (bo) + dri_bo_unreference (bo); + } + fbDestroyPixmap (pixmap); + return TRUE; +} + +void i830_uxa_create_screen_resources(ScreenPtr pScreen) +{ + ScrnInfoPtr scrn = xf86Screens[pScreen->myNum]; + I830Ptr i830 = I830PTR(scrn); + dri_bo *bo = i830->front_buffer->bo; + + if (bo != NULL) { + PixmapPtr pixmap = pScreen->GetScreenPixmap(pScreen); + i830_uxa_set_pixmap_bo (pixmap, bo); + dri_bo_reference(bo); + } +} + +Bool +i830_uxa_init (ScreenPtr pScreen) +{ + ScrnInfoPtr scrn = xf86Screens[pScreen->myNum]; + I830Ptr i830 = I830PTR(scrn); + +#ifdef SERVER_1_5 + if (!dixRequestPrivate(&uxa_pixmap_index, 0)) + return FALSE; +#else + if (!AllocatePixmapPrivate(pScreen, uxa_pixmap_index, 0)) + return FALSE; +#endif + + i830->uxa_driver = uxa_driver_alloc(); + if (i830->uxa_driver == NULL) { + i830->accel = ACCEL_NONE; + return FALSE; + } + memset(i830->uxa_driver, 0, sizeof(*i830->uxa_driver)); + + i830->bufferOffset = 0; + i830->uxa_driver->uxa_major = 1; + i830->uxa_driver->uxa_minor = 0; + + /* Solid fill */ + i830->uxa_driver->prepare_solid = I830EXAPrepareSolid; + i830->uxa_driver->solid = I830EXASolid; + i830->uxa_driver->done_solid = I830EXADoneSolid; + + /* Copy */ + i830->uxa_driver->prepare_copy = I830EXAPrepareCopy; + i830->uxa_driver->copy = I830EXACopy; + i830->uxa_driver->done_copy = I830EXADoneCopy; + + /* Composite */ + if (!IS_I9XX(i830)) { + i830->uxa_driver->check_composite = i830_check_composite; + i830->uxa_driver->prepare_composite = i830_prepare_composite; + i830->uxa_driver->composite = i830_composite; + i830->uxa_driver->done_composite = i830_done_composite; + } else if (IS_I915G(i830) || IS_I915GM(i830) || + IS_I945G(i830) || IS_I945GM(i830) || IS_G33CLASS(i830)) + { + i830->uxa_driver->check_composite = i915_check_composite; + i830->uxa_driver->prepare_composite = i915_prepare_composite; + i830->uxa_driver->composite = i915_composite; + i830->uxa_driver->done_composite = i830_done_composite; + } else { + i830->uxa_driver->check_composite = i965_check_composite; + i830->uxa_driver->prepare_composite = i965_prepare_composite; + i830->uxa_driver->composite = i965_composite; + i830->uxa_driver->done_composite = i830_done_composite; + } + + i830->uxa_driver->prepare_access = i830_uxa_prepare_access; + i830->uxa_driver->finish_access = i830_uxa_finish_access; + i830->uxa_driver->pixmap_is_offscreen = i830_uxa_pixmap_is_offscreen; + + if(!uxa_driver_init(pScreen, i830->uxa_driver)) { + xf86DrvMsg(scrn->scrnIndex, X_INFO, + "UXA initialization failed\n"); + xfree(i830->uxa_driver); + i830->accel = ACCEL_NONE; + return FALSE; + } + +#ifdef SERVER_1_5 + pScreen->CreatePixmap = i830_uxa_create_pixmap; +#else + pScreen->CreatePixmap = i830_uxa_server_14_create_pixmap; +#endif + pScreen->DestroyPixmap = i830_uxa_destroy_pixmap; + + I830SelectBuffer(scrn, I830_SELECT_FRONT); + + uxa_set_fallback_debug(pScreen, i830->fallback_debug); + + return TRUE; +} +#endif /* I830_USE_UXA */ + #ifdef XF86DRI #ifndef ExaOffscreenMarkUsed diff --git a/driver/xf86-video-intel/src/i830_hdmi.c b/driver/xf86-video-intel/src/i830_hdmi.c index d56eec90f..0abb1512f 100644 --- a/driver/xf86-video-intel/src/i830_hdmi.c +++ b/driver/xf86-video-intel/src/i830_hdmi.c @@ -33,13 +33,20 @@ #include "i830.h" #include "xf86Modes.h" #include "i830_display.h" +#include "X11/Xatom.h" struct i830_hdmi_priv { uint32_t output_reg; uint32_t save_SDVO; + + Bool has_hdmi_sink; + /* Default 0 for full RGB range 0-255, 1 is for RGB range 16-235 */ + uint32_t broadcast_rgb; }; +static Atom broadcast_atom; + static int i830_hdmi_mode_valid(xf86OutputPtr output, DisplayModePtr mode) { @@ -78,6 +85,10 @@ i830_hdmi_mode_set(xf86OutputPtr output, DisplayModePtr mode, SDVO_BORDER_ENABLE | SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; + + if (dev_priv->has_hdmi_sink) + sdvox |= SDVO_AUDIO_ENABLE; + if (intel_crtc->pipe == 1) sdvox |= SDVO_PIPE_B_SELECT; @@ -139,12 +150,16 @@ i830_hdmi_detect(xf86OutputPtr output) struct i830_hdmi_priv *dev_priv = intel_output->dev_priv; I830Ptr pI830 = I830PTR(pScrn); uint32_t temp, bit; + xf86OutputStatus status; + xf86MonPtr edid_mon; + + dev_priv->has_hdmi_sink = FALSE; - /* For G4X, PEG_BAND_GAP_DATA 3:0 must first be written 0xd. + /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written 0xd. * Failure to do so will result in spurious interrupts being * generated on the port when a cable is not attached. */ - if (IS_G4X(pI830)) { + if (IS_G4X(pI830) && !IS_GM45(pI830)) { temp = INREG(PEG_BAND_GAP_DATA); OUTREG(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd); } @@ -171,9 +186,26 @@ i830_hdmi_detect(xf86OutputPtr output) } if ((INREG(PORT_HOTPLUG_STAT) & bit) != 0) - return XF86OutputStatusConnected; + status = XF86OutputStatusConnected; else return XF86OutputStatusDisconnected; + + edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus); + if (!edid_mon || !DIGITAL(edid_mon->features.input_type)) + status = XF86OutputStatusDisconnected; + + if (xf86LoaderCheckSymbol("xf86MonitorIsHDMI") && + xf86MonitorIsHDMI(edid_mon)) + dev_priv->has_hdmi_sink = TRUE; + + if (pI830->debug_modes) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "%s monitor detected on HDMI-%d\n", + dev_priv->has_hdmi_sink ? "HDMI" : "DVI", + (dev_priv->output_reg == SDVOB) ? 1 : 2); + + xfree(edid_mon); + return status; } static void @@ -187,7 +219,91 @@ i830_hdmi_destroy (xf86OutputPtr output) } } +static void +i830_hdmi_create_resources(xf86OutputPtr output) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_hdmi_priv *dev_priv = intel_output->dev_priv; + INT32 broadcast_range[2]; + int err; + + /* only R G B are 8bit color mode */ + if (pScrn->depth != 24 || + /* only 965G and G4X platform */ + !(IS_I965G(pI830) || IS_G4X(pI830))) + return; + + broadcast_atom = + MakeAtom("BROADCAST_RGB", sizeof("BROADCAST_RGB") - 1, TRUE); + + broadcast_range[0] = 0; + broadcast_range[1] = 1; + err = RRConfigureOutputProperty(output->randr_output, + broadcast_atom, + FALSE, TRUE, FALSE, 2, broadcast_range); + if (err != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "RRConfigureOutputProperty error, %d\n", err); + return; + } + /* Set the current value of the broadcast property as full range */ + dev_priv->broadcast_rgb = 0; + err = RRChangeOutputProperty(output->randr_output, + broadcast_atom, + XA_INTEGER, 32, PropModeReplace, + 1, &dev_priv->broadcast_rgb, + FALSE, TRUE); + if (err != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "RRChangeOutputProperty error, %d\n", err); + return; + } +} + +static Bool +i830_hdmi_set_property(xf86OutputPtr output, Atom property, + RRPropertyValuePtr value) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_hdmi_priv *dev_priv = intel_output->dev_priv; + uint32_t temp; + + if (property == broadcast_atom) { + uint32_t val; + + if (value->type != XA_INTEGER || value->format != 32 || + value->size != 1) + { + return FALSE; + } + + val = *(INT32 *)value->data; + if (val < 0 || val > 1) + { + return FALSE; + } + if (val == dev_priv->broadcast_rgb) + return TRUE; + + temp = INREG(dev_priv->output_reg); + + if (val == 1) + temp |= SDVO_COLOR_NOT_FULL_RANGE; + else if (val == 0) + temp &= ~SDVO_COLOR_NOT_FULL_RANGE; + + OUTREG(dev_priv->output_reg, temp); + dev_priv->broadcast_rgb = val; + } + return TRUE; +} + static const xf86OutputFuncsRec i830_hdmi_output_funcs = { + .create_resources = i830_hdmi_create_resources, .dpms = i830_hdmi_dpms, .save = i830_hdmi_save, .restore = i830_hdmi_restore, @@ -198,6 +314,7 @@ static const xf86OutputFuncsRec i830_hdmi_output_funcs = { .commit = i830_output_commit, .detect = i830_hdmi_detect, .get_modes = i830_ddc_get_modes, + .set_property = i830_hdmi_set_property, .destroy = i830_hdmi_destroy }; @@ -224,6 +341,7 @@ i830_hdmi_init(ScrnInfoPtr pScrn, int output_reg) dev_priv = (struct i830_hdmi_priv *)(intel_output + 1); dev_priv->output_reg = output_reg; + dev_priv->has_hdmi_sink = FALSE; intel_output->dev_priv = dev_priv; intel_output->type = I830_OUTPUT_HDMI; diff --git a/driver/xf86-video-intel/src/i830_hwmc.c b/driver/xf86-video-intel/src/i830_hwmc.c index 787d93da1..e33a15de1 100644 --- a/driver/xf86-video-intel/src/i830_hwmc.c +++ b/driver/xf86-video-intel/src/i830_hwmc.c @@ -52,16 +52,20 @@ Bool intel_xvmc_probe(ScrnInfoPtr pScrn) I830Ptr pI830 = I830PTR(pScrn); Bool ret = FALSE; + /* Disable XvMC on DRI2 for now */ + if (pI830->directRenderingType == DRI_DRI2) { + pI830->XvMCEnabled = FALSE; + return FALSE; + } + if (!pI830->XvMCEnabled) return FALSE; if (IS_I9XX(pI830)) { if (IS_I915(pI830)) ret = intel_xvmc_set_driver(&i915_xvmc_driver); - /* else ret = intel_xvmc_set_driver(&i965_xvmc_driver); - */ } else { ErrorF("Your chipset doesn't support XvMC.\n"); return FALSE; diff --git a/driver/xf86-video-intel/src/i830_hwmc.h b/driver/xf86-video-intel/src/i830_hwmc.h index 4db9aea6f..72208d53c 100644 --- a/driver/xf86-video-intel/src/i830_hwmc.h +++ b/driver/xf86-video-intel/src/i830_hwmc.h @@ -77,7 +77,8 @@ struct intel_xvmc_command { unsigned int subPicNo; unsigned int flags; unsigned int real_id; - unsigned int pad[6]; + unsigned int surf_offset; + unsigned int pad[5]; }; #ifdef _INTEL_XVMC_SERVER_ @@ -98,7 +99,7 @@ struct intel_xvmc_driver { extern struct intel_xvmc_driver *xvmc_driver; extern struct intel_xvmc_driver i915_xvmc_driver; -/* extern struct intel_xvmc_driver i965_xvmc_driver; */ +extern struct intel_xvmc_driver i965_xvmc_driver; extern Bool intel_xvmc_set_driver(struct intel_xvmc_driver *); extern Bool intel_xvmc_probe(ScrnInfoPtr); diff --git a/driver/xf86-video-intel/src/i830_lvds.c b/driver/xf86-video-intel/src/i830_lvds.c index a8687b63d..7fc0bcec5 100644 --- a/driver/xf86-video-intel/src/i830_lvds.c +++ b/driver/xf86-video-intel/src/i830_lvds.c @@ -35,6 +35,7 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <dirent.h> #include <sys/stat.h> #include <sys/types.h> @@ -83,8 +84,7 @@ static char *backlight_interfaces[] = { "acpi_video1", "acpi_video0", "fujitsu-laptop", - "asus-laptop", - "eeepc", + "sony", NULL, }; @@ -98,6 +98,15 @@ static char *backlight_interfaces[] = { static int backlight_index; +enum lid_status { + LID_UNKNOWN = -1, + LID_OPEN, + LID_CLOSE, +}; + +#define ACPI_BUTTON "/proc/acpi/button/" +#define ACPI_LID "/proc/acpi/button/lid/" + static Bool i830_kernel_backlight_available(xf86OutputPtr output) { @@ -378,6 +387,107 @@ out_err: } /** + * Get lid state from ACPI button driver + */ +static int +i830_lvds_acpi_lid_open(xf86OutputPtr output) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + int fd; + DIR *button_dir; + DIR *lid_dir; + struct dirent *lid_dent; + char *state_name; + char state[64]; + enum lid_status ret = LID_UNKNOWN; + + if (pI830->quirk_flag & QUIRK_BROKEN_ACPI_LID) + goto out; + + button_dir = opendir(ACPI_BUTTON); + /* If acpi button driver is not loaded, bypass ACPI check method */ + if (button_dir == NULL) + goto out; + closedir(button_dir); + + lid_dir = opendir(ACPI_LID); + + /* no acpi lid object found */ + if (lid_dir == NULL) + goto out; + + while (1) { + lid_dent = readdir(lid_dir); + if (lid_dent == NULL) { + /* no LID object */ + closedir(lid_dir); + goto out; + } + if (strcmp(lid_dent->d_name, ".") && + strcmp(lid_dent->d_name, "..")) { + break; + } + } + state_name = malloc(strlen(ACPI_LID) + strlen(lid_dent->d_name) + 7); + memset(state_name, 0, sizeof(state_name)); + strcat(state_name, ACPI_LID); + strcat(state_name, lid_dent->d_name); + strcat(state_name, "/state"); + + closedir(lid_dir); + + if ((fd = open(state_name, O_RDONLY)) == -1) { + free(state_name); + goto out; + } + free(state_name); + if (read(fd, state, 64) == -1) { + close(fd); + goto out; + } + close(fd); + if (strstr(state, "open")) + ret = LID_OPEN; + else if (strstr(state, "closed")) + ret = LID_CLOSE; + else /* "unsupported" */ + ret = LID_UNKNOWN; + +out: + if (pI830->debug_modes && (ret != LID_UNKNOWN)) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "LID switch detect %s with ACPI button\n", + ret ? "closed" : "open"); + + return ret; +} + +/** + * Get LID switch close state from SWF + */ +static Bool +i830_lvds_swf_lid_close(xf86OutputPtr output) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + uint32_t swf14 = INREG(SWF14); + Bool ret; + + if (swf14 & SWF14_LID_SWITCH_EN) + ret = TRUE; + else + ret = FALSE; + + if (pI830->debug_modes) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "LID switch detect %s with SWF14 0x%8x\n", + ret ? "closed" : "open", swf14); + + return ret; +} + +/** * Sets the power state for the panel. */ static void @@ -402,7 +512,8 @@ i830SetLVDSPanelPower(xf86OutputPtr output, Bool on) * they'll always re-maximize the brightness. */ if (!(INREG(PP_CONTROL) & POWER_TARGET_ON) && - dev_priv->backlight_duty_cycle == 0) + dev_priv->backlight_duty_cycle == 0 && + pI830->backlight_control_method < BCM_KERNEL) dev_priv->backlight_duty_cycle = dev_priv->backlight_max; OUTREG(PP_CONTROL, INREG(PP_CONTROL) | POWER_TARGET_ON); @@ -451,10 +562,10 @@ i830_lvds_save (xf86OutputPtr output) if (IS_I965GM(pI830) || IS_GM45(pI830)) pI830->saveBLC_PWM_CTL2 = INREG(BLC_PWM_CTL2); - pI830->savePP_ON = INREG(LVDSPP_ON); - pI830->savePP_OFF = INREG(LVDSPP_OFF); + pI830->savePP_ON = INREG(PP_ON_DELAYS); + pI830->savePP_OFF = INREG(PP_OFF_DELAYS); pI830->savePP_CONTROL = INREG(PP_CONTROL); - pI830->savePP_CYCLE = INREG(PP_CYCLE); + pI830->savePP_DIVISOR = INREG(PP_DIVISOR); pI830->saveBLC_PWM_CTL = INREG(BLC_PWM_CTL); if ((INREG(PP_CONTROL) & POWER_TARGET_ON) && !dev_priv->dpmsoff) dev_priv->backlight_duty_cycle = dev_priv->get_backlight(output); @@ -469,9 +580,9 @@ i830_lvds_restore(xf86OutputPtr output) if (IS_I965GM(pI830) || IS_GM45(pI830)) OUTREG(BLC_PWM_CTL2, pI830->saveBLC_PWM_CTL2); OUTREG(BLC_PWM_CTL, pI830->saveBLC_PWM_CTL); - OUTREG(LVDSPP_ON, pI830->savePP_ON); - OUTREG(LVDSPP_OFF, pI830->savePP_OFF); - OUTREG(PP_CYCLE, pI830->savePP_CYCLE); + OUTREG(PP_ON_DELAYS, pI830->savePP_ON); + OUTREG(PP_OFF_DELAYS, pI830->savePP_OFF); + OUTREG(PP_DIVISOR, pI830->savePP_DIVISOR); OUTREG(PP_CONTROL, pI830->savePP_CONTROL); if (pI830->savePP_CONTROL & POWER_TARGET_ON) i830SetLVDSPanelPower(output, TRUE); @@ -766,16 +877,58 @@ i830_lvds_mode_set(xf86OutputPtr output, DisplayModePtr mode, /** * Detect the LVDS connection. - * - * This always returns OUTPUT_STATUS_CONNECTED. This output should only have - * been set up if the LVDS was actually connected anyway. */ static xf86OutputStatus i830_lvds_detect(xf86OutputPtr output) { + /* Fallback to origin, mark LVDS always connected. + * From wider tests, we have seen both broken cases with + * ACPI lid and SWF bit. So disable them for now until we + * get a reliable way for LVDS detect. + */ + return XF86OutputStatusConnected; + + enum lid_status lid; + + lid = i830_lvds_acpi_lid_open(output); + if (lid == LID_OPEN) + return XF86OutputStatusConnected; + else if (lid == LID_CLOSE) + return XF86OutputStatusDisconnected; + + if (i830_lvds_swf_lid_close(output)) + return XF86OutputStatusDisconnected; + return XF86OutputStatusConnected; } +static void fill_detailed_block(struct detailed_monitor_section *det_mon, + DisplayModePtr mode) +{ + struct detailed_timings *timing = &det_mon->section.d_timings; + det_mon->type = DT; + timing->clock = mode->Clock * 1000; + timing->h_active = mode->HDisplay; + timing->h_blanking = mode->HTotal - mode->HDisplay; + timing->v_active = mode->VDisplay; + timing->v_blanking = mode->VTotal - mode->VDisplay; + timing->h_sync_off = mode->HSyncStart - mode->HDisplay; + timing->h_sync_width = mode->HSyncEnd - mode->HSyncStart; + timing->v_sync_off = mode->VSyncStart - mode->VDisplay; + timing->v_sync_width = mode->VSyncEnd - mode->VSyncStart; + + if (mode->Flags & V_PVSYNC) + timing->misc |= 0x02; + + if (mode->Flags & V_PHSYNC) + timing->misc |= 0x01; +} + +/* X Server pre-1.5 compatibility */ +#ifndef DS_VENDOR +#define DS_VENDOR 0x101 +#endif + /** * Return the list of DDC modes if available, or the BIOS fixed mode otherwise. */ @@ -789,8 +942,38 @@ i830_lvds_get_modes(xf86OutputPtr output) DisplayModePtr modes; edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus); + + /* Our LVDS scaler can hit any size, so mark the EDID data as + * supporting continuous timings + */ + if (edid_mon) { + int i, j = -1; + edid_mon->features.msc |= 0x1; + + /* Either find a DS_RANGES block, or replace a DS_VENDOR block, + * smashing it into a DS_RANGES block with wide open refresh to + * match all default modes + */ + for (i = 0; i < sizeof (edid_mon->det_mon) / sizeof (edid_mon->det_mon[0]); i++) + { + if (edid_mon->det_mon[i].type >= DS_VENDOR && j == -1) + j = i; + if (edid_mon->det_mon[i].type == DS_RANGES) { + j = i; + break; + } + } + if (j != -1) { + struct monitor_ranges *ranges = &edid_mon->det_mon[j].section.ranges; + edid_mon->det_mon[j].type = DS_RANGES; + ranges->min_v = 0; + ranges->max_v = 200; + ranges->min_h = 0; + ranges->max_h = 200; + } + } xf86OutputSetEDID (output, edid_mon); - + modes = xf86OutputGetEDIDModes (output); if (modes != NULL) return modes; @@ -800,15 +983,35 @@ i830_lvds_get_modes(xf86OutputPtr output) edid_mon = xcalloc (1, sizeof (xf86Monitor)); if (edid_mon) { + struct detailed_monitor_section *det_mon = edid_mon->det_mon; + /*support DPM, instead of DPMS*/ + edid_mon->features.dpms |= 0x1; + /*defaultly support RGB color display*/ + edid_mon->features.display_type |= 0x1; + /*defaultly display support continuous-freqencey*/ + edid_mon->features.msc |= 0x1; + /*defaultly the EDID version is 1.4 */ + edid_mon->ver.version = 1; + edid_mon->ver.revision = 4; + + if (pI830->lvds_fixed_mode != NULL) { + /* now we construct new EDID monitor, + * so filled one detailed timing block + */ + fill_detailed_block(det_mon, pI830->lvds_fixed_mode); + /* the filed timing block should be set preferred*/ + edid_mon->features.msc |= 0x2; + det_mon = det_mon + 1; + } + /* Set wide sync ranges so we get all modes * handed to valid_mode for checking */ - edid_mon->det_mon[0].type = DS_RANGES; - edid_mon->det_mon[0].section.ranges.min_v = 0; - edid_mon->det_mon[0].section.ranges.max_v = 200; - edid_mon->det_mon[0].section.ranges.min_h = 0; - edid_mon->det_mon[0].section.ranges.max_h = 200; - + det_mon->type = DS_RANGES; + det_mon->section.ranges.min_v = 0; + det_mon->section.ranges.max_v = 200; + det_mon->section.ranges.min_h = 0; + det_mon->section.ranges.max_h = 200; output->MonInfo = edid_mon; } } @@ -863,7 +1066,7 @@ static Atom panel_fitting_name_atoms[NUM_PANEL_FITTING_TYPES]; static int -i830_backlight_control_lookup(char *name) +i830_backlight_control_lookup(const char *name) { int i; @@ -920,7 +1123,7 @@ i830_lvds_set_backlight_control(xf86OutputPtr output) } static int -i830_panel_fitting_lookup(char *name) +i830_panel_fitting_lookup(const char *name) { int i; @@ -1001,8 +1204,8 @@ i830_lvds_create_resources(xf86OutputPtr output) * Panel fitting control */ - /* XXX Disable panel fitting setting on pre-915. */ - if (!IS_I9XX(pI830)) + /* Disable panel fitting setting on untested pre-915 chips */ + if (!IS_I9XX(pI830) && !(pI830->quirk_flag & QUIRK_PFIT_SAFE)) return; panel_fitting_atom = MakeAtom(PANEL_FITTING_NAME, @@ -1062,7 +1265,7 @@ i830_lvds_set_property(xf86OutputPtr output, Atom property, } else if (property == backlight_control_atom) { INT32 backlight_range[2]; Atom atom; - char *name; + const char *name; int ret, data; if (value->type != XA_ATOM || value->format != 32 || value->size != 1) @@ -1104,7 +1307,7 @@ i830_lvds_set_property(xf86OutputPtr output, Atom property, return TRUE; } else if (property == panel_fitting_atom) { Atom atom; - char *name; + const char *name; int ret; if (value->type != XA_ATOM || value->format != 32 || value->size != 1) @@ -1117,6 +1320,9 @@ i830_lvds_set_property(xf86OutputPtr output, Atom property, if (ret < 0) return FALSE; + if (dev_priv->fitting_mode == ret) + return TRUE; + dev_priv->fitting_mode = ret; if (output->crtc) { @@ -1216,6 +1422,13 @@ i830_lvds_init(ScrnInfoPtr pScrn) DisplayModePtr lvds_ddc_mode = NULL; struct i830_lvds_priv *dev_priv; + if (!pI830->integrated_lvds) { + if (pI830->debug_modes) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Skipping LVDS from driver feature BDB's LVDS config info.\n"); + return; + } + if (pI830->quirk_flag & QUIRK_IGNORE_LVDS) return; @@ -1376,11 +1589,9 @@ found_mode: dev_priv->backlight_duty_cycle = dev_priv->get_backlight(output); /* - * Default to filling the whole screen if the mode is less than the - * native size. (Change default to origin FULL mode, i8xx can only work - * in that mode for now.) + * Avoid munging the aspect ratio by default. */ - dev_priv->fitting_mode = FULL; + dev_priv->fitting_mode = FULL_ASPECT; return; diff --git a/driver/xf86-video-intel/src/i830_memory.c b/driver/xf86-video-intel/src/i830_memory.c index 0a2faebb3..d3138d94b 100644 --- a/driver/xf86-video-intel/src/i830_memory.c +++ b/driver/xf86-video-intel/src/i830_memory.c @@ -65,7 +65,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - HW cursor block (either one block or four) * - Overlay registers * - XAA linear allocator (optional) - * - EXA 965 state buffer * - XAA scratch (screen 1) * - XAA scratch (screen 2, only in zaphod mode) * - Front buffer (screen 1, more is better for XAA) @@ -101,12 +100,16 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include <string.h> #include <errno.h> #include <sys/types.h> +#include <sys/ioctl.h> #include "xf86.h" #include "xf86_OSproc.h" #include "i830.h" #include "i810_reg.h" +#ifdef XF86DRI +#include "i915_drm.h" +#endif #define ALIGN(i,m) (((i) + (m) - 1) & ~((m) - 1)) @@ -116,7 +119,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. static i830_memory * i830_allocate_aperture(ScrnInfoPtr pScrn, const char *name, - long size, unsigned long alignment, int flags); + unsigned long size, unsigned long pitch, + unsigned long alignment, int flags, + enum tile_format tile_format); static int i830_set_tiling(ScrnInfoPtr pScrn, unsigned int offset, unsigned int pitch, unsigned int size, @@ -127,10 +132,9 @@ static void i830_clear_tiling(ScrnInfoPtr pScrn, unsigned int fence_nr); /** * Returns the fence size for a tiled area of the given size. */ -static unsigned long -i830_get_fence_size(ScrnInfoPtr pScrn, unsigned long size) +unsigned long +i830_get_fence_size(I830Ptr pI830, unsigned long size) { - I830Ptr pI830 = I830PTR(pScrn); unsigned long i; unsigned long start; @@ -153,6 +157,66 @@ i830_get_fence_size(ScrnInfoPtr pScrn, unsigned long size) } } +/** + * On some chips, pitch width has to be a power of two tile width, so + * calculate that here. + */ +unsigned long +i830_get_fence_pitch(I830Ptr pI830, unsigned long pitch, int format) +{ + unsigned long i; + unsigned long tile_width = (format == I915_TILING_Y) ? 128 : 512; + + if (format == TILE_NONE) + return pitch; + + /* 965 is flexible */ + if (IS_I965G(pI830)) + return ROUND_TO(pitch, tile_width); + + /* Pre-965 needs power of two tile width */ + for (i = tile_width; i < pitch; i <<= 1) + ; + + return i; +} + +/** + * On some chips, pitch width has to be a power of two tile width, so + * calculate that here. + */ +unsigned long +i830_get_fence_alignment(I830Ptr pI830, unsigned long size) +{ + if (IS_I965G(pI830)) + return 4096; + else + return i830_get_fence_size(pI830, size); +} + +static Bool +i830_check_display_stride(ScrnInfoPtr pScrn, int stride, Bool tiling) +{ + I830Ptr pI830 = I830PTR(pScrn); + int limit = KB(32); + + /* 8xx spec has always 8K limit, but tests show larger limit in + non-tiling mode, which makes large monitor work. */ + if ((IS_845G(pI830) || IS_I85X(pI830)) && tiling) + limit = KB(8); + + if (IS_I915(pI830) && tiling) + limit = KB(8); + + if (IS_I965G(pI830) && tiling) + limit = KB(16); + + if (stride <= limit) + return TRUE; + else + return FALSE; +} + static Bool i830_bind_memory(ScrnInfoPtr pScrn, i830_memory *mem) { @@ -161,28 +225,18 @@ i830_bind_memory(ScrnInfoPtr pScrn, i830_memory *mem) if (mem == NULL || mem->bound) return TRUE; -#ifdef XF86DRI_MM - if (mem->bo.size != 0) { - I830Ptr pI830 = I830PTR(pScrn); - int ret; - - ret = drmBOSetStatus(pI830->drmSubFD, &mem->bo, - DRM_BO_FLAG_MEM_VRAM | - DRM_BO_FLAG_MEM_TT | - DRM_BO_FLAG_READ | - DRM_BO_FLAG_WRITE | - DRM_BO_FLAG_NO_EVICT, - DRM_BO_MASK_MEM | - DRM_BO_FLAG_READ | - DRM_BO_FLAG_WRITE | - DRM_BO_FLAG_NO_EVICT, - 0, 0, 0); - if (ret != 0) +#ifdef XF86DRI + if (mem->bo != NULL) { + if (dri_bo_pin(mem->bo, mem->alignment) != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to pin %s: %s\n", + mem->name, strerror(errno)); return FALSE; + } mem->bound = TRUE; - mem->offset = mem->bo.offset; - mem->end = mem->bo.offset + mem->size; + mem->offset = mem->bo->offset; + mem->end = mem->offset + mem->size; } #endif @@ -190,7 +244,7 @@ i830_bind_memory(ScrnInfoPtr pScrn, i830_memory *mem) if (!pI830->gtt_acquired) return TRUE; - if (mem->key != -1 && + if (mem->key != -1 && !xf86BindGARTMemory(pScrn->scrnIndex, mem->key, mem->agp_offset)) { return FALSE; @@ -199,7 +253,8 @@ i830_bind_memory(ScrnInfoPtr pScrn, i830_memory *mem) mem->bound = TRUE; } - if (mem->tiling != TILE_NONE) { + if (mem->tiling != TILE_NONE && !pI830->use_drm_mode && + !pI830->kernel_exec_fencing) { mem->fence_nr = i830_set_tiling(pScrn, mem->offset, mem->pitch, mem->allocated_size, mem->tiling); } @@ -210,22 +265,18 @@ i830_bind_memory(ScrnInfoPtr pScrn, i830_memory *mem) static Bool i830_unbind_memory(ScrnInfoPtr pScrn, i830_memory *mem) { + I830Ptr pI830 = I830PTR(pScrn); + if (mem == NULL || !mem->bound) return TRUE; - if (mem->tiling != TILE_NONE) + if (mem->tiling != TILE_NONE && !pI830->use_drm_mode && + !pI830->kernel_exec_fencing) i830_clear_tiling(pScrn, mem->fence_nr); -#ifdef XF86DRI_MM - if (mem->bo.size != 0) { - I830Ptr pI830 = I830PTR(pScrn); - int ret; - - ret = drmBOSetStatus(pI830->drmSubFD, &mem->bo, - 0, DRM_BO_FLAG_NO_EVICT, - 0, 0, 0); - - if (ret == 0) { +#ifdef XF86DRI + if (mem->bo != NULL) { + if (dri_bo_unpin(mem->bo) == 0) { mem->bound = FALSE; /* Give buffer obviously wrong offset/end until it's re-pinned. */ mem->offset = -1; @@ -254,11 +305,10 @@ i830_free_memory(ScrnInfoPtr pScrn, i830_memory *mem) /* Free any AGP memory. */ i830_unbind_memory(pScrn, mem); -#ifdef XF86DRI_MM - if (mem->bo.size != 0) { +#ifdef XF86DRI + if (mem->bo != NULL) { I830Ptr pI830 = I830PTR(pScrn); - - drmBOUnreference(pI830->drmSubFD, &mem->bo); + dri_bo_unreference (mem->bo); if (pI830->bo_list == mem) { pI830->bo_list = mem->next; if (mem->next) @@ -315,12 +365,10 @@ i830_reset_allocations(ScrnInfoPtr pScrn) } /* Free any allocations in buffer objects */ -#ifdef XF86DRI_MM if (pI830->memory_manager) { while (pI830->bo_list != NULL) i830_free_memory(pScrn, pI830->bo_list); } -#endif /* Null out the pointers for all the allocations we just freed. This is * kind of gross, but at least it's just one place now. @@ -331,21 +379,17 @@ i830_reset_allocations(ScrnInfoPtr pScrn) pI830->cursor_mem_argb[p] = NULL; } pI830->front_buffer = NULL; - pI830->front_buffer_2 = NULL; pI830->xaa_scratch = NULL; - pI830->xaa_scratch_2 = NULL; pI830->exa_offscreen = NULL; - pI830->gen4_render_state_mem = NULL; pI830->overlay_regs = NULL; - pI830->logical_context = NULL; pI830->power_context = NULL; #ifdef XF86DRI pI830->back_buffer = NULL; - pI830->third_buffer = NULL; pI830->depth_buffer = NULL; pI830->textures = NULL; #endif - pI830->LpRing->mem = NULL; + pI830->ring.mem = NULL; + pI830->fake_bufmgr_mem = NULL; } void @@ -356,8 +400,6 @@ i830_free_3d_memory(ScrnInfoPtr pScrn) #ifdef XF86DRI i830_free_memory(pScrn, pI830->back_buffer); pI830->back_buffer = NULL; - i830_free_memory(pScrn, pI830->third_buffer); - pI830->third_buffer = NULL; i830_free_memory(pScrn, pI830->depth_buffer); pI830->depth_buffer = NULL; i830_free_memory(pScrn, pI830->textures); @@ -370,7 +412,7 @@ i830_free_3d_memory(ScrnInfoPtr pScrn) * given range. * * This sets up the kernel memory manager to manage as much of the memory - * as we think it can, while leaving enough to us to fulfill our non-TTM + * as we think it can, while leaving enough to us to fulfill our non-GEM * static allocations. Some of these exist because of the need for physical * addresses to reference. */ @@ -379,8 +421,12 @@ i830_allocator_init(ScrnInfoPtr pScrn, unsigned long offset, unsigned long size) { I830Ptr pI830 = I830PTR(pScrn); i830_memory *start, *end; -#ifdef XF86DRI_MM +#ifdef XF86DRI int dri_major, dri_minor, dri_patch; + struct drm_i915_getparam gp; + struct drm_i915_setparam sp; + int has_gem; + int has_dri; #endif start = xcalloc(1, sizeof(*start)); @@ -418,16 +464,35 @@ i830_allocator_init(ScrnInfoPtr pScrn, unsigned long offset, unsigned long size) pI830->memory_list = start; -#ifdef XF86DRI_MM - DRIQueryVersion(&dri_major, &dri_minor, &dri_patch); +#ifdef XF86DRI + has_gem = FALSE; + has_dri = FALSE; + + if (pI830->directRenderingType == DRI_XF86DRI && + xf86LoaderCheckSymbol ("DRIQueryVersion")) + { + DRIQueryVersion(&dri_major, &dri_minor, &dri_patch); + has_dri = TRUE; + } + + if (pI830->directRenderingType >= DRI_XF86DRI) + { + has_gem = FALSE; + gp.param = I915_PARAM_HAS_GEM; + gp.value = &has_gem; + + (void)drmCommandWriteRead(pI830->drmSubFD, DRM_I915_GETPARAM, + &gp, sizeof(gp)); + } /* Now that we have our manager set up, initialize the kernel MM if * possible, covering almost all of the aperture. We need libdri interface * 5.4 or newer so we can rely on the lock being held after DRIScreenInit, * rather than after DRIFinishScreenInit. */ - if (pI830->directRenderingEnabled && pI830->drmMinor >= 7 && - (dri_major > 5 || (dri_major == 5 && dri_minor >= 4))) + if ((pI830->directRenderingType == DRI_XF86DRI && has_gem && has_dri && + (dri_major > 5 || (dri_major == 5 && dri_minor >= 4))) || + (pI830->directRenderingType == DRI_DRI2 && has_gem)) { int mmsize; @@ -437,13 +502,10 @@ i830_allocator_init(ScrnInfoPtr pScrn, unsigned long offset, unsigned long size) mmsize = size; /* EXA area is fixed. */ - if (pI830->useEXA) { + if (pI830->accel == ACCEL_EXA) { mmsize -= ROUND_TO_PAGE(3 * pScrn->displayWidth * pI830->cpp * pScrn->virtualY); } - /* Classic textures are fixed. */ - if (pI830->allocate_classic_textures) - mmsize -= MB(32); /* Overlay and cursors, if physical, need to be allocated outside * of the kernel memory manager. */ @@ -456,32 +518,43 @@ i830_allocator_init(ScrnInfoPtr pScrn, unsigned long offset, unsigned long size) } if (pI830->fb_compression) mmsize -= MB(6) + ROUND_TO_PAGE(FBC_LL_SIZE + FBC_LL_PAD); - /* Can't do TTM on stolen memory */ + /* Can't do GEM on stolen memory */ mmsize -= pI830->stolen_size; - /* new chipsets need non-stolen status page */ - if (HWS_NEED_GFX(pI830) && HWS_NEED_NONSTOLEN(pI830)) - mmsize -= HWSTATUS_PAGE_SIZE; - /* Create the aperture allocation */ pI830->memory_manager = i830_allocate_aperture(pScrn, "DRI memory manager", - mmsize, GTT_PAGE_SIZE, - ALIGN_BOTH_ENDS | NEED_NON_STOLEN); + mmsize, 0, GTT_PAGE_SIZE, + ALIGN_BOTH_ENDS | NEED_NON_STOLEN, + TILE_NONE); if (pI830->memory_manager != NULL) { - int ret; - - /* Tell the kernel to manage it */ - ret = drmMMInit(pI830->drmSubFD, - pI830->memory_manager->offset / GTT_PAGE_SIZE, - pI830->memory_manager->size / GTT_PAGE_SIZE, - DRM_BO_MEM_TT); - if (ret != 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "Failed to initialize kernel memory manager\n"); - i830_free_memory(pScrn, pI830->memory_manager); - pI830->memory_manager = NULL; + if (!pI830->use_drm_mode) { + struct drm_i915_gem_init init; + int ret; + + if (pI830->accel == ACCEL_UXA) { + sp.param = I915_SETPARAM_NUM_USED_FENCES; + sp.value = 0; /* kernel gets them all */ + + ret = drmCommandWrite(pI830->drmSubFD, DRM_I915_SETPARAM, + &sp, sizeof(sp)); + if (ret == 0) + pI830->kernel_exec_fencing = TRUE; + } + init.gtt_start = pI830->memory_manager->offset; + init.gtt_end = pI830->memory_manager->offset + + pI830->memory_manager->size; + + /* Tell the kernel to manage it */ + ret = ioctl(pI830->drmSubFD, DRM_IOCTL_I915_GEM_INIT, &init); + if (ret != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to initialize kernel memory manager\n"); + i830_free_memory(pScrn, pI830->memory_manager); + pI830->memory_manager = NULL; + } + i830_init_bufmgr(pScrn); } } else { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -489,8 +562,10 @@ i830_allocator_init(ScrnInfoPtr pScrn, unsigned long offset, unsigned long size) i830_free_memory(pScrn, pI830->memory_manager); pI830->memory_manager = NULL; } + } else { + pI830->allocate_classic_textures = TRUE; } -#endif /* XF86DRI_MM */ +#endif /* XF86DRI */ return TRUE; } @@ -503,14 +578,12 @@ i830_allocator_fini(ScrnInfoPtr pScrn) /* Free most of the allocations */ i830_reset_allocations(pScrn); -#ifdef XF86DRI_MM /* The memory manager is more special */ if (pI830->memory_manager) { - drmMMTakedown(pI830->drmSubFD, DRM_BO_MEM_TT); + /* XXX drmMMTakedown(pI830->drmSubFD, DRM_BO_MEM_TT);*/ i830_free_memory(pScrn, pI830->memory_manager); pI830->memory_manager = NULL; } -#endif /* XF86DRI_MM */ /* Free the start/end markers */ free(pI830->memory_list->next); @@ -607,7 +680,9 @@ i830_get_stolen_physical(ScrnInfoPtr pScrn, unsigned long offset, */ static i830_memory * i830_allocate_aperture(ScrnInfoPtr pScrn, const char *name, - long size, unsigned long alignment, int flags) + unsigned long size, unsigned long pitch, + unsigned long alignment, int flags, + enum tile_format tile_format) { I830Ptr pI830 = I830PTR(pScrn); i830_memory *mem, *scan; @@ -628,6 +703,10 @@ i830_allocate_aperture(ScrnInfoPtr pScrn, const char *name, size = ALIGN(size, GTT_PAGE_SIZE); mem->size = size; mem->allocated_size = size; + mem->alignment = alignment; + mem->tiling = tile_format; + mem->pitch = pitch; + mem->fence_nr = -1; if (alignment < GTT_PAGE_SIZE) alignment = GTT_PAGE_SIZE; @@ -719,63 +798,79 @@ i830_allocate_agp_memory(ScrnInfoPtr pScrn, i830_memory *mem, int flags) return TRUE; } -#ifdef XF86DRI_MM +#ifdef XF86DRI static i830_memory * i830_allocate_memory_bo(ScrnInfoPtr pScrn, const char *name, - unsigned long size, unsigned long align, int flags) + unsigned long size, unsigned long pitch, + unsigned long align, int flags, + enum tile_format tile_format) { I830Ptr pI830 = I830PTR(pScrn); i830_memory *mem; - unsigned long mask; - int ret; + uint32_t bo_tiling_mode = I915_TILING_NONE; + int ret; assert((flags & NEED_PHYSICAL_ADDR) == 0); /* Only allocate page-sized increments. */ size = ALIGN(size, GTT_PAGE_SIZE); - align = ROUND_TO(align, GTT_PAGE_SIZE); + align = i830_get_fence_alignment(pI830, size); mem = xcalloc(1, sizeof(*mem)); if (mem == NULL) return NULL; mem->name = xstrdup(name); - if (name == NULL) { + if (mem->name == NULL) { xfree(mem); return NULL; } - /* - * Create buffers in local memory to avoid having the creation order - * determine the TT offset. Driver acceleration - * cannot handle changed front buffer TT offsets yet , - * so let's keep our fingers crossed. - */ - - mask = DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE | DRM_BO_FLAG_MAPPABLE | - DRM_BO_FLAG_MEM_LOCAL; - if (flags & ALLOW_SHARING) - mask |= DRM_BO_FLAG_SHAREABLE; + mem->bo = dri_bo_alloc (pI830->bufmgr, name, size, align); - ret = drmBOCreate(pI830->drmSubFD, size, align / GTT_PAGE_SIZE, NULL, - mask, 0, &mem->bo); - if (ret) { + if (!mem->bo) { xfree(mem->name); xfree(mem); return NULL; } + /* Give buffer obviously wrong offset/end until it's pinned. */ mem->offset = -1; mem->end = -1; mem->size = size; mem->allocated_size = size; + mem->alignment = align; + mem->tiling = tile_format; + mem->pitch = pitch; + mem->fence_nr = -1; if (flags & NEED_LIFETIME_FIXED) mem->lifetime_fixed_offset = TRUE; + switch (tile_format) { + case TILE_XMAJOR: + bo_tiling_mode = I915_TILING_X; + break; + case TILE_YMAJOR: + bo_tiling_mode = I915_TILING_Y; + break; + case TILE_NONE: + default: + bo_tiling_mode = I915_TILING_NONE; + break; + } + + ret = drm_intel_bo_set_tiling(mem->bo, &bo_tiling_mode, pitch); + if (ret != 0 || (bo_tiling_mode == I915_TILING_NONE && tile_format != TILE_NONE)) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to set tiling on %s: %s\n", + mem->name, + ret == 0 ? "rejected by kernel" : strerror(errno)); + mem->tiling = TILE_NONE; + } /* Bind it if we currently control the VT */ - if (pScrn->vtSema) { + if (pScrn->vtSema || pI830->use_drm_mode) { if (!i830_bind_memory(pScrn, mem)) { - drmBOUnreference(pI830->drmSubFD, &mem->bo); + dri_bo_unreference (mem->bo); xfree(mem->name); xfree(mem); return NULL; @@ -791,9 +886,9 @@ i830_allocate_memory_bo(ScrnInfoPtr pScrn, const char *name, return mem; } -#endif /* XF86DRI_MM */ +#endif /* XF86DRI */ -/* Allocates video memory at the given size and alignment. +/* Allocates video memory at the given size, pitch, alignment and tile format. * * The memory will be bound automatically when the driver is in control of the * VT. When the kernel memory manager is available and compatible with flags @@ -813,21 +908,43 @@ i830_allocate_memory_bo(ScrnInfoPtr pScrn, const char *name, */ i830_memory * i830_allocate_memory(ScrnInfoPtr pScrn, const char *name, - unsigned long size, unsigned long alignment, int flags) + unsigned long size, unsigned long pitch, + unsigned long alignment, int flags, + enum tile_format tile_format) { i830_memory *mem; - -#ifdef XF86DRI_MM +#ifdef XF86DRI I830Ptr pI830 = I830PTR(pScrn); +#endif - if (pI830->memory_manager && !(flags & NEED_PHYSICAL_ADDR) && - !(flags & NEED_LIFETIME_FIXED)) + /* Manage tile alignment and size constraints */ + if (tile_format != TILE_NONE) { + /* Only allocate page-sized increments. */ + size = ALIGN(size, GTT_PAGE_SIZE); + + /* Check for maximum tiled region size */ + if (IS_I9XX(pI830)) { + if (size > MB(128)) + return NULL; + } else { + if (size > MB(64)) + return NULL; + } + + /* round to size necessary for the fence register to work */ + size = i830_get_fence_size(pI830, size); + alignment = i830_get_fence_alignment(pI830, size); + } +#ifdef XF86DRI + if (pI830->use_drm_mode || (pI830->memory_manager && + !(flags & NEED_PHYSICAL_ADDR) && + !(flags & NEED_LIFETIME_FIXED))) { - return i830_allocate_memory_bo(pScrn, name, size, alignment, flags); + return i830_allocate_memory_bo(pScrn, name, size, pitch, alignment, flags, tile_format); } else -#endif +#endif /* XF86DRI */ { - mem = i830_allocate_aperture(pScrn, name, size, alignment, flags); + mem = i830_allocate_aperture(pScrn, name, size, pitch, alignment, flags, tile_format); if (mem == NULL) return NULL; @@ -842,66 +959,6 @@ i830_allocate_memory(ScrnInfoPtr pScrn, const char *name, } } - mem->tiling = TILE_NONE; - - return mem; -} - -/* Allocate a tiled region with the given size and pitch. - * - * As is, we might miss out on tiling some allocations on older hardware with - * large framebuffer size and a small aperture size, where the first - * allocations use a large alignment even though we've got fences to spare, and - * the later allocations can't find enough aperture space left. We could do - * some search across all allocation options to fix this, probably, but that - * would be another rewrite. - */ -i830_memory * -i830_allocate_memory_tiled(ScrnInfoPtr pScrn, const char *name, - unsigned long size, unsigned long pitch, - unsigned long alignment, int flags, - enum tile_format tile_format) -{ - I830Ptr pI830 = I830PTR(pScrn); - unsigned long aper_size; - unsigned long aper_align; - i830_memory *mem; - - if (tile_format == TILE_NONE) - return i830_allocate_memory(pScrn, name, size, alignment, flags); - - /* Only allocate page-sized increments. */ - size = ALIGN(size, GTT_PAGE_SIZE); - - /* Check for maximum tiled region size */ - if (IS_I9XX(pI830)) { - if (size > MB(128)) - return NULL; - } else { - if (size > MB(64)) - return NULL; - } - - aper_size = i830_get_fence_size(pScrn, size); - if (IS_I965G(pI830)) { - aper_align = GTT_PAGE_SIZE; - } else { - /* The offset has to be aligned to at least the size of the fence - * region. - */ - aper_align = aper_size; - } - if (aper_align < alignment) - aper_align = alignment; - - mem = i830_allocate_memory(pScrn, name, aper_size, aper_align, flags); - if (mem == NULL) - return NULL; - mem->size = size; - mem->tiling = tile_format; - mem->pitch = pitch; - mem->fence_nr = -1; - return mem; } @@ -955,7 +1012,6 @@ i830_describe_allocations(ScrnInfoPtr pScrn, int verbosity, const char *prefix) "%s0x%08lx: end of aperture\n", prefix, pI830->FbMapSize); -#ifdef XF86DRI_MM if (pI830->memory_manager) { xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, verbosity, "%sBO memory allocation layout:\n", prefix); @@ -985,7 +1041,6 @@ i830_describe_allocations(ScrnInfoPtr pScrn, int verbosity, const char *prefix) "%s0x%08lx: end of memory manager\n", prefix, pI830->memory_manager->end); } -#endif /* XF86DRI_MM */ } static Bool @@ -993,23 +1048,23 @@ i830_allocate_ringbuffer(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - if (pI830->noAccel || pI830->LpRing->mem != NULL) + if (pI830->accel == ACCEL_NONE || pI830->memory_manager || pI830->ring.mem != NULL) return TRUE; /* We don't have any mechanism in the DRM yet to alert it that we've moved * the ringbuffer since init time, so allocate it fixed for its lifetime. */ - pI830->LpRing->mem = i830_allocate_memory(pScrn, "ring buffer", - PRIMARY_RINGBUFFER_SIZE, - GTT_PAGE_SIZE, - NEED_LIFETIME_FIXED); - if (pI830->LpRing->mem == NULL) { + pI830->ring.mem = i830_allocate_memory(pScrn, "ring buffer", + PRIMARY_RINGBUFFER_SIZE, PITCH_NONE, + GTT_PAGE_SIZE, + NEED_LIFETIME_FIXED, TILE_NONE); + if (pI830->ring.mem == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Failed to allocate Ring Buffer space\n"); return FALSE; } - pI830->LpRing->tail_mask = pI830->LpRing->mem->size - 1; + pI830->ring.tail_mask = pI830->ring.mem->size - 1; return TRUE; } @@ -1031,18 +1086,25 @@ i830_allocate_overlay(ScrnInfoPtr pScrn) if (OVERLAY_NOEXIST(pI830)) return TRUE; - if (!OVERLAY_NOPHYSICAL(pI830)) + if (!OVERLAY_NOPHYSICAL(pI830)) { + if (pI830->use_drm_mode) + return TRUE; flags |= NEED_PHYSICAL_ADDR; + } pI830->overlay_regs = i830_allocate_memory(pScrn, "overlay registers", - OVERLAY_SIZE, GTT_PAGE_SIZE, - flags); + OVERLAY_SIZE, PITCH_NONE, GTT_PAGE_SIZE, + flags, TILE_NONE); if (pI830->overlay_regs == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Failed to allocate Overlay register space.\n"); /* This failure isn't fatal. */ } + if (flags & NEED_PHYSICAL_ADDR) + if (pI830->use_drm_mode) + ; /* need physical addr */ + return TRUE; } #endif @@ -1093,42 +1155,38 @@ IsTileable(ScrnInfoPtr pScrn, int pitch) * * Used once for each X screen, so once with RandR 1.2 and twice with classic * dualhead. - * - * \param pScrn ScrnInfoPtr for the screen being allocated - * \param pI830 I830Ptr for the screen being allocated. - * \param FbMemBox */ -static i830_memory * -i830_allocate_framebuffer(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox, - Bool secondary) +i830_memory * +i830_allocate_framebuffer(ScrnInfoPtr pScrn) { + I830Ptr pI830 = I830PTR(pScrn); unsigned int pitch = pScrn->displayWidth * pI830->cpp; unsigned long minspace, avail; int cacheLines, maxCacheLines; int align; long size, fb_height; - char *name; int flags; i830_memory *front_buffer = NULL; - Bool tiling; + enum tile_format tile_format = TILE_NONE; flags = ALLOW_SHARING; - /* Clear everything first. */ - memset(FbMemBox, 0, sizeof(*FbMemBox)); - /* We'll allocate the fb such that the root window will fit regardless of * rotation. */ - if (pScrn->virtualX > pScrn->virtualY) - fb_height = pScrn->virtualX; - else - fb_height = pScrn->virtualY; + fb_height = pScrn->virtualY; + if (!pI830->can_resize) + { + if (!pI830->use_drm_mode && pScrn->virtualX > pScrn->virtualY) + fb_height = pScrn->virtualX; + else + fb_height = pScrn->virtualY; + } - FbMemBox->x1 = 0; - FbMemBox->x2 = pScrn->displayWidth; - FbMemBox->y1 = 0; - FbMemBox->y2 = fb_height; + pI830->FbMemBox.x1 = 0; + pI830->FbMemBox.x2 = pScrn->displayWidth; + pI830->FbMemBox.y1 = 0; + pI830->FbMemBox.y2 = fb_height; /* Calculate how much framebuffer memory to allocate. For the * initial allocation, calculate a reasonable minimum. This is @@ -1138,7 +1196,7 @@ i830_allocate_framebuffer(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox, minspace = pitch * pScrn->virtualY; avail = pScrn->videoRam * 1024; - if (!pI830->useEXA) { + if (pI830->accel == ACCEL_XAA) { maxCacheLines = (avail - minspace) / pitch; /* This shouldn't happen. */ if (maxCacheLines < 0) { @@ -1163,13 +1221,13 @@ i830_allocate_framebuffer(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox, if (cacheLines > maxCacheLines) cacheLines = maxCacheLines; - FbMemBox->y2 += cacheLines; + pI830->FbMemBox.y2 += cacheLines; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Allocating %d scanlines for pixmap cache\n", cacheLines); } else { - /* For EXA, we have a separate allocation for the linear allocator + /* For non-XAA, we have a separate allocation for the linear allocator * which also does the pixmap cache. */ cacheLines = 0; @@ -1178,43 +1236,46 @@ i830_allocate_framebuffer(ScrnInfoPtr pScrn, I830Ptr pI830, BoxPtr FbMemBox, size = pitch * (fb_height + cacheLines); size = ROUND_TO_PAGE(size); - name = secondary ? "secondary front buffer" : "front buffer"; - /* Front buffer tiling has to be disabled with G965 XAA because some of the * acceleration operations (non-XY COLOR_BLT) can't be done to tiled * buffers. */ - if (!pI830->useEXA && IS_I965G(pI830)) - tiling = FALSE; - else - tiling = pI830->tiling; + if (pI830->tiling) + tile_format = TILE_XMAJOR; + if (pI830->accel == ACCEL_XAA && IS_I965G(pI830)) + tile_format = TILE_NONE; + + if (!IsTileable(pScrn, pitch)) + tile_format = TILE_NONE; + + if (!i830_check_display_stride(pScrn, pitch, tile_format != TILE_NONE)) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Front buffer stride %d kB " + "exceed display limit\n", pitch/1024); + return NULL; + } /* Attempt to allocate it tiled first if we have page flipping on. */ - if (tiling && IsTileable(pScrn, pitch)) { + if (tile_format != TILE_NONE) { /* XXX: probably not the case on 965 */ if (IS_I9XX(pI830)) align = MB(1); else align = KB(512); - front_buffer = i830_allocate_memory_tiled(pScrn, name, size, - pitch, align, flags, - TILE_XMAJOR); - } - - /* If not, attempt it linear */ - if (front_buffer == NULL) { - front_buffer = i830_allocate_memory(pScrn, name, size, KB(64), flags); - } + } else + align = KB(64); + front_buffer = i830_allocate_memory(pScrn, "front buffer", size, + pitch, align, flags, + tile_format); if (front_buffer == NULL) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Failed to allocate " - "%sframebuffer. Is your VideoRAM set too low?\n", - secondary ? "secondary " : ""); + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to allocate framebuffer.\n"); return NULL; } - if (pI830->FbBase) + if (!pI830->use_drm_mode && pI830->FbBase) memset (pI830->FbBase + front_buffer->offset, 0, size); + return front_buffer; } @@ -1223,10 +1284,15 @@ i830_allocate_cursor_buffers(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn); - int flags = pI830->CursorNeedsPhysical ? NEED_PHYSICAL_ADDR : 0; + int flags; int i; long size; + if (pI830->use_drm_mode) + pI830->CursorNeedsPhysical = FALSE; + + flags = pI830->CursorNeedsPhysical ? NEED_PHYSICAL_ADDR : 0; + /* Try to allocate one big blob for our cursor memory. This works * around a limitation in the FreeBSD AGP driver that allows only one * physical allocation larger than a page, and could allow us @@ -1235,8 +1301,8 @@ i830_allocate_cursor_buffers(ScrnInfoPtr pScrn) size = xf86_config->num_crtc * (HWCURSOR_SIZE + HWCURSOR_SIZE_ARGB); pI830->cursor_mem = i830_allocate_memory(pScrn, "HW cursors", - size, GTT_PAGE_SIZE, - flags); + size, PITCH_NONE, GTT_PAGE_SIZE, + flags, TILE_NONE); if (pI830->cursor_mem != NULL) return TRUE; @@ -1250,14 +1316,18 @@ i830_allocate_cursor_buffers(ScrnInfoPtr pScrn) pI830->cursor_mem_classic[i] = i830_allocate_memory (pScrn, "Core cursor", HWCURSOR_SIZE, + PITCH_NONE, GTT_PAGE_SIZE, - flags); + flags, + TILE_NONE); if (!pI830->cursor_mem_classic[i]) return FALSE; pI830->cursor_mem_argb[i] = i830_allocate_memory (pScrn, "ARGB cursor", HWCURSOR_SIZE_ARGB, + PITCH_NONE, GTT_PAGE_SIZE, - flags); + flags, + TILE_NONE); if (!pI830->cursor_mem_argb[i]) return FALSE; @@ -1302,7 +1372,9 @@ static void i830_setup_fb_compression(ScrnInfoPtr pScrn) */ pI830->compressed_front_buffer = i830_allocate_memory(pScrn, "compressed frame buffer", - compressed_size, KB(4), NEED_PHYSICAL_ADDR); + compressed_size, PITCH_NONE, + KB(4), NEED_PHYSICAL_ADDR, + TILE_NONE); if (!pI830->compressed_front_buffer) { pI830->fb_compression = FALSE; @@ -1312,8 +1384,10 @@ static void i830_setup_fb_compression(ScrnInfoPtr pScrn) if (!IS_GM45(pI830)) { pI830->compressed_ll_buffer = i830_allocate_memory(pScrn, "compressed ll buffer", - FBC_LL_SIZE + FBC_LL_PAD, KB(4), - NEED_PHYSICAL_ADDR); + FBC_LL_SIZE + FBC_LL_PAD, + PITCH_NONE, KB(4), + NEED_PHYSICAL_ADDR, + TILE_NONE); if (!pI830->compressed_ll_buffer) { i830_free_memory(pScrn, pI830->compressed_front_buffer); pI830->fb_compression = FALSE; @@ -1339,50 +1413,37 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn) unsigned int pitch = pScrn->displayWidth * pI830->cpp; long size; - if (!pI830->StolenOnly && - (!xf86AgpGARTSupported() || !xf86AcquireGART(pScrn->scrnIndex))) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "AGP GART support is either not available or cannot " - "be used.\n" - "\tMake sure your kernel has agpgart support or has\n" - "\tthe agpgart module loaded.\n"); - return FALSE; - } + if (!pI830->use_drm_mode) { + if (!xf86AgpGARTSupported() || !xf86AcquireGART(pScrn->scrnIndex)) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "AGP GART support is either not available or cannot " + "be used.\n" + "\tMake sure your kernel has agpgart support or has\n" + "\tthe agpgart module loaded.\n"); + return FALSE; + } - /* Allocate the ring buffer first, so it ends up in stolen mem. */ - i830_allocate_ringbuffer(pScrn); + /* Allocate the ring buffer first, so it ends up in stolen mem. */ + i830_allocate_ringbuffer(pScrn); + } if (pI830->fb_compression) i830_setup_fb_compression(pScrn); /* Next, allocate other fixed-size allocations we have. */ - if (!pI830->SWCursor && !i830_allocate_cursor_buffers(pScrn)) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Disabling HW cursor because the cursor memory " - "allocation failed.\n"); - pI830->SWCursor = TRUE; - } - - /* Space for the X Server's 3D context. 32k is fine for right now. */ - pI830->logical_context = i830_allocate_memory(pScrn, "logical 3D context", - KB(32), GTT_PAGE_SIZE, 0); - if (pI830->logical_context == NULL) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Failed to allocate logical context space.\n"); + if (!i830_allocate_cursor_buffers(pScrn)) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to allocate HW cursor space.\n"); return FALSE; } - /* even in XAA, 965G needs state mem buffer for rendering */ - if (IS_I965G(pI830) && !pI830->noAccel && - pI830->gen4_render_state_mem == NULL) - { - pI830->gen4_render_state_mem = - i830_allocate_memory(pScrn, "exa G965 state buffer", - gen4_render_state_size(pScrn), - GTT_PAGE_SIZE, 0); - if (pI830->gen4_render_state_mem == NULL) { + if (pI830->memory_manager == NULL) { + pI830->fake_bufmgr_mem = i830_allocate_memory(pScrn, "fake bufmgr", + MB(8), PITCH_NONE, GTT_PAGE_SIZE, 0, + TILE_NONE); + if (pI830->fake_bufmgr_mem == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Failed to allocate exa state buffer for 965.\n"); + "Failed to allocate fake bufmgr space.\n"); return FALSE; } } @@ -1391,27 +1452,16 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn) /* Allocate overlay register space and optional XAA linear allocator * space. The second head in zaphod mode will share the space. */ - if (I830IsPrimary(pScrn)) + if (!pI830->use_drm_mode) i830_allocate_overlay(pScrn); #endif - if (pI830->entityPrivate && pI830->entityPrivate->pScrn_2) { - I830EntPtr pI830Ent = pI830->entityPrivate; - I830Ptr pI8302 = I830PTR(pI830Ent->pScrn_2); - - pI830->front_buffer_2 = - i830_allocate_framebuffer(pI830Ent->pScrn_2, pI8302, - &pI830->FbMemBox2, TRUE); - if (pI830->front_buffer_2 == NULL) - return FALSE; - } - pI830->front_buffer = - i830_allocate_framebuffer(pScrn, pI830, &pI830->FbMemBox, FALSE); + pI830->front_buffer = i830_allocate_framebuffer(pScrn); if (pI830->front_buffer == NULL) return FALSE; #ifdef I830_USE_EXA - if (pI830->useEXA) { + if (pI830->accel == ACCEL_EXA && !pI830->use_drm_mode) { if (pI830->exa_offscreen == NULL) { /* Default EXA to having 3 screens worth of offscreen memory space * (for pixmaps). @@ -1429,7 +1479,8 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn) */ pI830->exa_offscreen = i830_allocate_memory(pScrn, "exa offscreen", - size, 1, NEED_LIFETIME_FIXED); + size, PITCH_NONE, 1, NEED_LIFETIME_FIXED, + TILE_NONE); if (pI830->exa_offscreen == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Failed to allocate EXA offscreen memory.\n"); @@ -1439,47 +1490,27 @@ i830_allocate_2d_memory(ScrnInfoPtr pScrn) } #endif /* I830_USE_EXA */ - if (!pI830->noAccel && !pI830->useEXA) { + if (pI830->accel == ACCEL_XAA) { /* The lifetime fixed offset of xaa scratch is probably not required, * but we do some setup using it at XAAInit() time. And XAA may not - * end up being supported with TTM anyway. + * end up being supported with GEM anyway. */ pI830->xaa_scratch = i830_allocate_memory(pScrn, "xaa scratch", MAX_SCRATCH_BUFFER_SIZE, - GTT_PAGE_SIZE, NEED_LIFETIME_FIXED); + PITCH_NONE, GTT_PAGE_SIZE, NEED_LIFETIME_FIXED, + TILE_NONE); if (pI830->xaa_scratch == NULL) { pI830->xaa_scratch = i830_allocate_memory(pScrn, "xaa scratch", - MIN_SCRATCH_BUFFER_SIZE, GTT_PAGE_SIZE, - NEED_LIFETIME_FIXED); + MIN_SCRATCH_BUFFER_SIZE, PITCH_NONE, + GTT_PAGE_SIZE, NEED_LIFETIME_FIXED, + TILE_NONE); if (pI830->xaa_scratch == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Failed to allocate scratch buffer space\n"); return FALSE; } } - - /* Let's allocate another scratch buffer for the second head */ - /* Again, this code won't execute on the dry run pass */ - if (pI830->entityPrivate && pI830->entityPrivate->pScrn_2) - { - pI830->xaa_scratch_2 = - i830_allocate_memory(pScrn, "xaa scratch 2", - MAX_SCRATCH_BUFFER_SIZE, GTT_PAGE_SIZE, - NEED_LIFETIME_FIXED); - if (pI830->xaa_scratch_2 == NULL) { - pI830->xaa_scratch_2 = - i830_allocate_memory(pScrn, "xaa scratch 2", - MIN_SCRATCH_BUFFER_SIZE, - GTT_PAGE_SIZE, NEED_LIFETIME_FIXED); - if (pI830->xaa_scratch_2 == NULL) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Failed to allocate secondary scratch " - "buffer space\n"); - return FALSE; - } - } - } } return TRUE; @@ -1506,6 +1537,7 @@ i830_allocate_backbuffer(ScrnInfoPtr pScrn, i830_memory **buffer, unsigned int pitch = pScrn->displayWidth * pI830->cpp; unsigned long size; int height; + enum tile_format tile_format = TILE_NONE;; if (pI830->rotation & (RR_Rotate_0 | RR_Rotate_180)) height = pScrn->virtualY; @@ -1516,22 +1548,18 @@ i830_allocate_backbuffer(ScrnInfoPtr pScrn, i830_memory **buffer, if (pI830->tiling && IsTileable(pScrn, pitch)) { size = ROUND_TO_PAGE(pitch * ALIGN(height, 16)); - *buffer = i830_allocate_memory_tiled(pScrn, name, size, pitch, - GTT_PAGE_SIZE, - ALIGN_BOTH_ENDS | - ALLOW_SHARING, - TILE_XMAJOR); + tile_format = TILE_XMAJOR; } - - /* Otherwise, just allocate it linear. The offset must stay constant - * currently because we don't ever update the DRI maps after screen init. - */ - if (*buffer == NULL) { + else + { size = ROUND_TO_PAGE(pitch * height); - *buffer = i830_allocate_memory(pScrn, name, size, GTT_PAGE_SIZE, - ALIGN_BOTH_ENDS | - ALLOW_SHARING); + tile_format = TILE_NONE; } + *buffer = i830_allocate_memory(pScrn, name, size, pitch, + GTT_PAGE_SIZE, + ALIGN_BOTH_ENDS | + ALLOW_SHARING, + tile_format); if (*buffer == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, @@ -1549,42 +1577,27 @@ i830_allocate_depthbuffer(ScrnInfoPtr pScrn) unsigned long size; unsigned int pitch = pScrn->displayWidth * pI830->cpp; int height; + int flags; + enum tile_format tile_format = TILE_NONE; - /* XXX: this rotation stuff is bogus */ - if (pI830->rotation & (RR_Rotate_0 | RR_Rotate_180)) - height = pScrn->virtualY; - else - height = pScrn->virtualX; + height = pScrn->virtualY; /* First try allocating it tiled */ + flags = ALLOW_SHARING; if (pI830->tiling && IsTileable(pScrn, pitch)) { - enum tile_format tile_format; - - size = ROUND_TO_PAGE(pitch * ALIGN(height, 16)); - /* The 965 requires that the depth buffer be in Y Major format, while * the rest appear to fail when handed that format. */ tile_format = IS_I965G(pI830) ? TILE_YMAJOR: TILE_XMAJOR; - - pI830->depth_buffer = - i830_allocate_memory_tiled(pScrn, "depth buffer", size, pitch, - GTT_PAGE_SIZE, - ALIGN_BOTH_ENDS | - ALLOW_SHARING, - tile_format); + height = ALIGN(height, 16); + flags |= ALIGN_BOTH_ENDS; } + size = ROUND_TO_PAGE(pitch * height); - /* Otherwise, allocate it linear. The offset must stay constant - * currently because we don't ever update the DRI maps after screen init. - */ - if (pI830->depth_buffer == NULL) { - size = ROUND_TO_PAGE(pitch * height); - pI830->depth_buffer = - i830_allocate_memory(pScrn, "depth buffer", size, GTT_PAGE_SIZE, - ALLOW_SHARING); - } + pI830->depth_buffer = + i830_allocate_memory(pScrn, "depth buffer", size, pitch, + GTT_PAGE_SIZE, flags, tile_format); if (pI830->depth_buffer == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, @@ -1619,13 +1632,17 @@ i830_allocate_texture_memory(ScrnInfoPtr pScrn) size / 1024); return FALSE; } - /* The offset must stay constant currently because we don't ever update - * the DRI maps after screen init. + /* Now that the DRM uses the sarea to get the offsets of the buffers, + * and we update the classic DRM mappings and the sarea contents on + * changes, the NEED_LIFETIME_FIXED is no longer true and should be + * made conditional on DRM version. */ pI830->textures = i830_allocate_memory(pScrn, "classic textures", size, + PITCH_NONE, GTT_PAGE_SIZE, ALLOW_SHARING | - NEED_LIFETIME_FIXED); + NEED_LIFETIME_FIXED, + TILE_NONE); if (pI830->textures == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Failed to allocate texture space.\n"); @@ -1650,7 +1667,8 @@ i830_allocate_hwstatus(ScrnInfoPtr pScrn) if (HWS_NEED_NONSTOLEN(pI830)) flags |= NEED_NON_STOLEN; pI830->hw_status = i830_allocate_memory(pScrn, "HW status", - HWSTATUS_PAGE_SIZE, GTT_PAGE_SIZE, flags); + HWSTATUS_PAGE_SIZE, PITCH_NONE, GTT_PAGE_SIZE, flags, + TILE_NONE); if (pI830->hw_status == NULL) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Failed to allocate hw status page.\n"); @@ -1664,9 +1682,14 @@ i830_allocate_pwrctx(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); + if (pI830->use_drm_mode) + return TRUE; + pI830->power_context = i830_allocate_memory(pScrn, "power context", - PWRCTX_SIZE, GTT_PAGE_SIZE, - NEED_LIFETIME_FIXED); + PWRCTX_SIZE, PITCH_NONE, + GTT_PAGE_SIZE, + NEED_LIFETIME_FIXED, + TILE_NONE); if (!pI830->power_context) { xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Failed to allocate power context.\n"); @@ -1682,7 +1705,7 @@ i830_allocate_3d_memory(ScrnInfoPtr pScrn) DPRINTF(PFX, "i830_allocate_3d_memory\n"); - if (HWS_NEED_GFX(pI830)) { + if (!pI830->memory_manager && HWS_NEED_GFX(pI830)) { if (!i830_allocate_hwstatus(pScrn)) return FALSE; } @@ -1690,14 +1713,6 @@ i830_allocate_3d_memory(ScrnInfoPtr pScrn) if (!i830_allocate_backbuffer(pScrn, &pI830->back_buffer, "back buffer")) return FALSE; - if (pI830->TripleBuffer && !i830_allocate_backbuffer(pScrn, - &pI830->third_buffer, - "third buffer")) { - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Failed to allocate third buffer, triple buffering " - "inactive\n"); - } - if (!i830_allocate_depthbuffer(pScrn)) return FALSE; @@ -1732,6 +1747,11 @@ i830_set_tiling(ScrnInfoPtr pScrn, unsigned int offset, assert(tile_format != TILE_NONE); + if (pI830->need_sync) { + I830Sync(pScrn); + pI830->need_sync = FALSE; + } + if (IS_I965G(pI830)) max_fence = FENCE_NEW_NR; else @@ -1933,33 +1953,35 @@ i830_bind_all_memory(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - if (pI830->StolenOnly == TRUE || pI830->memory_list == NULL) + if (pI830->memory_list == NULL) return TRUE; - if (xf86AgpGARTSupported() && !pI830->gtt_acquired) { + if (pI830->use_drm_mode || (xf86AgpGARTSupported() && + !pI830->gtt_acquired)) { i830_memory *mem; - if (!xf86AcquireGART(pScrn->scrnIndex)) - return FALSE; - - pI830->gtt_acquired = TRUE; + if (!pI830->use_drm_mode) { + if (!xf86AcquireGART(pScrn->scrnIndex)) + return FALSE; + pI830->gtt_acquired = TRUE; + } for (mem = pI830->memory_list->next; mem->next != NULL; mem = mem->next) { - if (!i830_bind_memory(pScrn, mem)) { + if (!mem->bound && !i830_bind_memory(pScrn, mem)) { /* This shouldn't happen */ FatalError("Couldn't bind memory for %s\n", mem->name); } } -#ifdef XF86DRI_MM for (mem = pI830->bo_list; mem != NULL; mem = mem->next) { + if (mem->bound) + continue; if (!mem->lifetime_fixed_offset && !i830_bind_memory(pScrn, mem)) FatalError("Couldn't bind memory for BO %s\n", mem->name); } -#endif } - if (!pI830->SWCursor) + if (!pI830->use_drm_mode) i830_update_cursor_offsets(pScrn); return TRUE; @@ -1971,10 +1993,8 @@ i830_unbind_all_memory(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); - if (pI830->StolenOnly == TRUE) - return TRUE; - - if (xf86AgpGARTSupported() && pI830->gtt_acquired) { + if (pI830->use_drm_mode || (xf86AgpGARTSupported() && + pI830->gtt_acquired)) { i830_memory *mem; for (mem = pI830->memory_list->next; mem->next != NULL; @@ -1982,7 +2002,6 @@ i830_unbind_all_memory(ScrnInfoPtr pScrn) { i830_unbind_memory(pScrn, mem); } -#ifdef XF86DRI_MM for (mem = pI830->bo_list; mem != NULL; mem = mem->next) { /* Don't unpin objects which require that their offsets never * change. @@ -1990,12 +2009,13 @@ i830_unbind_all_memory(ScrnInfoPtr pScrn) if (!mem->lifetime_fixed_offset) i830_unbind_memory(pScrn, mem); } -#endif - pI830->gtt_acquired = FALSE; + if (!pI830->use_drm_mode) { + pI830->gtt_acquired = FALSE; - if (!xf86ReleaseGART(pScrn->scrnIndex)) - return FALSE; + if (!xf86ReleaseGART(pScrn->scrnIndex)) + return FALSE; + } } return TRUE; @@ -2032,8 +2052,8 @@ Bool i830_allocate_xvmc_buffer(ScrnInfoPtr pScrn, const char *name, i830_memory **buffer, unsigned long size, int flags) { - *buffer = i830_allocate_memory(pScrn, name, size, - GTT_PAGE_SIZE, flags); + *buffer = i830_allocate_memory(pScrn, name, size, PITCH_NONE, + GTT_PAGE_SIZE, flags, TILE_NONE); if (!*buffer) { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, diff --git a/driver/xf86-video-intel/src/i830_modes.c b/driver/xf86-video-intel/src/i830_modes.c index 7d1451983..4aa493ea7 100644 --- a/driver/xf86-video-intel/src/i830_modes.c +++ b/driver/xf86-video-intel/src/i830_modes.c @@ -1,6 +1,9 @@ +/* -*- c-basic-offset: 4 -*- */ + #define DEBUG_VERB 2 /* * Copyright © 2002 David Dawes + * Copyright © 2006 Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -26,8 +29,8 @@ * the author(s). * * Authors: David Dawes <dawes@xfree86.org> + * Eric Anholt <eric.anholt@intel.com> * - * $XFree86: xc/programs/Xserver/hw/xfree86/os-support/vbe/vbeModes.c,v 1.6 2002/11/02 01:38:25 dawes Exp $ */ /* * Modified by Alan Hourihane <alanh@tungstengraphics.com> @@ -40,808 +43,27 @@ #include <stdio.h> #include <string.h> +#include <assert.h> +#include <math.h> #include "xf86.h" +#include "xf86DDC.h" +#include "X11/Xatom.h" #include "i830.h" - -#include <math.h> - -#define rint(x) floor(x) - -#define MARGIN_PERCENT 1.8 /* % of active vertical image */ -#define CELL_GRAN 8.0 /* assumed character cell granularity */ -#define MIN_PORCH 1 /* minimum front porch */ -#define V_SYNC_RQD 3 /* width of vsync in lines */ -#define H_SYNC_PERCENT 8.0 /* width of hsync as % of total line */ -#define MIN_VSYNC_PLUS_BP 550.0 /* min time of vsync + back porch (microsec) */ -#define M 600.0 /* blanking formula gradient */ -#define C 40.0 /* blanking formula offset */ -#define K 128.0 /* blanking formula scaling factor */ -#define J 20.0 /* blanking formula scaling factor */ - -/* C' and M' are part of the Blanking Duty Cycle computation */ - -#define C_PRIME (((C - J) * K/256.0) + J) -#define M_PRIME (K/256.0 * M) - -extern const int i830refreshes[]; - -static DisplayModePtr -I830GetGTF (int h_pixels, int v_lines, float freq, - int interlaced, int margins) -{ - float h_pixels_rnd; - float v_lines_rnd; - float v_field_rate_rqd; - float top_margin; - float bottom_margin; - float interlace; - float h_period_est; - float vsync_plus_bp; - float v_back_porch; - float total_v_lines; - float v_field_rate_est; - float h_period; - float v_field_rate; - float v_frame_rate; - float left_margin; - float right_margin; - float total_active_pixels; - float ideal_duty_cycle; - float h_blank; - float total_pixels; - float pixel_freq; - float h_freq; - - float h_sync; - float h_front_porch; - float v_odd_front_porch_lines; - char modename[20]; - DisplayModePtr m; - - m = xnfcalloc(sizeof(DisplayModeRec), 1); - - - /* 1. In order to give correct results, the number of horizontal - * pixels requested is first processed to ensure that it is divisible - * by the character size, by rounding it to the nearest character - * cell boundary: - * - * [H PIXELS RND] = ((ROUND([H PIXELS]/[CELL GRAN RND],0))*[CELLGRAN RND]) - */ - - h_pixels_rnd = rint((float) h_pixels / CELL_GRAN) * CELL_GRAN; - - - /* 2. If interlace is requested, the number of vertical lines assumed - * by the calculation must be halved, as the computation calculates - * the number of vertical lines per field. In either case, the - * number of lines is rounded to the nearest integer. - * - * [V LINES RND] = IF([INT RQD?]="y", ROUND([V LINES]/2,0), - * ROUND([V LINES],0)) - */ - - v_lines_rnd = interlaced ? - rint((float) v_lines) / 2.0 : - rint((float) v_lines); - - /* 3. Find the frame rate required: - * - * [V FIELD RATE RQD] = IF([INT RQD?]="y", [I/P FREQ RQD]*2, - * [I/P FREQ RQD]) - */ - - v_field_rate_rqd = interlaced ? (freq * 2.0) : (freq); - - /* 4. Find number of lines in Top margin: - * - * [TOP MARGIN (LINES)] = IF([MARGINS RQD?]="Y", - * ROUND(([MARGIN%]/100*[V LINES RND]),0), - * 0) - */ - - top_margin = margins ? rint(MARGIN_PERCENT / 100.0 * v_lines_rnd) : (0.0); - - /* 5. Find number of lines in Bottom margin: - * - * [BOT MARGIN (LINES)] = IF([MARGINS RQD?]="Y", - * ROUND(([MARGIN%]/100*[V LINES RND]),0), - * 0) - */ - - bottom_margin = margins ? rint(MARGIN_PERCENT/100.0 * v_lines_rnd) : (0.0); - - /* 6. If interlace is required, then set variable [INTERLACE]=0.5: - * - * [INTERLACE]=(IF([INT RQD?]="y",0.5,0)) - */ - - interlace = interlaced ? 0.5 : 0.0; - - /* 7. Estimate the Horizontal period - * - * [H PERIOD EST] = ((1/[V FIELD RATE RQD]) - [MIN VSYNC+BP]/1000000) / - * ([V LINES RND] + (2*[TOP MARGIN (LINES)]) + - * [MIN PORCH RND]+[INTERLACE]) * 1000000 - */ - - h_period_est = (((1.0/v_field_rate_rqd) - (MIN_VSYNC_PLUS_BP/1000000.0)) - / (v_lines_rnd + (2*top_margin) + MIN_PORCH + interlace) - * 1000000.0); - - /* 8. Find the number of lines in V sync + back porch: - * - * [V SYNC+BP] = ROUND(([MIN VSYNC+BP]/[H PERIOD EST]),0) - */ - - vsync_plus_bp = rint(MIN_VSYNC_PLUS_BP/h_period_est); - - /* 9. Find the number of lines in V back porch alone: - * - * [V BACK PORCH] = [V SYNC+BP] - [V SYNC RND] - * - * XXX is "[V SYNC RND]" a typo? should be [V SYNC RQD]? - */ - - v_back_porch = vsync_plus_bp - V_SYNC_RQD; - - /* 10. Find the total number of lines in Vertical field period: - * - * [TOTAL V LINES] = [V LINES RND] + [TOP MARGIN (LINES)] + - * [BOT MARGIN (LINES)] + [V SYNC+BP] + [INTERLACE] + - * [MIN PORCH RND] - */ - - total_v_lines = v_lines_rnd + top_margin + bottom_margin + vsync_plus_bp + - interlace + MIN_PORCH; - - /* 11. Estimate the Vertical field frequency: - * - * [V FIELD RATE EST] = 1 / [H PERIOD EST] / [TOTAL V LINES] * 1000000 - */ - - v_field_rate_est = 1.0 / h_period_est / total_v_lines * 1000000.0; - - /* 12. Find the actual horizontal period: - * - * [H PERIOD] = [H PERIOD EST] / ([V FIELD RATE RQD] / [V FIELD RATE EST]) - */ - - h_period = h_period_est / (v_field_rate_rqd / v_field_rate_est); - - /* 13. Find the actual Vertical field frequency: - * - * [V FIELD RATE] = 1 / [H PERIOD] / [TOTAL V LINES] * 1000000 - */ - - v_field_rate = 1.0 / h_period / total_v_lines * 1000000.0; - - /* 14. Find the Vertical frame frequency: - * - * [V FRAME RATE] = (IF([INT RQD?]="y", [V FIELD RATE]/2, [V FIELD RATE])) - */ - - v_frame_rate = interlaced ? v_field_rate / 2.0 : v_field_rate; - - /* 15. Find number of pixels in left margin: - * - * [LEFT MARGIN (PIXELS)] = (IF( [MARGINS RQD?]="Y", - * (ROUND( ([H PIXELS RND] * [MARGIN%] / 100 / - * [CELL GRAN RND]),0)) * [CELL GRAN RND], - * 0)) - */ - - left_margin = margins ? - rint(h_pixels_rnd * MARGIN_PERCENT / 100.0 / CELL_GRAN) * CELL_GRAN : - 0.0; - - /* 16. Find number of pixels in right margin: - * - * [RIGHT MARGIN (PIXELS)] = (IF( [MARGINS RQD?]="Y", - * (ROUND( ([H PIXELS RND] * [MARGIN%] / 100 / - * [CELL GRAN RND]),0)) * [CELL GRAN RND], - * 0)) - */ - - right_margin = margins ? - rint(h_pixels_rnd * MARGIN_PERCENT / 100.0 / CELL_GRAN) * CELL_GRAN : - 0.0; - - /* 17. Find total number of active pixels in image and left and right - * margins: - * - * [TOTAL ACTIVE PIXELS] = [H PIXELS RND] + [LEFT MARGIN (PIXELS)] + - * [RIGHT MARGIN (PIXELS)] - */ - - total_active_pixels = h_pixels_rnd + left_margin + right_margin; - - /* 18. Find the ideal blanking duty cycle from the blanking duty cycle - * equation: - * - * [IDEAL DUTY CYCLE] = [C'] - ([M']*[H PERIOD]/1000) - */ - - ideal_duty_cycle = C_PRIME - (M_PRIME * h_period / 1000.0); - - /* 19. Find the number of pixels in the blanking time to the nearest - * double character cell: - * - * [H BLANK (PIXELS)] = (ROUND(([TOTAL ACTIVE PIXELS] * - * [IDEAL DUTY CYCLE] / - * (100-[IDEAL DUTY CYCLE]) / - * (2*[CELL GRAN RND])), 0)) - * * (2*[CELL GRAN RND]) - */ - - h_blank = rint(total_active_pixels * - ideal_duty_cycle / - (100.0 - ideal_duty_cycle) / - (2.0 * CELL_GRAN)) * (2.0 * CELL_GRAN); - - /* 20. Find total number of pixels: - * - * [TOTAL PIXELS] = [TOTAL ACTIVE PIXELS] + [H BLANK (PIXELS)] - */ - - total_pixels = total_active_pixels + h_blank; - - /* 21. Find pixel clock frequency: - * - * [PIXEL FREQ] = [TOTAL PIXELS] / [H PERIOD] - */ - - pixel_freq = total_pixels / h_period; - - /* 22. Find horizontal frequency: - * - * [H FREQ] = 1000 / [H PERIOD] - */ - - h_freq = 1000.0 / h_period; - - - /* Stage 1 computations are now complete; I should really pass - the results to another function and do the Stage 2 - computations, but I only need a few more values so I'll just - append the computations here for now */ - - - - /* 17. Find the number of pixels in the horizontal sync period: - * - * [H SYNC (PIXELS)] =(ROUND(([H SYNC%] / 100 * [TOTAL PIXELS] / - * [CELL GRAN RND]),0))*[CELL GRAN RND] - */ - - h_sync = rint(H_SYNC_PERCENT/100.0 * total_pixels / CELL_GRAN) * CELL_GRAN; - - /* 18. Find the number of pixels in the horizontal front porch period: - * - * [H FRONT PORCH (PIXELS)] = ([H BLANK (PIXELS)]/2)-[H SYNC (PIXELS)] - */ - - h_front_porch = (h_blank / 2.0) - h_sync; - - /* 36. Find the number of lines in the odd front porch period: - * - * [V ODD FRONT PORCH(LINES)]=([MIN PORCH RND]+[INTERLACE]) - */ - - v_odd_front_porch_lines = MIN_PORCH + interlace; - - /* finally, pack the results in the DisplayMode struct */ - - m->HDisplay = (int) (h_pixels_rnd); - m->HSyncStart = (int) (h_pixels_rnd + h_front_porch); - m->HSyncEnd = (int) (h_pixels_rnd + h_front_porch + h_sync); - m->HTotal = (int) (total_pixels); - - m->VDisplay = (int) (v_lines_rnd); - m->VSyncStart = (int) (v_lines_rnd + v_odd_front_porch_lines); - m->VSyncEnd = (int) (int) (v_lines_rnd + v_odd_front_porch_lines + V_SYNC_RQD); - m->VTotal = (int) (total_v_lines); - - m->Clock = (int)(pixel_freq * 1000); - m->SynthClock = m->Clock; - m->HSync = h_freq; - m->VRefresh = v_frame_rate /* freq */; - - snprintf(modename, sizeof(modename), "%dx%d", m->HDisplay,m->VDisplay); - m->name = xnfstrdup(modename); - - return (m); -} - -static DisplayModePtr -CheckMode(ScrnInfoPtr pScrn, vbeInfoPtr pVbe, VbeInfoBlock *vbe, int id, - int flags) -{ - CARD16 major, minor; - VbeModeInfoBlock *mode; - DisplayModePtr p = NULL, pMode = NULL; -#if 0 - VbeModeInfoData *data; -#else - I830ModePrivatePtr data; -#endif - Bool modeOK = FALSE; - ModeStatus status = MODE_OK; - - major = (unsigned)(vbe->VESAVersion >> 8); - minor = vbe->VESAVersion & 0xff; - - if ((mode = VBEGetModeInfo(pVbe, id)) == NULL) - return NULL; - - /* Does the mode match the depth/bpp? */ - /* Some BIOS's set BitsPerPixel to 15 instead of 16 for 15/16 */ - if (VBE_MODE_USABLE(mode, flags) && - ((pScrn->bitsPerPixel == 1 && !VBE_MODE_COLOR(mode)) || - (mode->BitsPerPixel > 8 && - (mode->RedMaskSize + mode->GreenMaskSize + - mode->BlueMaskSize) == pScrn->depth && - mode->BitsPerPixel == pScrn->bitsPerPixel) || - (mode->BitsPerPixel == 15 && pScrn->depth == 15) || - (mode->BitsPerPixel <= 8 && - mode->BitsPerPixel == pScrn->bitsPerPixel))) { - modeOK = TRUE; - xf86ErrorFVerb(DEBUG_VERB, "*"); - } - - if (mode->XResolution && mode->YResolution && - !I830CheckModeSupport(pScrn, mode->XResolution, mode->YResolution, id)) - modeOK = FALSE; - - - /* - * Check if there's a valid monitor mode that this one can be matched - * up with from the 'specified' modes list. - */ - if (modeOK) { - for (p = pScrn->monitor->Modes; p != NULL; p = p->next) { - if ((p->type != 0) || - (p->HDisplay != mode->XResolution) || - (p->VDisplay != mode->YResolution) || - (p->Flags & (V_INTERLACE | V_DBLSCAN | V_CLKDIV2))) - continue; - status = xf86CheckModeForMonitor(p, pScrn->monitor); - if (status == MODE_OK) { - modeOK = TRUE; - break; - } - } - if (p) { - pMode = xnfcalloc(sizeof(DisplayModeRec), 1); - memcpy((char*)pMode,(char*)p,sizeof(DisplayModeRec)); - pMode->name = xnfstrdup(p->name); - } - } - - /* - * Now, check if there's a valid monitor mode that this one can be matched - * up with from the default modes list. i.e. VESA modes in xf86DefModes.c - */ - if (modeOK && !pMode) { - int refresh = 0, calcrefresh = 0; - DisplayModePtr newMode = NULL; - - for (p = pScrn->monitor->Modes; p != NULL; p = p->next) { - calcrefresh = (int)(((double)(p->Clock * 1000) / - (double)(p->HTotal * p->VTotal)) * 100); - if ((p->type != M_T_DEFAULT) || - (p->HDisplay != mode->XResolution) || - (p->VDisplay != mode->YResolution) || - (p->Flags & (V_INTERLACE | V_DBLSCAN | V_CLKDIV2))) - continue; - status = xf86CheckModeForMonitor(p, pScrn->monitor); - if (status == MODE_OK) { - if (calcrefresh > refresh) { - refresh = calcrefresh; - newMode = p; - } - modeOK = TRUE; - } - } - if (newMode) { - pMode = xnfcalloc(sizeof(DisplayModeRec), 1); - memcpy((char*)pMode,(char*)newMode,sizeof(DisplayModeRec)); - pMode->name = xnfstrdup(newMode->name); - } - } - - /* - * Check if there's a valid monitor mode that this one can be matched - * up with. The actual matching is done later. - */ - if (modeOK && !pMode) { - float vrefresh = 0.0f; - int i; - - for (i=0;i<pScrn->monitor->nVrefresh;i++) { - - for (vrefresh = pScrn->monitor->vrefresh[i].hi; - vrefresh >= pScrn->monitor->vrefresh[i].lo; vrefresh -= 1.0f) { - - if (vrefresh != (float)0.0f) { - float best_vrefresh; - int int_vrefresh; - - /* Find the best refresh for the Intel chipsets */ - int_vrefresh = I830GetBestRefresh(pScrn, (int)vrefresh); - best_vrefresh = (float)i830refreshes[int_vrefresh]; - - /* Now, grab the best mode from the available refresh */ - pMode = I830GetGTF(mode->XResolution, mode->YResolution, - best_vrefresh, 0, 0); - - pMode->type = M_T_BUILTIN; - - status = xf86CheckModeForMonitor(pMode, pScrn->monitor); - if (status == MODE_OK) { - if (major >= 3) { - if (pMode->Clock * 1000 <= mode->MaxPixelClock) - modeOK = TRUE; - else - modeOK = FALSE; - } else - modeOK = TRUE; - } else - modeOK = FALSE; - pMode->status = status; - } else { - modeOK = FALSE; - } - if (modeOK) break; - } - if (modeOK) break; - } - } - - xf86ErrorFVerb(DEBUG_VERB, - "Mode: %x (%dx%d)\n", id, mode->XResolution, mode->YResolution); - xf86ErrorFVerb(DEBUG_VERB, - " ModeAttributes: 0x%x\n", mode->ModeAttributes); - xf86ErrorFVerb(DEBUG_VERB, - " WinAAttributes: 0x%x\n", mode->WinAAttributes); - xf86ErrorFVerb(DEBUG_VERB, - " WinBAttributes: 0x%x\n", mode->WinBAttributes); - xf86ErrorFVerb(DEBUG_VERB, - " WinGranularity: %d\n", mode->WinGranularity); - xf86ErrorFVerb(DEBUG_VERB, - " WinSize: %d\n", mode->WinSize); - xf86ErrorFVerb(DEBUG_VERB, - " WinASegment: 0x%x\n", mode->WinASegment); - xf86ErrorFVerb(DEBUG_VERB, - " WinBSegment: 0x%x\n", mode->WinBSegment); - xf86ErrorFVerb(DEBUG_VERB, - " WinFuncPtr: 0x%lx\n", (unsigned long)mode->WinFuncPtr); - xf86ErrorFVerb(DEBUG_VERB, - " BytesPerScanline: %d\n", mode->BytesPerScanline); - xf86ErrorFVerb(DEBUG_VERB, - " XResolution: %d\n", mode->XResolution); - xf86ErrorFVerb(DEBUG_VERB, - " YResolution: %d\n", mode->YResolution); - xf86ErrorFVerb(DEBUG_VERB, - " XCharSize: %d\n", mode->XCharSize); - xf86ErrorFVerb(DEBUG_VERB, - " YCharSize: %d\n", mode->YCharSize); - xf86ErrorFVerb(DEBUG_VERB, - " NumberOfPlanes: %d\n", mode->NumberOfPlanes); - xf86ErrorFVerb(DEBUG_VERB, - " BitsPerPixel: %d\n", mode->BitsPerPixel); - xf86ErrorFVerb(DEBUG_VERB, - " NumberOfBanks: %d\n", mode->NumberOfBanks); - xf86ErrorFVerb(DEBUG_VERB, - " MemoryModel: %d\n", mode->MemoryModel); - xf86ErrorFVerb(DEBUG_VERB, - " BankSize: %d\n", mode->BankSize); - xf86ErrorFVerb(DEBUG_VERB, - " NumberOfImages: %d\n", mode->NumberOfImages); - xf86ErrorFVerb(DEBUG_VERB, - " RedMaskSize: %d\n", mode->RedMaskSize); - xf86ErrorFVerb(DEBUG_VERB, - " RedFieldPosition: %d\n", mode->RedFieldPosition); - xf86ErrorFVerb(DEBUG_VERB, - " GreenMaskSize: %d\n", mode->GreenMaskSize); - xf86ErrorFVerb(DEBUG_VERB, - " GreenFieldPosition: %d\n", mode->GreenFieldPosition); - xf86ErrorFVerb(DEBUG_VERB, - " BlueMaskSize: %d\n", mode->BlueMaskSize); - xf86ErrorFVerb(DEBUG_VERB, - " BlueFieldPosition: %d\n", mode->BlueFieldPosition); - xf86ErrorFVerb(DEBUG_VERB, - " RsvdMaskSize: %d\n", mode->RsvdMaskSize); - xf86ErrorFVerb(DEBUG_VERB, - " RsvdFieldPosition: %d\n", mode->RsvdFieldPosition); - xf86ErrorFVerb(DEBUG_VERB, - " DirectColorModeInfo: %d\n", mode->DirectColorModeInfo); - if (major >= 2) { - xf86ErrorFVerb(DEBUG_VERB, - " PhysBasePtr: 0x%lx\n", - (unsigned long)mode->PhysBasePtr); - if (major >= 3) { - xf86ErrorFVerb(DEBUG_VERB, - " LinBytesPerScanLine: %d\n", mode->LinBytesPerScanLine); - xf86ErrorFVerb(DEBUG_VERB, - " BnkNumberOfImagePages: %d\n", mode->BnkNumberOfImagePages); - xf86ErrorFVerb(DEBUG_VERB, - " LinNumberOfImagePages: %d\n", mode->LinNumberOfImagePages); - xf86ErrorFVerb(DEBUG_VERB, - " LinRedMaskSize: %d\n", mode->LinRedMaskSize); - xf86ErrorFVerb(DEBUG_VERB, - " LinRedFieldPosition: %d\n", mode->LinRedFieldPosition); - xf86ErrorFVerb(DEBUG_VERB, - " LinGreenMaskSize: %d\n", mode->LinGreenMaskSize); - xf86ErrorFVerb(DEBUG_VERB, - " LinGreenFieldPosition: %d\n", mode->LinGreenFieldPosition); - xf86ErrorFVerb(DEBUG_VERB, - " LinBlueMaskSize: %d\n", mode->LinBlueMaskSize); - xf86ErrorFVerb(DEBUG_VERB, - " LinBlueFieldPosition: %d\n", mode->LinBlueFieldPosition); - xf86ErrorFVerb(DEBUG_VERB, - " LinRsvdMaskSize: %d\n", mode->LinRsvdMaskSize); - xf86ErrorFVerb(DEBUG_VERB, - " LinRsvdFieldPosition: %d\n", mode->LinRsvdFieldPosition); - xf86ErrorFVerb(DEBUG_VERB, - " MaxPixelClock: %ld\n", (unsigned long) - mode->MaxPixelClock); - } - } - - if (!modeOK) { - VBEFreeModeInfo(mode); - if (pMode) - xfree(pMode); - return NULL; - } - - pMode->status = MODE_OK; - pMode->type = M_T_BUILTIN; - - /* for adjust frame */ - pMode->HDisplay = mode->XResolution; - pMode->VDisplay = mode->YResolution; - -#if 0 - data = xnfcalloc(sizeof(VbeModeInfoData), 1); - data->mode = id; - data->data = mode; - pMode->PrivSize = sizeof(VbeModeInfoData); - pMode->Private = (INT32*)data; -#else - data = xnfcalloc(sizeof(I830ModePrivateRec), 1); - data->vbeData.mode = id; - data->vbeData.data = mode; - pMode->PrivSize = sizeof(I830ModePrivateRec); - pMode->Private = (INT32*)data; -#endif - pMode->next = NULL; - - return pMode; -} - -/* - * Check the available BIOS modes, and extract those that match the - * requirements into the modePool. Note: modePool is a NULL-terminated - * list. - */ +#include "i830_display.h" +#include "xf86Modes.h" +#include <randrstr.h> DisplayModePtr -I830GetModePool(ScrnInfoPtr pScrn, vbeInfoPtr pVbe, VbeInfoBlock *vbe) +i830_ddc_get_modes (xf86OutputPtr output) { - DisplayModePtr pMode, p = NULL, modePool = NULL; - int i = 0; - - for (i = 0; i < 0x7F; i++) { - if ((pMode = CheckMode(pScrn, pVbe, vbe, i, V_MODETYPE_VGA)) != NULL) { - ModeStatus status = MODE_OK; - - /* Check the mode against a specified virtual size (if any) */ - if (pScrn->display->virtualX > 0 && - pMode->HDisplay > pScrn->display->virtualX) { - status = MODE_VIRTUAL_X; - } - if (pScrn->display->virtualY > 0 && - pMode->VDisplay > pScrn->display->virtualY) { - status = MODE_VIRTUAL_Y; - } - if (status != MODE_OK) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Not using mode \"%dx%d\" (%s)\n", - pMode->HDisplay, pMode->VDisplay, - xf86ModeStatusToString(status)); - } else { - if (p == NULL) { - modePool = pMode; - } else { - p->next = pMode; - } - pMode->prev = NULL; - p = pMode; - } - } - } - return modePool; -} + I830OutputPrivatePtr intel_output = output->driver_private; + xf86MonPtr edid_mon; + DisplayModePtr modes; -/* - * Go through the monitor modes and selecting the best set of - * parameters for each BIOS mode. Note: This is only supported in - * VBE version 3.0 or later. - */ -void -I830SetModeParameters(ScrnInfoPtr pScrn, vbeInfoPtr pVbe) -{ - I830Ptr pI830 = I830PTR(pScrn); - DisplayModePtr pMode = pScrn->modes; - DisplayModePtr ppMode = pScrn->modes; - I830ModePrivatePtr mp = NULL; - - do { - int clock; - - mp = (I830ModePrivatePtr) pMode->Private; - - if (pI830->MergedFB) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%s\n", pScrn->monitor->id); - ppMode = (DisplayModePtr) mp->merged.First; - mp = (I830ModePrivatePtr) mp->merged.First->Private; - } - mp->vbeData.block = xcalloc(sizeof(VbeCRTCInfoBlock), 1); - mp->vbeData.block->HorizontalTotal = ppMode->HTotal; - mp->vbeData.block->HorizontalSyncStart = ppMode->HSyncStart; - mp->vbeData.block->HorizontalSyncEnd = ppMode->HSyncEnd; - mp->vbeData.block->VerticalTotal = ppMode->VTotal; - mp->vbeData.block->VerticalSyncStart = ppMode->VSyncStart; - mp->vbeData.block->VerticalSyncEnd = ppMode->VSyncEnd; - mp->vbeData.block->Flags = ((ppMode->Flags & V_NHSYNC) ? CRTC_NHSYNC : 0) | - ((ppMode->Flags & V_NVSYNC) ? CRTC_NVSYNC : 0); - mp->vbeData.block->PixelClock = ppMode->Clock * 1000; - /* XXX May not have this. */ - clock = VBEGetPixelClock(pVbe, mp->vbeData.mode, mp->vbeData.block->PixelClock); - if (clock) - mp->vbeData.block->PixelClock = clock; -#ifdef DEBUG - ErrorF("Setting clock %.2fMHz, closest is %.2fMHz\n", - (double)mp->vbeData.block->PixelClock / 1000000.0, - (double)clock / 1000000.0); -#endif - mp->vbeData.mode |= (1 << 11); - if (ppMode->VRefresh != 0) { - mp->vbeData.block->RefreshRate = ppMode->VRefresh * 100; - } else { - mp->vbeData.block->RefreshRate = (int)(((double)(mp->vbeData.block->PixelClock)/ - (double)(ppMode->HTotal * ppMode->VTotal)) * 100); - } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Attempting to use %2.2fHz refresh for mode \"%s\" (%x)\n", - (float)(((double)(mp->vbeData.block->PixelClock) / (double)(ppMode->HTotal * ppMode->VTotal))), ppMode->name, mp->vbeData.mode); -#ifdef DEBUG - ErrorF("Video Modeline: ID: 0x%x Name: %s %i %i %i %i - " - " %i %i %i %i %.2f MHz Refresh: %.2f Hz\n", - mp->vbeData.mode, ppMode->name, ppMode->HDisplay, ppMode->HSyncStart, - ppMode->HSyncEnd, ppMode->HTotal, ppMode->VDisplay, - ppMode->VSyncStart,ppMode->VSyncEnd,ppMode->VTotal, - (double)mp->vbeData.block->PixelClock/1000000.0, - (double)mp->vbeData.block->RefreshRate/100); -#endif - pMode = ppMode = pMode->next; - } while (pMode != pScrn->modes); - - if (pI830->MergedFB) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "%s\n", pI830->pScrn_2->monitor->id); - pMode = pScrn->modes; - do { - int clock; - - mp = (I830ModePrivatePtr) pMode->Private; - ppMode = (DisplayModePtr) mp->merged.Second; - mp = (I830ModePrivatePtr) mp->merged.Second->Private; - - mp->vbeData.block = xcalloc(sizeof(VbeCRTCInfoBlock), 1); - mp->vbeData.block->HorizontalTotal = ppMode->HTotal; - mp->vbeData.block->HorizontalSyncStart = ppMode->HSyncStart; - mp->vbeData.block->HorizontalSyncEnd = ppMode->HSyncEnd; - mp->vbeData.block->VerticalTotal = ppMode->VTotal; - mp->vbeData.block->VerticalSyncStart = ppMode->VSyncStart; - mp->vbeData.block->VerticalSyncEnd = ppMode->VSyncEnd; - mp->vbeData.block->Flags = ((ppMode->Flags & V_NHSYNC) ? CRTC_NHSYNC : 0) | - ((ppMode->Flags & V_NVSYNC) ? CRTC_NVSYNC : 0); - mp->vbeData.block->PixelClock = ppMode->Clock * 1000; - /* XXX May not have this. */ - clock = VBEGetPixelClock(pVbe, mp->vbeData.mode, mp->vbeData.block->PixelClock); - if (clock) - mp->vbeData.block->PixelClock = clock; -#ifdef DEBUG - ErrorF("Setting clock %.2fMHz, closest is %.2fMHz\n", - (double)mp->vbeData.block->PixelClock / 1000000.0, - (double)clock / 1000000.0); -#endif - mp->vbeData.mode |= (1 << 11); - if (ppMode->VRefresh != 0) { - mp->vbeData.block->RefreshRate = ppMode->VRefresh * 100; - } else { - mp->vbeData.block->RefreshRate = (int)(((double)(mp->vbeData.block->PixelClock)/ - (double)(ppMode->HTotal * ppMode->VTotal)) * 100); - } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Attempting to use %2.2fHz refresh for mode \"%s\" (%x)\n", - (float)(((double)(mp->vbeData.block->PixelClock) / (double)(ppMode->HTotal * ppMode->VTotal))), ppMode->name, mp->vbeData.mode); -#ifdef DEBUG - ErrorF("Video Modeline: ID: 0x%x Name: %s %i %i %i %i - " - " %i %i %i %i %.2f MHz Refresh: %.2f Hz\n", - mp->vbeData.mode, ppMode->name, ppMode->HDisplay, ppMode->HSyncStart, - ppMode->HSyncEnd, ppMode->HTotal, ppMode->VDisplay, - ppMode->VSyncStart,ppMode->VSyncEnd,ppMode->VTotal, - (double)mp->vbeData.block->PixelClock/1000000.0, - (double)mp->vbeData.block->RefreshRate/100); -#endif - pMode = ppMode = pMode->next; - } while (pMode != pScrn->modes); - } -} - -void -I830PrintModes(ScrnInfoPtr scrp) -{ - DisplayModePtr p; - float hsync, refresh = 0; - char *desc, *desc2, *prefix, *uprefix; - - if (scrp == NULL) - return; - - xf86DrvMsg(scrp->scrnIndex, scrp->virtualFrom, "Virtual size is %dx%d " - "(pitch %d)\n", scrp->virtualX, scrp->virtualY, - scrp->displayWidth); + edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus); + xf86OutputSetEDID (output, edid_mon); - p = scrp->modes; - if (p == NULL) - return; - - do { - desc = desc2 = ""; - if (p->HSync > 0.0) - hsync = p->HSync; - else if (p->HTotal > 0) - hsync = (float)p->Clock / (float)p->HTotal; - else - hsync = 0.0; - if (p->VTotal > 0) - refresh = hsync * 1000.0 / p->VTotal; - if (p->Flags & V_INTERLACE) { - refresh *= 2.0; - desc = " (I)"; - } - if (p->Flags & V_DBLSCAN) { - refresh /= 2.0; - desc = " (D)"; - } - if (p->VScan > 1) { - refresh /= p->VScan; - desc2 = " (VScan)"; - } - if (p->VRefresh > 0.0) - refresh = p->VRefresh; - if (p->type & M_T_BUILTIN) - prefix = "Built-in mode"; - else if (p->type & M_T_DEFAULT) - prefix = "Default mode"; - else - prefix = "Mode"; - if (p->type & M_T_USERDEF) - uprefix = "*"; - else - uprefix = " "; - if (p->name) - xf86DrvMsg(scrp->scrnIndex, X_CONFIG, - "%s%s \"%s\"\n", uprefix, prefix, p->name); - else - xf86DrvMsg(scrp->scrnIndex, X_PROBED, - "%s%s %dx%d (unnamed)\n", - uprefix, prefix, p->HDisplay, p->VDisplay); - p = p->next; - } while (p != NULL && p != scrp->modes); + modes = xf86OutputGetEDIDModes (output); + return modes; } diff --git a/driver/xf86-video-intel/src/i830_quirks.c b/driver/xf86-video-intel/src/i830_quirks.c index fe6cdd8d4..78292f720 100644 --- a/driver/xf86-video-intel/src/i830_quirks.c +++ b/driver/xf86-video-intel/src/i830_quirks.c @@ -162,6 +162,15 @@ static void i830_dmi_dump(void) } /* + * Old chips have undocumented panel fitting registers. Some of them actually + * work; this quirk indicates that. + */ +static void quirk_pfit_safe (I830Ptr pI830) +{ + pI830->quirk_flag |= QUIRK_PFIT_SAFE; +} + +/* * Some machines hose the display regs regardless of the ACPI DOS * setting, so we need to reset modes at ACPI event time. */ @@ -185,6 +194,11 @@ static void quirk_ignore_lvds (I830Ptr pI830) pI830->quirk_flag |= QUIRK_IGNORE_LVDS; } +static void quirk_ignore_crt (I830Ptr pI830) +{ + pI830->quirk_flag |= QUIRK_IGNORE_CRT; +} + static void quirk_mac_mini (I830Ptr pI830) { pI830->quirk_flag |= QUIRK_IGNORE_MACMINI_LVDS; @@ -208,16 +222,51 @@ static void quirk_lenovo_tv_dmi (I830Ptr pI830) pI830->quirk_flag |= QUIRK_IGNORE_TV; } +static void quirk_msi_lvds_dmi (I830Ptr pI830) +{ + /* MSI IM-945GSE-A has no TV output, nor a LVDS connection. + */ + if (!i830_dmi_data[board_name]) { + ErrorF("Failed to load DMI info, MSI LVDS quirk not applied.\n"); + return; + } + if (!strncmp(i830_dmi_data[board_name],"A9830IMS",8)) { + pI830->quirk_flag |= QUIRK_IGNORE_LVDS; + pI830->quirk_flag |= QUIRK_IGNORE_TV; + } +} + +static void quirk_ibase_lvds (I830Ptr pI830) +{ + if (!i830_dmi_data[board_name]) { + ErrorF("Failed to load DMI info, iBase LVDS quirk not applied.\n"); + return; + } + if (!strncmp(i830_dmi_data[board_name], "i855-W83627HF", 13)) { + pI830->quirk_flag |= QUIRK_IGNORE_LVDS; + } +} + static void quirk_ivch_dvob (I830Ptr pI830) { pI830->quirk_flag |= QUIRK_IVCH_NEED_DVOB; } +/* For broken hw/bios for incorrect acpi _LID state that + can't be fixed with customed DSDT or other way */ +static void quirk_broken_acpi_lid (I830Ptr pI830) +{ + pI830->quirk_flag |= QUIRK_BROKEN_ACPI_LID; +} + /* keep this list sorted by OEM, then by chip ID */ static i830_quirk i830_quirk_list[] = { /* Aopen mini pc */ + { PCI_CHIP_I915_GM, 0xa0a0, SUBSYS_ANY, quirk_ignore_lvds }, { PCI_CHIP_I945_GM, 0xa0a0, SUBSYS_ANY, quirk_ignore_lvds }, { PCI_CHIP_I965_GM, 0xa0a0, SUBSYS_ANY, quirk_ignore_lvds }, + { PCI_CHIP_GM45_GM, 0xa0a0, SUBSYS_ANY, quirk_ignore_lvds }, + { PCI_CHIP_I965_GM, 0x8086, 0x1999, quirk_ignore_lvds }, /* Apple Mac mini has no lvds, but macbook pro does */ @@ -248,11 +297,12 @@ static i830_quirk i830_quirk_list[] = { /* Lenovo Napa TV (use dmi)*/ { PCI_CHIP_I945_GM, 0x17aa, SUBSYS_ANY, quirk_lenovo_tv_dmi }, - /* Lenovo T61 has no TV output */ - { PCI_CHIP_I965_GM, 0x17aa, 0x20b5, quirk_ignore_tv }, /* Lenovo 3000 v200 */ { PCI_CHIP_I965_GM, 0x17aa, 0x3c18, quirk_ignore_tv }, + /* MSI IM-945GSE-A has no LVDS or TV (use dmi) */ + { PCI_CHIP_I945_GME, 0x8086, 0x27ae, quirk_msi_lvds_dmi }, + /* Panasonic Toughbook CF-Y4 has no TV output */ { PCI_CHIP_I915_GM, 0x10f7, 0x8338, quirk_ignore_tv }, /* Panasonic Toughbook CF-Y7 has no TV output */ @@ -271,8 +321,14 @@ static i830_quirk i830_quirk_list[] = { /* Samsung Q45 has no TV output */ { PCI_CHIP_I965_GM, 0x144d, 0xc510, quirk_ignore_tv }, + /* HP Compaq nx6110 has no TV output */ + { PCI_CHIP_I915_GM, 0x103c, 0x099c, quirk_ignore_tv }, + /* HP Compaq nx6310 has no TV output */ + { PCI_CHIP_I945_GM, 0x103c, 0x30aa, quirk_ignore_tv }, /* HP Compaq 6730s has no TV output */ { PCI_CHIP_GM45_GM, 0x103c, 0x30e8, quirk_ignore_tv }, + /* HP Compaq 2730p needs pipe A force quirk (LP: #291555) */ + { PCI_CHIP_GM45_GM, 0x103c, 0x30eb, quirk_pipea_force }, /* Thinkpad R31 needs pipe A force quirk */ { PCI_CHIP_I830_M, 0x1014, 0x0505, quirk_pipea_force }, @@ -286,6 +342,8 @@ static i830_quirk i830_quirk_list[] = { { PCI_CHIP_I855_GM, 0x1028, 0x014f, quirk_pipea_force }, /* Dell Inspiron 510m needs pipe A force quirk */ { PCI_CHIP_I855_GM, 0x1028, 0x0164, quirk_pipea_force }, + /* Toshiba Satellite A30 needs pipe A force quirk */ + { PCI_CHIP_I855_GM, 0x1179, 0xff00 , quirk_pipea_force }, /* Toshiba Protege R-205, S-209 needs pipe A force quirk */ { PCI_CHIP_I915_GM, 0x1179, 0x0001, quirk_pipea_force }, /* Intel 855GM hardware (See LP: #216490) */ @@ -295,6 +353,8 @@ static i830_quirk i830_quirk_list[] = { /* HP Pavilion ze4944ea needs pipe A force quirk (See LP: #242389) */ { PCI_CHIP_I855_GM, 0x103c, 0x3084, quirk_pipea_force }, + { PCI_CHIP_I855_GM, 0x161f, 0x2030, quirk_pfit_safe }, + /* ThinkPad X40 needs pipe A force quirk */ { PCI_CHIP_I855_GM, 0x1014, 0x0557, quirk_pipea_force }, @@ -305,6 +365,11 @@ static i830_quirk i830_quirk_list[] = { { PCI_CHIP_I830_M, 0x104d, 0x8100, quirk_ivch_dvob }, /* Sony vaio VGN-SZ4MN (See LP: #212163) */ { PCI_CHIP_I830_M, 0x104d, 0x81e6, quirk_pipea_force }, + /* Sony VGC-LT71DB has no VGA output (bug #17395) */ + { PCI_CHIP_I965_GM, 0x104d, 0x9018, quirk_ignore_crt }, + + /* Quanta Gigabyte W251U (See LP: #244242) */ + { PCI_CHIP_I945_GM, 0x152d, 0x0755, quirk_pipea_force }, /* Ordi Enduro UW31 (See LP: #152416) */ { PCI_CHIP_I945_GM, 0x1584, 0x9900, quirk_ignore_tv }, @@ -322,6 +387,12 @@ static i830_quirk i830_quirk_list[] = { /* Asus Eee Box has no LVDS */ { PCI_CHIP_I945_GME, 0x1043, 0x1252, quirk_ignore_lvds }, + /* #19239: Mirrus Centrino laptop */ + { PCI_CHIP_I915_GM, 0x1584, 0x9800, quirk_broken_acpi_lid }, + + /* #19529: iBase MB890 board */ + { PCI_CHIP_I855_GM, 0x8086, 0x3582, quirk_ibase_lvds }, + { 0, 0, 0, NULL }, }; diff --git a/driver/xf86-video-intel/src/i830_render.c b/driver/xf86-video-intel/src/i830_render.c index 3a959e82e..5696fa3d6 100644 --- a/driver/xf86-video-intel/src/i830_render.c +++ b/driver/xf86-video-intel/src/i830_render.c @@ -34,23 +34,6 @@ #include "i830.h" #include "i830_reg.h" -#ifdef I830DEBUG -#define DEBUG_I830FALLBACK 1 -#endif - -#ifdef DEBUG_I830FALLBACK -#define I830FALLBACK(s, arg...) \ -do { \ - DPRINTF(PFX, "EXA fallback: " s "\n", ##arg); \ - return FALSE; \ -} while(0) -#else -#define I830FALLBACK(s, arg...) \ -do { \ - return FALSE; \ -} while(0) -#endif - struct blendinfo { Bool dst_alpha; Bool src_alpha; @@ -160,6 +143,8 @@ static struct formatinfo i830_tex_formats[] = { static Bool i830_get_dest_format(PicturePtr pDstPicture, uint32_t *dst_format) { + ScrnInfoPtr pScrn = xf86Screens[pDstPicture->pDrawable->pScreen->myNum]; + switch (pDstPicture->format) { case PICT_a8r8g8b8: case PICT_x8r8g8b8: @@ -227,6 +212,7 @@ static uint32_t i830_get_blend_cntl(int op, PicturePtr pMask, static Bool i830_check_composite_texture(PicturePtr pPict, int unit) { + ScrnInfoPtr pScrn = xf86Screens[pPict->pDrawable->pScreen->myNum]; int w = pPict->pDrawable->width; int h = pPict->pDrawable->height; int i; @@ -244,8 +230,8 @@ static Bool i830_check_composite_texture(PicturePtr pPict, int unit) I830FALLBACK("Unsupported picture format 0x%x\n", (int)pPict->format); - if (pPict->repeat && pPict->repeatType != RepeatNormal) - I830FALLBACK("unsupport repeat type\n"); + if (pPict->repeatType > RepeatReflect) + I830FALLBACK("Unsupported picture repeat %d\n", pPict->repeatType); if (pPict->filter != PictFilterNearest && pPict->filter != PictFilterBilinear) @@ -275,10 +261,9 @@ i830_texture_setup(PicturePtr pPict, PixmapPtr pPix, int unit) ScrnInfoPtr pScrn = xf86Screens[pPict->pDrawable->pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - uint32_t format, offset, pitch, filter; - uint32_t wrap_mode = TEXCOORDMODE_CLAMP_BORDER; + uint32_t format, pitch, filter; + uint32_t wrap_mode; - offset = intel_get_pixmap_offset(pPix); pitch = intel_get_pixmap_pitch(pPix); pI830->scale_units[unit][0] = pPix->drawable.width; pI830->scale_units[unit][1] = pPix->drawable.height; @@ -286,8 +271,22 @@ i830_texture_setup(PicturePtr pPict, PixmapPtr pPix, int unit) format = i8xx_get_card_format(pPict); - if (pPict->repeat) + switch (pPict->repeatType) { + case RepeatNone: + wrap_mode = TEXCOORDMODE_CLAMP_BORDER; + break; + case RepeatNormal: wrap_mode = TEXCOORDMODE_WRAP; + break; + case RepeatPad: + wrap_mode = TEXCOORDMODE_CLAMP; + break; + case RepeatReflect: + wrap_mode = TEXCOORDMODE_MIRROR; + break; + default: + FatalError("Unkown repeat type %d\n", pPict->repeatType); + } switch (pPict->filter) { case PictFilterNearest: @@ -314,7 +313,7 @@ i830_texture_setup(PicturePtr pPict, PixmapPtr pPix, int unit) BEGIN_BATCH(10); OUT_BATCH(_3DSTATE_LOAD_STATE_IMMEDIATE_2 | LOAD_TEXTURE_MAP(unit) | 4); - OUT_BATCH((offset & TM0S0_ADDRESS_MASK) | TM0S0_USE_FENCE); + OUT_RELOC_PIXMAP(pPix, I915_GEM_DOMAIN_SAMPLER, 0, TM0S0_USE_FENCE); OUT_BATCH(((pPix->drawable.height - 1) << TM0S1_HEIGHT_SHIFT) | ((pPix->drawable.width - 1) << TM0S1_WIDTH_SHIFT) | format); OUT_BATCH((pitch/4 - 1) << TM0S2_PITCH_SHIFT | TM0S2_MAP_2D); @@ -358,6 +357,7 @@ Bool i830_check_composite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture, PicturePtr pDstPicture) { + ScrnInfoPtr pScrn = xf86Screens[pDstPicture->pDrawable->pScreen->myNum]; uint32_t tmp1; /* Check for unsupported compositing operations. */ @@ -394,7 +394,7 @@ i830_prepare_composite(int op, PicturePtr pSrcPicture, { ScrnInfoPtr pScrn = xf86Screens[pSrcPicture->pDrawable->pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - uint32_t dst_format, dst_offset, dst_pitch; + uint32_t dst_format, dst_pitch; Bool is_affine_src, is_affine_mask; Bool is_nearest = FALSE; @@ -404,11 +404,10 @@ i830_prepare_composite(int op, PicturePtr pSrcPicture, i830_exa_check_pitch_3d(pDst); IntelEmitInvarientState(pScrn); - *pI830->last_3d = LAST_3D_RENDER; + pI830->last_3d = LAST_3D_RENDER; if (!i830_get_dest_format(pDstPicture, &dst_format)) return FALSE; - dst_offset = intel_get_pixmap_offset(pDst); dst_pitch = intel_get_pixmap_pitch(pDst); if (!i830_texture_setup(pSrcPicture, pSrc, 0)) @@ -446,7 +445,7 @@ i830_prepare_composite(int op, PicturePtr pSrcPicture, OUT_BATCH(_3DSTATE_BUF_INFO_CMD); OUT_BATCH(BUF_3D_ID_COLOR_BACK| BUF_3D_USE_FENCE | BUF_3D_PITCH(dst_pitch)); - OUT_BATCH(BUF_3D_ADDR(dst_offset)); + OUT_RELOC_PIXMAP(pDst, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0); OUT_BATCH(MI_NOOP); OUT_BATCH(_3DSTATE_DST_BUF_VARS_CMD); @@ -735,14 +734,3 @@ i830_composite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY, ADVANCE_BATCH(); } - -/** - * Do any cleanup from the Composite operation. - * - * This is shared between i830 through i965. - */ -void -i830_done_composite(PixmapPtr pDst) -{ - /* NO-OP */ -} diff --git a/driver/xf86-video-intel/src/i830_ring.h b/driver/xf86-video-intel/src/i830_ring.h index c2078fb49..062b7ead1 100644 --- a/driver/xf86-video-intel/src/i830_ring.h +++ b/driver/xf86-video-intel/src/i830_ring.h @@ -34,19 +34,14 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. if (I810_DEBUG & DEBUG_VERBOSE_RING) \ ErrorF("OUT_RING 0x%08x: 0x%08x, (mask %x)\n", \ pI830->ring_next, (unsigned int)(n), \ - pI830->LpRing->tail_mask); \ - *(volatile uint32_t *)(pI830->LpRing->virtual_start + \ + pI830->ring.tail_mask); \ + *(volatile uint32_t *)(pI830->ring.virtual_start + \ pI830->ring_next) = n; \ pI830->ring_used += 4; \ pI830->ring_next += 4; \ - pI830->ring_next &= pI830->LpRing->tail_mask; \ + pI830->ring_next &= pI830->ring.tail_mask; \ } while (0) -union intfloat { - float f; - unsigned int ui; -}; - #define OUT_RING_F(x) do { \ union intfloat tmp; \ tmp.f = (float)(x); \ @@ -65,8 +60,8 @@ union intfloat { FatalError("%s: ADVANCE_LP_RING: under-used allocation %d/%d\n ", \ __FUNCTION__, pI830->ring_used, \ pI830->ring_emitting); \ - pI830->LpRing->tail = pI830->ring_next; \ - pI830->LpRing->space -= pI830->ring_used; \ + pI830->ring.tail = pI830->ring_next; \ + pI830->ring.space -= pI830->ring_used; \ if (pI830->ring_next & 0x07) \ FatalError("%s: ADVANCE_LP_RING: " \ "ring_next (0x%x) isn't on a QWord boundary\n", \ @@ -85,9 +80,9 @@ do { \ pI830->ring_emitting = (n) * 4; \ if ((n) & 1) \ pI830->ring_emitting += 4; \ - if (pI830->LpRing->space < pI830->ring_emitting) \ + if (pI830->ring.space < pI830->ring_emitting) \ WaitRingFunc(pScrn, pI830->ring_emitting, 0); \ - pI830->ring_next = pI830->LpRing->tail; \ + pI830->ring_next = pI830->ring.tail; \ if (I810_DEBUG & DEBUG_VERBOSE_RING) \ ErrorF( "BEGIN_LP_RING %d in %s\n", n, FUNCTION_NAME); \ pI830->ring_used = 0; \ diff --git a/driver/xf86-video-intel/src/i830_sdvo.c b/driver/xf86-video-intel/src/i830_sdvo.c index 8f1b20b79..29ccd4e51 100644 --- a/driver/xf86-video-intel/src/i830_sdvo.c +++ b/driver/xf86-video-intel/src/i830_sdvo.c @@ -49,6 +49,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "i830_display.h" #include "i810_reg.h" #include "i830_sdvo_regs.h" +#include "X11/Xatom.h" /** SDVO driver private structure. */ struct i830_sdvo_priv { @@ -66,6 +67,14 @@ struct i830_sdvo_priv { */ struct i830_sdvo_caps caps; + /** + * For multiple function SDVO device, this is for current attached outputs. + */ + uint16_t attached_output; + + /* Current output type name */ + char *name; + /** Pixel clock limitations reported by the SDVO device, in kHz */ int pixel_clock_min, pixel_clock_max; @@ -102,6 +111,8 @@ struct i830_sdvo_priv { /** DDC bus used by this SDVO output */ uint8_t ddc_bus; + /* Default 0 for full RGB range 0-255, 1 is for RGB range 16-235 */ + uint32_t broadcast_rgb; /** State for save/restore */ /** @{ */ @@ -113,6 +124,8 @@ struct i830_sdvo_priv { /** @} */ }; +static Atom broadcast_atom; + /** * Writes the SDVOB or SDVOC with the given value, but always writes both * SDVOB and SDVOC to work around apparent hardware issues (according to @@ -231,10 +244,12 @@ const static struct _sdvo_cmd_name { SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_FORMAT), SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_FORMAT), SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_POWER_STATES), - SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ENCODER_POWER_STATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_POWER_STATE), SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODER_POWER_STATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_DISPLAY_POWER_STATE), SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CONTROL_BUS_SWITCH), SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT), SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS), /* HDMI op code */ SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPP_ENCODE), @@ -592,9 +607,12 @@ i830_sdvo_create_preferred_input_timing(xf86OutputPtr output, uint16_t clock, struct i830_sdvo_preferred_input_timing_args args; uint8_t status; + memset(&args, 0, sizeof(args)); args.clock = clock; args.width = width; args.height = height; + args.interlace = 0; + args.scaled = 0; i830_sdvo_write_cmd(output, SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING, &args, sizeof(args)); status = i830_sdvo_read_response(output, NULL, 0); @@ -700,7 +718,7 @@ i830_sdvo_get_dtd_from_mode(struct i830_sdvo_dtd *dtd, DisplayModePtr mode) dtd->part1.v_high = (((height >> 8) & 0xf) << 4) | ((v_blank_len >> 8) & 0xf); - dtd->part2.h_sync_off = h_sync_offset; + dtd->part2.h_sync_off = h_sync_offset & 0xff; dtd->part2.h_sync_width = h_sync_len & 0xff; dtd->part2.v_sync_off_width = (v_sync_offset & 0xf) << 4 | (v_sync_len & 0xf); @@ -722,27 +740,10 @@ i830_sdvo_get_dtd_from_mode(struct i830_sdvo_dtd *dtd, DisplayModePtr mode) static void i830_sdvo_get_mode_from_dtd(DisplayModePtr mode, struct i830_sdvo_dtd *dtd) { - uint16_t width, height; - uint16_t h_blank_len, h_sync_len, v_blank_len, v_sync_len; - uint16_t h_sync_offset, v_sync_offset; - - width = mode->CrtcHDisplay; - height = mode->CrtcVDisplay; - - /* do some mode translations */ - h_blank_len = mode->CrtcHBlankEnd - mode->CrtcHBlankStart; - h_sync_len = mode->CrtcHSyncEnd - mode->CrtcHSyncStart; - - v_blank_len = mode->CrtcVBlankEnd - mode->CrtcVBlankStart; - v_sync_len = mode->CrtcVSyncEnd - mode->CrtcVSyncStart; - - h_sync_offset = mode->CrtcHSyncStart - mode->CrtcHBlankStart; - v_sync_offset = mode->CrtcVSyncStart - mode->CrtcVBlankStart; - mode->HDisplay = dtd->part1.h_active; mode->HDisplay += ((dtd->part1.h_high >> 4) & 0x0f) << 8; mode->HSyncStart = mode->HDisplay + dtd->part2.h_sync_off; - mode->HSyncStart += (dtd->part2.sync_off_width_high & 0xa0) << 2; + mode->HSyncStart += (dtd->part2.sync_off_width_high & 0xc0) << 2; mode->HSyncEnd = mode->HSyncStart + dtd->part2.h_sync_width; mode->HSyncEnd += (dtd->part2.sync_off_width_high & 0x30) << 4; mode->HTotal = mode->HDisplay + dtd->part1.h_blank; @@ -752,7 +753,7 @@ i830_sdvo_get_mode_from_dtd(DisplayModePtr mode, struct i830_sdvo_dtd *dtd) mode->VDisplay += ((dtd->part1.v_high >> 4) & 0x0f) << 8; mode->VSyncStart = mode->VDisplay; mode->VSyncStart += (dtd->part2.v_sync_off_width >> 4) & 0xf; - mode->VSyncStart += (dtd->part2.sync_off_width_high & 0x0a) << 2; + mode->VSyncStart += (dtd->part2.sync_off_width_high & 0x0c) << 2; mode->VSyncStart += dtd->part2.v_sync_off_high & 0xc0; mode->VSyncEnd = mode->VSyncStart + (dtd->part2.v_sync_off_width & 0xf); mode->VSyncEnd += (dtd->part2.sync_off_width_high & 0x3) << 4; @@ -761,7 +762,7 @@ i830_sdvo_get_mode_from_dtd(DisplayModePtr mode, struct i830_sdvo_dtd *dtd) mode->Clock = dtd->part1.clock * 10; - mode->Flags &= (V_PHSYNC | V_PVSYNC); + mode->Flags &= ~(V_PHSYNC | V_PVSYNC); if (dtd->part2.dtd_flags & 0x2) mode->Flags |= V_PHSYNC; if (dtd->part2.dtd_flags & 0x4) @@ -784,6 +785,24 @@ i830_sdvo_get_supp_encode(xf86OutputPtr output, struct i830_sdvo_encode *encode) } static Bool +i830_sdvo_get_digital_encoding_mode(xf86OutputPtr output) +{ + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; + uint8_t status; + + i830_sdvo_set_target_output(output, dev_priv->controlled_output); + + i830_sdvo_write_cmd(output, SDVO_CMD_GET_ENCODE, NULL, 0); + status = i830_sdvo_read_response(output, &dev_priv->is_hdmi, 1); + if (status != SDVO_CMD_STATUS_SUCCESS) { + dev_priv->is_hdmi = FALSE; + return FALSE; + } + return TRUE; +} + +static Bool i830_sdvo_set_encode(xf86OutputPtr output, uint8_t mode) { uint8_t status; @@ -945,13 +964,37 @@ static void i830_sdvo_set_avi_infoframe(xf86OutputPtr output, .len = DIP_LEN_AVI, }; - avi_if.u.avi.PR = i830_sdvo_get_pixel_multiplier(mode) - 1; avi_if.checksum = i830_sdvo_calc_hbuf_csum((uint8_t *)&avi_if, 4 + avi_if.len); i830_sdvo_set_hdmi_buf(output, 1, (uint8_t *)&avi_if, 4 + avi_if.len, SDVO_HBUF_TX_VSYNC); } +static void +i830_sdvo_set_tv_format(xf86OutputPtr output) +{ + ScrnInfoPtr pScrn = output->scrn; + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; + struct i830_sdvo_tv_format *format, unset; + uint8_t status; + + format = &dev_priv->tv_format; + memset(&unset, 0, sizeof(unset)); + if (memcmp(format, &unset, sizeof(*format))) { + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "%s: Choosing default TV format of NTSC-M\n", + SDVO_NAME(dev_priv)); + format->ntsc_m = 1; + i830_sdvo_write_cmd(output, SDVO_CMD_SET_TV_FORMAT, format, + sizeof(*format)); + status = i830_sdvo_read_response(output, NULL, 0); + if (status != SDVO_CMD_STATUS_SUCCESS) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "%s: Fail to set TV format\n", SDVO_NAME(dev_priv)); + } +} + static Bool i830_sdvo_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, DisplayModePtr adjusted_mode) @@ -997,8 +1040,17 @@ i830_sdvo_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, i830_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd); + xf86SetModeCrtc(adjusted_mode, 0); + ErrorF("input modeline:\n"); xf86PrintModeline(0, adjusted_mode); + + /* adjust origin mode's clock for current input, + for correct pixel mulitiplier setting. */ + mode->Clock = adjusted_mode->Clock; + + /* Clock range is required to be in 100-200Mhz */ + adjusted_mode->Clock *= i830_sdvo_get_pixel_multiplier(mode); } else { return FALSE; } @@ -1017,7 +1069,7 @@ i830_sdvo_mode_set(xf86OutputPtr output, DisplayModePtr mode, struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; xf86CrtcPtr crtc = output->crtc; I830CrtcPrivatePtr intel_crtc = crtc->driver_private; - uint32_t sdvox; + uint32_t sdvox = 0; int sdvo_pixel_multiply; struct i830_sdvo_in_out_map in_out; struct i830_sdvo_dtd input_dtd; @@ -1039,23 +1091,33 @@ i830_sdvo_mode_set(xf86OutputPtr output, DisplayModePtr mode, &in_out, sizeof(in_out)); status = i830_sdvo_read_response(output, NULL, 0); - if (dev_priv->is_hdmi) + if (dev_priv->is_hdmi) { i830_sdvo_set_avi_infoframe(output, mode); + sdvox |= SDVO_AUDIO_ENABLE; + } - i830_sdvo_get_dtd_from_mode(&input_dtd, mode); + /* We have tried to get input timing in mode_fixup, and filled into + adjusted_mode */ + if (dev_priv->is_tv) + i830_sdvo_get_dtd_from_mode(&input_dtd, adjusted_mode); + else + i830_sdvo_get_dtd_from_mode(&input_dtd, mode); /* If it's a TV, we already set the output timing in mode_fixup. * Otherwise, the output timing is equal to the input timing. */ + i830_sdvo_set_target_output(output, dev_priv->controlled_output); + /* Set the input timing to the screen. Assume always input 0. */ + i830_sdvo_set_target_input(output, TRUE, FALSE); + + if (dev_priv->is_tv) + i830_sdvo_set_tv_format(output); + if (!dev_priv->is_tv) { /* Set the output timing to the screen */ - i830_sdvo_set_target_output(output, dev_priv->controlled_output); i830_sdvo_set_output_timing(output, &input_dtd); } - /* Set the input timing to the screen. Assume always input 0. */ - i830_sdvo_set_target_input(output, TRUE, FALSE); - /* We would like to use i830_sdvo_create_preferred_input_timing() to * provide the device with a timing it can support, if it supports that * feature. However, presumably we would need to adjust the CRTC to output @@ -1088,11 +1150,11 @@ i830_sdvo_mode_set(xf86OutputPtr output, DisplayModePtr mode, /* Set the SDVO control regs. */ if (IS_I965G(pI830)) { - sdvox = SDVO_BORDER_ENABLE | + sdvox |= SDVO_BORDER_ENABLE | SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; } else { - sdvox = INREG(dev_priv->output_device); + sdvox |= INREG(dev_priv->output_device); switch (dev_priv->output_device) { case SDVOB: sdvox &= SDVOB_PRESERVE_MASK; @@ -1417,6 +1479,7 @@ i830_sdvo_dump_device(xf86OutputPtr output) i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SUPPORTED_TV_FORMATS); i830_sdvo_dump_cmd(output, SDVO_CMD_GET_TV_FORMAT); i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT); + i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT); i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS); i830_sdvo_dump_cmd(output, SDVO_CMD_GET_SUPP_ENCODE); @@ -1445,6 +1508,175 @@ i830_sdvo_dump(ScrnInfoPtr pScrn) } } +static void +i830_sdvo_set_hdmi_encode (xf86OutputPtr output) +{ + /* enable hdmi encoding mode if supported */ + i830_sdvo_set_encode(output, SDVO_ENCODE_HDMI); + i830_sdvo_set_colorimetry(output, SDVO_COLORIMETRY_RGB256); +} + +/** + * Determine if current TMDS encoding is HDMI. + * Return TRUE if found HDMI encoding is used, otherwise return FALSE. + */ +static Bool +i830_sdvo_check_hdmi_encode (xf86OutputPtr output) +{ + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; + + if (i830_sdvo_get_supp_encode(output, &dev_priv->encode) && + i830_sdvo_get_digital_encoding_mode(output) && + dev_priv->is_hdmi) + { + i830_sdvo_set_hdmi_encode(output); + return TRUE; + } else + return FALSE; +} + +static void i830_sdvo_select_ddc_bus(struct i830_sdvo_priv *dev_priv); + +static Bool +i830_sdvo_output_setup (xf86OutputPtr output, uint16_t flag) +{ + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; + char *name_prefix; + char *name_suffix; + + if (dev_priv->output_device == SDVOB) + name_suffix = "-1"; + else + name_suffix = "-2"; + + /* clear up privates */ + dev_priv->is_tv = FALSE; + intel_output->needs_tv_clock = FALSE; + + if (flag & (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1)) + { + if (flag & SDVO_OUTPUT_TMDS0) + dev_priv->controlled_output = SDVO_OUTPUT_TMDS0; + else + dev_priv->controlled_output = SDVO_OUTPUT_TMDS1; + output->subpixel_order = SubPixelHorizontalRGB; + name_prefix="TMDS"; + + if (i830_sdvo_check_hdmi_encode (output)) + name_prefix = "HDMI"; + } + else if (flag & SDVO_OUTPUT_SVID0) + { + dev_priv->controlled_output = SDVO_OUTPUT_SVID0; + output->subpixel_order = SubPixelHorizontalRGB; /* XXX */ + name_prefix="TV"; + dev_priv->is_tv = TRUE; + intel_output->needs_tv_clock = TRUE; + } + else if (flag & SDVO_OUTPUT_CVBS0) + { + dev_priv->controlled_output = SDVO_OUTPUT_CVBS0; + output->subpixel_order = SubPixelHorizontalRGB; /* XXX */ + name_prefix="TV"; + dev_priv->is_tv = TRUE; + intel_output->needs_tv_clock = TRUE; + } + else if (flag & SDVO_OUTPUT_RGB0) + { + dev_priv->controlled_output = SDVO_OUTPUT_RGB0; + output->subpixel_order = SubPixelHorizontalRGB; + name_prefix="VGA"; + } + else if (flag & SDVO_OUTPUT_RGB1) + { + dev_priv->controlled_output = SDVO_OUTPUT_RGB1; + output->subpixel_order = SubPixelHorizontalRGB; + name_prefix="VGA"; + } else if (flag & SDVO_OUTPUT_LVDS0) { + dev_priv->controlled_output = SDVO_OUTPUT_LVDS0; + output->subpixel_order = SubPixelHorizontalRGB; + name_prefix="LVDS"; + } else if (flag & SDVO_OUTPUT_LVDS1) { + dev_priv->controlled_output = SDVO_OUTPUT_LVDS1; + output->subpixel_order = SubPixelHorizontalRGB; + name_prefix="LVDS"; + } else { + unsigned char bytes[2]; + + dev_priv->controlled_output = 0; + memcpy (bytes, &flag, 2); + xf86DrvMsg(intel_output->pI2CBus->scrnIndex, X_WARNING, + "%s: Unknown SDVO output type (0x%02x%02x)\n", + SDVO_NAME(dev_priv), + bytes[1], bytes[0]); + name_prefix="Unknown"; + } + + /* if exist origin name it will be freed in xf86OutputRename() */ + dev_priv->name = xalloc(strlen(name_prefix) + strlen(name_suffix) + 1); + strcpy (dev_priv->name, name_prefix); + strcat (dev_priv->name, name_suffix); + + if (!xf86OutputRename (output, dev_priv->name)) + { + xf86DrvMsg(intel_output->pI2CBus->scrnIndex, X_WARNING, + "%s: Failed to rename output to %s\n", + SDVO_NAME(dev_priv), dev_priv->name); + xf86OutputDestroy (output); + return FALSE; + } + + /* update randr_output's name */ + if (output->randr_output) { + int nameLength = strlen(dev_priv->name); + RROutputPtr randr_output = output->randr_output; + char *name = xalloc(nameLength + 1); + + if (name) { + if (randr_output->name != (char *) (randr_output + 1)) + xfree(randr_output->name); + randr_output->name = name; + randr_output->nameLength = nameLength; + memcpy(randr_output->name, dev_priv->name, nameLength); + randr_output->name[nameLength] = '\0'; + } else + xf86DrvMsg(intel_output->pI2CBus->scrnIndex, X_WARNING, + "%s: Failed to update RandR output name to %s\n", + SDVO_NAME(dev_priv), dev_priv->name); + } + + i830_sdvo_select_ddc_bus(dev_priv); + + return TRUE; +} + +static Bool +i830_sdvo_multifunc_encoder(xf86OutputPtr output) +{ + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; + int caps = 0; + + if (dev_priv->caps.output_flags & (SDVO_OUTPUT_TMDS0 | + SDVO_OUTPUT_TMDS1)) + caps++; + if (dev_priv->caps.output_flags & (SDVO_OUTPUT_RGB0 | + SDVO_OUTPUT_RGB1)) + caps++; + if (dev_priv->caps.output_flags & (SDVO_OUTPUT_CVBS0 | + SDVO_OUTPUT_SVID0 | SDVO_OUTPUT_YPRPB0 | + SDVO_OUTPUT_SCART0 | SDVO_OUTPUT_CVBS1 | + SDVO_OUTPUT_SVID1 | SDVO_OUTPUT_YPRPB1 | + SDVO_OUTPUT_SCART1)) + caps++; + if (dev_priv->caps.output_flags & (SDVO_OUTPUT_LVDS0 | + SDVO_OUTPUT_LVDS1)) + caps++; + return (caps > 1); +} + /** * Asks the SDVO device if any displays are currently connected. * @@ -1457,7 +1689,9 @@ i830_sdvo_dump(ScrnInfoPtr pScrn) static xf86OutputStatus i830_sdvo_detect(xf86OutputPtr output) { - uint8_t response[2]; + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; + uint16_t response; uint8_t status; i830_sdvo_write_cmd(output, SDVO_CMD_GET_ATTACHED_DISPLAYS, NULL, 0); @@ -1466,10 +1700,30 @@ i830_sdvo_detect(xf86OutputPtr output) if (status != SDVO_CMD_STATUS_SUCCESS) return XF86OutputStatusUnknown; - if (response[0] != 0 || response[1] != 0) - return XF86OutputStatusConnected; - else + if (response == 0) return XF86OutputStatusDisconnected; + + if (i830_sdvo_multifunc_encoder(output)) { + if (dev_priv->attached_output != response) { + if (!i830_sdvo_output_setup(output, response)) + return XF86OutputStatusUnknown; + dev_priv->attached_output = response; + } + } + + if (response & (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1)) + { + xf86MonPtr edid_mon; + /* Check EDID in DVI-I case */ + i830_sdvo_set_control_bus_switch(output, dev_priv->ddc_bus); + edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus); + if (edid_mon && !DIGITAL(edid_mon->features.input_type)) { + xfree(edid_mon); + return XF86OutputStatusDisconnected; + } + xfree(edid_mon); + } + return XF86OutputStatusConnected; } static DisplayModePtr @@ -1481,10 +1735,11 @@ i830_sdvo_get_ddc_modes(xf86OutputPtr output) xf86OutputPtr crt; I830OutputPrivatePtr intel_output; xf86MonPtr edid_mon = NULL; + struct i830_sdvo_priv *dev_priv; modes = i830_ddc_get_modes(output); if (modes != NULL) - return modes; + goto check_hdmi; /* Mac mini hack. On this device, I get DDC through the analog, which * load-detects as disconnected. I fail to DDC through the SDVO DDC, @@ -1495,13 +1750,32 @@ i830_sdvo_get_ddc_modes(xf86OutputPtr output) intel_output = crt->driver_private; if (intel_output->type == I830_OUTPUT_ANALOG && crt->funcs->detect(crt) == XF86OutputStatusDisconnected) { + I830I2CInit(pScrn, &intel_output->pDDCBus, GPIOA, "CRTDDC_A"); edid_mon = xf86OutputGetEDID(crt, intel_output->pDDCBus); + xf86DestroyI2CBusRec(intel_output->pDDCBus, TRUE, TRUE); } if (edid_mon) { xf86OutputSetEDID(output, edid_mon); modes = xf86OutputGetEDIDModes(output); } +check_hdmi: + /* Check if HDMI encode, setup it and set the flag for HDMI audio */ + intel_output = output->driver_private; + dev_priv = intel_output->dev_priv; + + if (dev_priv->caps.output_flags & (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1)) + { + if (!i830_sdvo_check_hdmi_encode(output)) { + /* check EDID HDMI info for monitor */ + if (output->MonInfo && xf86LoaderCheckSymbol("xf86MonitorIsHDMI") + && xf86MonitorIsHDMI(output->MonInfo)) { + dev_priv->is_hdmi = TRUE; + i830_sdvo_set_hdmi_encode (output); + } else + dev_priv->is_hdmi = FALSE; + } + } return modes; } @@ -1550,10 +1824,9 @@ i830_sdvo_get_tv_mode(DisplayModePtr *head, int width, int height, static void i830_sdvo_check_tv_format(xf86OutputPtr output) { - ScrnInfoPtr pScrn = output->scrn; I830OutputPrivatePtr intel_output = output->driver_private; struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; - struct i830_sdvo_tv_format format, unset; + struct i830_sdvo_tv_format format; uint8_t status; i830_sdvo_write_cmd(output, SDVO_CMD_GET_TV_FORMAT, NULL, 0); @@ -1561,16 +1834,7 @@ i830_sdvo_check_tv_format(xf86OutputPtr output) if (status != SDVO_CMD_STATUS_SUCCESS) return; - memset(&unset, 0, sizeof(unset)); - if (memcmp(&format, &unset, sizeof(format))) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "%s: Choosing default TV format of NTSC-M\n", - SDVO_NAME(dev_priv)); - - format.ntsc_m = TRUE; - i830_sdvo_write_cmd(output, SDVO_CMD_SET_TV_FORMAT, NULL, 0); - status = i830_sdvo_read_response(output, NULL, 0); - } + memcpy(&dev_priv->tv_format, &format, sizeof(format)); } static DisplayModePtr @@ -1580,6 +1844,7 @@ i830_sdvo_get_tv_modes(xf86OutputPtr output) struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; DisplayModePtr modes = NULL; struct i830_sdvo_sdtv_resolution_reply *res = &dev_priv->sdtv_resolutions; + struct i830_sdvo_sdtv_resolution_request tv_res; uint8_t status; float refresh = 60; /* XXX */ @@ -1587,7 +1852,10 @@ i830_sdvo_get_tv_modes(xf86OutputPtr output) /* Read the list of supported input resolutions for the selected TV format. */ - i830_sdvo_write_cmd(output, SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT, NULL, 0); + memset(&tv_res, 0, sizeof(tv_res)); + memcpy(&tv_res, &dev_priv->tv_format, sizeof(tv_res)); + i830_sdvo_write_cmd(output, SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT, + &tv_res, sizeof(tv_res)); status = i830_sdvo_read_response(output, res, sizeof(*res)); if (status != SDVO_CMD_STATUS_SUCCESS) return NULL; @@ -1634,10 +1902,18 @@ i830_sdvo_destroy (xf86OutputPtr output) if (intel_output) { struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; - + xf86DestroyI2CBusRec (intel_output->pDDCBus, FALSE, FALSE); xf86DestroyI2CDevRec (&dev_priv->d, FALSE); xf86DestroyI2CBusRec (dev_priv->d.pI2CBus, TRUE, TRUE); + + if (output->randr_output) { + RROutputPtr randr_output = output->randr_output; + if (randr_output->name && + randr_output->name != (char *) (randr_output + 1)) + xfree(randr_output->name); + } + xfree (intel_output); } } @@ -1656,7 +1932,94 @@ i830_sdvo_get_crtc(xf86OutputPtr output) } #endif +static void +i830_sdvo_create_resources(xf86OutputPtr output) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; + INT32 broadcast_range[2]; + int err; + + /* only R G B are 8bit color mode */ + if (pScrn->depth != 24 || + /* only 965G and G4X platform */ + !(IS_I965G(pI830) || IS_G4X(pI830)) || + /* only TMDS encoding */ + !(strstr(output->name, "TMDS") || strstr(output->name, "HDMI"))) + return; + + broadcast_atom = + MakeAtom("BROADCAST_RGB", sizeof("BROADCAST_RGB") - 1, TRUE); + + broadcast_range[0] = 0; + broadcast_range[1] = 1; + err = RRConfigureOutputProperty(output->randr_output, + broadcast_atom, + FALSE, TRUE, FALSE, 2, broadcast_range); + if (err != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "RRConfigureOutputProperty error, %d\n", err); + return; + } + /* Set the current value of the broadcast property as full range */ + dev_priv->broadcast_rgb = 0; + err = RRChangeOutputProperty(output->randr_output, + broadcast_atom, + XA_INTEGER, 32, PropModeReplace, + 1, &dev_priv->broadcast_rgb, + FALSE, TRUE); + if (err != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "RRChangeOutputProperty error, %d\n", err); + return; + } +} + +static Bool +i830_sdvo_set_property(xf86OutputPtr output, Atom property, + RRPropertyValuePtr value) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; + uint32_t temp; + + if (property == broadcast_atom) { + uint32_t val; + + if (value->type != XA_INTEGER || value->format != 32 || + value->size != 1) + { + return FALSE; + } + + val = *(INT32 *)value->data; + if (val < 0 || val > 1) + { + return FALSE; + } + if (val == dev_priv->broadcast_rgb) + return TRUE; + + temp = INREG(dev_priv->output_device); + + if (val == 1) + temp |= SDVO_COLOR_NOT_FULL_RANGE; + else if (val == 0) + temp &= ~SDVO_COLOR_NOT_FULL_RANGE; + + i830_sdvo_write_sdvox(output, temp); + + dev_priv->broadcast_rgb = val; + } + return TRUE; +} + static const xf86OutputFuncsRec i830_sdvo_output_funcs = { + .create_resources = i830_sdvo_create_resources, .dpms = i830_sdvo_dpms, .save = i830_sdvo_save, .restore = i830_sdvo_restore, @@ -1667,6 +2030,7 @@ static const xf86OutputFuncsRec i830_sdvo_output_funcs = { .commit = i830_output_commit, .detect = i830_sdvo_detect, .get_modes = i830_sdvo_get_modes, + .set_property = i830_sdvo_set_property, .destroy = i830_sdvo_destroy, #ifdef RANDR_GET_CRTC_INTERFACE .get_crtc = i830_sdvo_get_crtc, @@ -1727,21 +2091,6 @@ i830_sdvo_select_ddc_bus(struct i830_sdvo_priv *dev_priv) dev_priv->ddc_bus = 1 << num_bits; } -static Bool -i830_sdvo_get_digital_encoding_mode(xf86OutputPtr output) -{ - I830OutputPrivatePtr intel_output = output->driver_private; - struct i830_sdvo_priv *dev_priv = intel_output->dev_priv; - uint8_t status; - - i830_sdvo_set_target_output(output, dev_priv->controlled_output); - - i830_sdvo_write_cmd(output, SDVO_CMD_GET_ENCODE, NULL, 0); - status = i830_sdvo_read_response(output, &dev_priv->is_hdmi, 1); - if (status != SDVO_CMD_STATUS_SUCCESS) - return FALSE; - return TRUE; -} Bool i830_sdvo_init(ScrnInfoPtr pScrn, int output_device) @@ -1752,9 +2101,6 @@ i830_sdvo_init(ScrnInfoPtr pScrn, int output_device) int i; unsigned char ch[0x40]; I2CBusPtr i2cbus = NULL, ddcbus; - char name[60]; - char *name_prefix; - char *name_suffix; output = xf86OutputCreate (pScrn, &i830_sdvo_output_funcs,NULL); if (!output) @@ -1794,11 +2140,9 @@ i830_sdvo_init(ScrnInfoPtr pScrn, int output_device) if (output_device == SDVOB) { dev_priv->d.DevName = "SDVO Controller B"; dev_priv->d.SlaveAddr = 0x70; - name_suffix="-1"; } else { dev_priv->d.DevName = "SDVO Controller C"; dev_priv->d.SlaveAddr = 0x72; - name_suffix="-2"; } dev_priv->d.pI2CBus = i2cbus; dev_priv->d.DriverPrivate.ptr = output; @@ -1859,68 +2203,17 @@ i830_sdvo_init(ScrnInfoPtr pScrn, int output_device) intel_output->pDDCBus = ddcbus; intel_output->dev_priv = dev_priv; - i830_sdvo_get_capabilities(output, &dev_priv->caps); - - if (dev_priv->caps.output_flags & (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1)) - { - if (dev_priv->caps.output_flags & SDVO_OUTPUT_TMDS0) - dev_priv->controlled_output = SDVO_OUTPUT_TMDS0; - else - dev_priv->controlled_output = SDVO_OUTPUT_TMDS1; - output->subpixel_order = SubPixelHorizontalRGB; - name_prefix="TMDS"; - - if (i830_sdvo_get_supp_encode(output, &dev_priv->encode) && - i830_sdvo_get_digital_encoding_mode(output) && - dev_priv->is_hdmi) { - /* enable hdmi encoding mode if supported */ - i830_sdvo_set_encode(output, SDVO_ENCODE_HDMI); - i830_sdvo_set_colorimetry(output, SDVO_COLORIMETRY_RGB256); - name_prefix = "HDMI"; - } - } - else if (dev_priv->caps.output_flags & SDVO_OUTPUT_SVID0) - { - dev_priv->controlled_output = SDVO_OUTPUT_SVID0; - output->subpixel_order = SubPixelHorizontalRGB; /* XXX */ - name_prefix="TV"; - dev_priv->is_tv = TRUE; - intel_output->needs_tv_clock = TRUE; - } - else if (dev_priv->caps.output_flags & SDVO_OUTPUT_RGB0) - { - dev_priv->controlled_output = SDVO_OUTPUT_RGB0; - output->subpixel_order = SubPixelHorizontalRGB; - name_prefix="VGA"; - } - else if (dev_priv->caps.output_flags & SDVO_OUTPUT_RGB1) - { - dev_priv->controlled_output = SDVO_OUTPUT_RGB1; - output->subpixel_order = SubPixelHorizontalRGB; - name_prefix="VGA"; - } - else - { - unsigned char bytes[2]; - - dev_priv->controlled_output = 0; - memcpy (bytes, &dev_priv->caps.output_flags, 2); - xf86DrvMsg(intel_output->pI2CBus->scrnIndex, X_WARNING, - "%s: Unknown SDVO output type (0x%02x%02x)\n", - SDVO_NAME(dev_priv), - bytes[0], bytes[1]); - name_prefix="Unknown"; - } - - strcpy (name, name_prefix); - strcat (name, name_suffix); - if (!xf86OutputRename (output, name)) + if (!i830_sdvo_get_capabilities(output, &dev_priv->caps)) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to get %s capabilities\n", + SDVO_NAME(dev_priv)); xf86OutputDestroy (output); return FALSE; } - i830_sdvo_select_ddc_bus(dev_priv); + if (!i830_sdvo_output_setup (output, dev_priv->caps.output_flags)) + return FALSE; /* Set the input timing to the screen. Assume always input 0. */ i830_sdvo_set_target_input(output, TRUE, FALSE); diff --git a/driver/xf86-video-intel/src/i830_sdvo_regs.h b/driver/xf86-video-intel/src/i830_sdvo_regs.h index 4d5555576..ab383550e 100644 --- a/driver/xf86-video-intel/src/i830_sdvo_regs.h +++ b/driver/xf86-video-intel/src/i830_sdvo_regs.h @@ -50,8 +50,8 @@ struct i830_sdvo_caps { uint8_t vendor_id; uint8_t device_id; uint8_t device_rev_id; - uint8_t sdvo_version_major; uint8_t sdvo_version_minor; + uint8_t sdvo_version_major; unsigned int sdvo_input_count:2; unsigned int smooth_scaling:1; unsigned int sharp_scaling:1; @@ -101,6 +101,9 @@ struct i830_sdvo_preferred_input_timing_args { uint16_t clock; uint16_t width; uint16_t height; + uint8_t interlace:1; + uint8_t scaled:1; + uint8_t pad:6; } __attribute__((packed)); /* I2C registers for SDVO */ @@ -210,7 +213,8 @@ struct i830_sdvo_in_out_map { struct i830_sdvo_get_interrupt_event_source_response { uint16_t interrupt_status; unsigned int ambient_light_interrupt:1; - unsigned int pad:7; + unsigned int hdmi_audio_encrypt_change:1; + unsigned int pad:6; } __attribute__((packed)); /** @@ -336,15 +340,15 @@ struct i830_sdvo_tv_format { unsigned int hdtv_std_smpte_240m_1080i_60:1; unsigned int hdtv_std_smpte_260m_1080i_59:1; unsigned int hdtv_std_smpte_260m_1080i_60:1; - unsigned int hdtv_std_smpte_270m_1080i_50:1; - unsigned int hdtv_std_smpte_274m_1080i_50:1; + unsigned int hdtv_std_smpte_274m_1080i_59:1; unsigned int hdtv_std_smpte_274m_1080i_60:1; unsigned int hdtv_std_smpte_274m_1080p_23:1; unsigned int hdtv_std_smpte_274m_1080p_24:1; unsigned int hdtv_std_smpte_274m_1080p_25:1; unsigned int hdtv_std_smpte_274m_1080p_29:1; + unsigned int hdtv_std_smpte_274m_1080p_30:1; unsigned int hdtv_std_smpte_274m_1080p_50:1; unsigned int hdtv_std_smpte_274m_1080p_59:1; @@ -356,7 +360,7 @@ struct i830_sdvo_tv_format { unsigned int hdtv_std_smpte_296m_720p_50:1; unsigned int hdtv_std_smpte_293m_480p_59:1; - unsigned int hdtv_std_smpte_270m_480i_59:1; + unsigned int hdtv_std_smpte_170m_480i_59:1; unsigned int hdtv_std_iturbt601_576i_50:1; unsigned int hdtv_std_iturbt601_576p_50:1; unsigned int hdtv_std_eia_7702a_480i_60:1; @@ -385,7 +389,17 @@ struct i830_sdvo_sdtv_resolution_request { unsigned int pal_n:1; unsigned int pal_nc:1; unsigned int pal_60:1; + unsigned int secam_b:1; + unsigned int secam_d:1; + unsigned int secam_g:1; + unsigned int secam_k:1; + + unsigned int secam_k1:1; + unsigned int secam_l:1; + unsigned int secam_60:1; + unsigned int pad:5; } __attribute__((packed)); + struct i830_sdvo_sdtv_resolution_reply { unsigned int res_320x200:1; unsigned int res_320x240:1; @@ -401,6 +415,7 @@ struct i830_sdvo_sdtv_resolution_reply { unsigned int res_720x480:1; unsigned int res_720x540:1; unsigned int res_720x576:1; + unsigned int res_768x576:1; unsigned int res_800x600:1; unsigned int res_832x624:1; @@ -410,13 +425,166 @@ struct i830_sdvo_sdtv_resolution_reply { unsigned int pad:5; } __attribute__((packed)); +/* Get supported resolution with squire pixel aspect ratio that can be + scaled for the requested HDTV format */ +#define SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT 0x85 + +struct i830_sdvo_hdtv_resolution_request { + unsigned int hdtv_std_smpte_240m_1080i_59:1; + unsigned int hdtv_std_smpte_240m_1080i_60:1; + unsigned int hdtv_std_smpte_260m_1080i_59:1; + unsigned int hdtv_std_smpte_260m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080i_50:1; + unsigned int hdtv_std_smpte_274m_1080i_59:1; + unsigned int hdtv_std_smpte_274m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080p_23:1; + + unsigned int hdtv_std_smpte_274m_1080p_24:1; + unsigned int hdtv_std_smpte_274m_1080p_25:1; + unsigned int hdtv_std_smpte_274m_1080p_29:1; + unsigned int hdtv_std_smpte_274m_1080p_30:1; + unsigned int hdtv_std_smpte_274m_1080p_50:1; + unsigned int hdtv_std_smpte_274m_1080p_59:1; + unsigned int hdtv_std_smpte_274m_1080p_60:1; + unsigned int hdtv_std_smpte_295m_1080i_50:1; + + unsigned int hdtv_std_smpte_295m_1080p_50:1; + unsigned int hdtv_std_smpte_296m_720p_59:1; + unsigned int hdtv_std_smpte_296m_720p_60:1; + unsigned int hdtv_std_smpte_296m_720p_50:1; + unsigned int hdtv_std_smpte_293m_480p_59:1; + unsigned int hdtv_std_smpte_170m_480i_59:1; + unsigned int hdtv_std_iturbt601_576i_50:1; + unsigned int hdtv_std_iturbt601_576p_50:1; + + unsigned int hdtv_std_eia_7702a_480i_60:1; + unsigned int hdtv_std_eia_7702a_480p_60:1; + unsigned int pad:6; +} __attribute__((packed)); + +struct i830_sdvo_hdtv_resolution_reply { + unsigned int res_640x480:1; + unsigned int res_800x600:1; + unsigned int res_1024x768:1; + unsigned int res_1280x960:1; + unsigned int res_1400x1050:1; + unsigned int res_1600x1200:1; + unsigned int res_1920x1440:1; + unsigned int res_2048x1536:1; + + unsigned int res_2560x1920:1; + unsigned int res_3200x2400:1; + unsigned int res_3840x2880:1; + unsigned int pad1:5; + + unsigned int res_848x480:1; + unsigned int res_1064x600:1; + unsigned int res_1280x720:1; + unsigned int res_1360x768:1; + unsigned int res_1704x960:1; + unsigned int res_1864x1050:1; + unsigned int res_1920x1080:1; + unsigned int res_2128x1200:1; + + unsigned int res_2560x1400:1; + unsigned int res_2728x1536:1; + unsigned int res_3408x1920:1; + unsigned int res_4264x2400:1; + unsigned int res_5120x2880:1; + unsigned int pad2:3; + + unsigned int res_768x480:1; + unsigned int res_960x600:1; + unsigned int res_1152x720:1; + unsigned int res_1124x768:1; + unsigned int res_1536x960:1; + unsigned int res_1680x1050:1; + unsigned int res_1728x1080:1; + unsigned int res_1920x1200:1; + + unsigned int res_2304x1440:1; + unsigned int res_2456x1536:1; + unsigned int res_3072x1920:1; + unsigned int res_3840x2400:1; + unsigned int res_4608x2880:1; + unsigned int pad3:3; + + unsigned int res_1280x1024:1; + unsigned int pad4:7; + + unsigned int res_1280x768:1; + unsigned int pad5:7; +} __attribute__((packed)); + +/* Get supported power state returns info for encoder and monitor, rely on + last SetTargetInput and SetTargetOutput calls */ #define SDVO_CMD_GET_SUPPORTED_POWER_STATES 0x2a -#define SDVO_CMD_GET_ENCODER_POWER_STATE 0x2b +/* Get power state returns info for encoder and monitor, rely on last + SetTargetInput and SetTargetOutput calls */ +#define SDVO_CMD_GET_POWER_STATE 0x2b +/* Set encoder power state */ #define SDVO_CMD_SET_ENCODER_POWER_STATE 0x2c # define SDVO_ENCODER_STATE_ON (1 << 0) # define SDVO_ENCODER_STATE_STANDBY (1 << 1) # define SDVO_ENCODER_STATE_SUSPEND (1 << 2) # define SDVO_ENCODER_STATE_OFF (1 << 3) +# define SDVO_MONITOR_STATE_ON (1 << 4) +# define SDVO_MONITOR_STATE_STANDBY (1 << 5) +# define SDVO_MONITOR_STATE_SUSPEND (1 << 6) +# define SDVO_MONITOR_STATE_OFF (1 << 7) + +#define SDVO_CMD_GET_MAX_PANEL_POWER_SEQUENCING 0x2d +#define SDVO_CMD_GET_PANEL_POWER_SEQUENCING 0x2e +#define SDVO_CMD_SET_PANEL_POWER_SEQUENCING 0x2f +/** + * The panel power sequencing parameters are in units of milliseconds. + * The high fields are bits 8:9 of the 10-bit values. + */ +struct sdvo_panel_power_sequencing { + uint8_t t0; + uint8_t t1; + uint8_t t2; + uint8_t t3; + uint8_t t4; + + unsigned int t0_high:2; + unsigned int t1_high:2; + unsigned int t2_high:2; + unsigned int t3_high:2; + + unsigned int t4_high:2; + unsigned int pad:6; +} __attribute__((packed)); + +#define SDVO_CMD_GET_MAX_BACKLIGHT_LEVEL 0x30 +struct sdvo_max_backlight_reply { + uint8_t max_value; + uint8_t default_value; +} __attribute__((packed)); + +#define SDVO_CMD_GET_BACKLIGHT_LEVEL 0x31 +#define SDVO_CMD_SET_BACKLIGHT_LEVEL 0x32 + +#define SDVO_CMD_GET_AMBIENT_LIGHT 0x33 +struct sdvo_get_ambient_light_reply { + uint16_t trip_low; + uint16_t trip_high; + uint16_t value; +} __attribute__((packed)); +#define SDVO_CMD_SET_AMBIENT_LIGHT 0x34 +struct sdvo_set_ambient_light_reply { + uint16_t trip_low; + uint16_t trip_high; + unsigned int enable:1; + unsigned int pad:7; +} __attribute__((packed)); + +/* Set display power state */ +#define SDVO_CMD_SET_DISPLAY_POWER_STATE 0x7d +# define SDVO_DISPLAY_STATE_ON (1 << 0) +# define SDVO_DISPLAY_STATE_STANDBY (1 << 1) +# define SDVO_DISPLAY_STATE_SUSPEND (1 << 2) +# define SDVO_DISPLAY_STATE_OFF (1 << 3) #define SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS 0x84 struct i830_sdvo_enhancements_reply { @@ -447,7 +615,7 @@ struct i830_sdvo_enhancements_reply { #define SDVO_CMD_GET_MAX_2D_FLICKER_FITER 0x52 #define SDVO_CMD_GET_MAX_SATURATION 0x55 #define SDVO_CMD_GET_MAX_HUE 0x58 -#define SDVO_CMD_GET_MAX_BRIGHTNESS 0x5c +#define SDVO_CMD_GET_MAX_BRIGHTNESS 0x5b #define SDVO_CMD_GET_MAX_CONTRAST 0x5e #define SDVO_CMD_GET_MAX_OVERSCAN_H 0x61 #define SDVO_CMD_GET_MAX_OVERSCAN_V 0x64 @@ -461,8 +629,17 @@ struct i830_sdvo_enhancement_limits_reply { uint16_t default_value; } __attribute__((packed)); -#define SDVO_CMD_GET_FLICKER_FITER 0x4d -#define SDVO_CMD_SET_FLICKER_FITER 0x4e +#define SDVO_CMD_GET_LVDS_PANEL_INFORMATION 0x7f +#define SDVO_CMD_SET_LVDS_PANEL_INFORMATION 0x80 +# define SDVO_LVDS_COLOR_DEPTH_18 (0 << 0) +# define SDVO_LVDS_COLOR_DEPTH_24 (1 << 0) +# define SDVO_LVDS_CONNECTOR_SPWG (0 << 2) +# define SDVO_LVDS_CONNECTOR_OPENLDI (1 << 2) +# define SDVO_LVDS_SINGLE_CHANNEL (0 << 4) +# define SDVO_LVDS_DUAL_CHANNEL (1 << 4) + +#define SDVO_CMD_GET_FLICKER_FILTER 0x4e +#define SDVO_CMD_SET_FLICKER_FILTER 0x4f #define SDVO_CMD_GET_ADAPTIVE_FLICKER_FITER 0x50 #define SDVO_CMD_SET_ADAPTIVE_FLICKER_FITER 0x51 #define SDVO_CMD_GET_2D_FLICKER_FITER 0x53 diff --git a/driver/xf86-video-intel/src/i830_tv.c b/driver/xf86-video-intel/src/i830_tv.c index 0a33357c6..8eb3e2634 100644 --- a/driver/xf86-video-intel/src/i830_tv.c +++ b/driver/xf86-video-intel/src/i830_tv.c @@ -56,8 +56,13 @@ enum tv_margin { /** Private structure for the integrated TV support */ struct i830_tv_priv { int type; + Bool force_type; char *tv_format; int margin[4]; + uint8_t brightness; + uint8_t contrast; + uint8_t saturation; + uint8_t hue; uint32_t save_TV_H_CTL_1; uint32_t save_TV_H_CTL_2; uint32_t save_TV_H_CTL_3; @@ -144,7 +149,7 @@ static const uint32_t filter_table[] = { 0x2EC03C80, 0x320029C0, 0x3D403080, 0x29402F00, 0x308031C0, 0x2F203DC0, 0x31802900, 0x3E8030C0, 0x28802F40, 0x30C03140, 0x2F203F40, 0x31402840, - 0x28003100, 0x28002F00, 0x00003100, 0x36403000, + 0x28003100, 0x28002F00, 0x00003100, 0x36403000, 0x2D002CC0, 0x30003640, 0x2D0036C0, 0x35C02CC0, 0x37403000, 0x2C802D40, 0x30003540, 0x2D8037C0, 0x34C02C40, 0x38403000, 0x2BC02E00, @@ -215,7 +220,7 @@ typedef struct { * * The constants below were all computed using a 107.520MHz clock */ - + /** * Register programming values for TV modes. * @@ -225,7 +230,7 @@ typedef struct { const static tv_mode_t tv_modes[] = { { .name = "NTSC-M", - .clock = 107520, + .clock = 108000, .refresh = 29.97, .oversample = TV_OVERSAMPLE_8X, .component_only = 0, @@ -239,7 +244,7 @@ const static tv_mode_t tv_modes[] = { .vsync_start_f1 = 6, .vsync_start_f2 = 7, .vsync_len = 6, - .veq_ena = TRUE, .veq_start_f1 = 0, + .veq_ena = TRUE, .veq_start_f1 = 0, .veq_start_f2 = 1, .veq_len = 18, .vi_end_f1 = 20, .vi_end_f2 = 21, @@ -249,12 +254,12 @@ const static tv_mode_t tv_modes[] = { .hburst_start = 72, .hburst_len = 34, .vburst_start_f1 = 9, .vburst_end_f1 = 240, .vburst_start_f2 = 10, .vburst_end_f2 = 240, - .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, .vburst_start_f4 = 10, .vburst_end_f4 = 240, /* desired 3.5800000 actual 3.5800000 clock 107.52 */ - .dda1_inc = 136, - .dda2_inc = 7624, .dda2_size = 20013, + .dda1_inc = 135, + .dda2_inc = 20800, .dda2_size = 27456, .dda3_inc = 0, .dda3_size = 0, .sc_reset = TV_SC_RESET_EVERY_4, .pal_burst = FALSE, @@ -276,7 +281,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "NTSC-443", - .clock = 107520, + .clock = 108000, .refresh = 29.97, .oversample = TV_OVERSAMPLE_8X, .component_only = 0, @@ -289,7 +294,7 @@ const static tv_mode_t tv_modes[] = { .vsync_start_f1 = 6, .vsync_start_f2 = 7, .vsync_len = 6, - .veq_ena = TRUE, .veq_start_f1 = 0, + .veq_ena = TRUE, .veq_start_f1 = 0, .veq_start_f2 = 1, .veq_len = 18, .vi_end_f1 = 20, .vi_end_f2 = 21, @@ -299,15 +304,15 @@ const static tv_mode_t tv_modes[] = { .hburst_start = 72, .hburst_len = 34, .vburst_start_f1 = 9, .vburst_end_f1 = 240, .vburst_start_f2 = 10, .vburst_end_f2 = 240, - .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, .vburst_start_f4 = 10, .vburst_end_f4 = 240, /* desired 4.4336180 actual 4.4336180 clock 107.52 */ .dda1_inc = 168, - .dda2_inc = 18557, .dda2_size = 20625, - .dda3_inc = 0, .dda3_size = 0, - .sc_reset = TV_SC_RESET_EVERY_8, - .pal_burst = TRUE, + .dda2_inc = 4093, .dda2_size = 27456, + .dda3_inc = 310, .dda3_size = 525, + .sc_reset = TV_SC_RESET_NEVER, + .pal_burst = FALSE, .composite_levels = { .blank = 225, .black = 267, .burst = 113 }, .composite_color = { @@ -326,7 +331,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "NTSC-J", - .clock = 107520, + .clock = 108000, .refresh = 29.97, .oversample = TV_OVERSAMPLE_8X, .component_only = 0, @@ -340,7 +345,7 @@ const static tv_mode_t tv_modes[] = { .vsync_start_f1 = 6, .vsync_start_f2 = 7, .vsync_len = 6, - .veq_ena = TRUE, .veq_start_f1 = 0, + .veq_ena = TRUE, .veq_start_f1 = 0, .veq_start_f2 = 1, .veq_len = 18, .vi_end_f1 = 20, .vi_end_f2 = 21, @@ -350,12 +355,12 @@ const static tv_mode_t tv_modes[] = { .hburst_start = 72, .hburst_len = 34, .vburst_start_f1 = 9, .vburst_end_f1 = 240, .vburst_start_f2 = 10, .vburst_end_f2 = 240, - .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, .vburst_start_f4 = 10, .vburst_end_f4 = 240, /* desired 3.5800000 actual 3.5800000 clock 107.52 */ - .dda1_inc = 136, - .dda2_inc = 7624, .dda2_size = 20013, + .dda1_inc = 135, + .dda2_inc = 20800, .dda2_size = 27456, .dda3_inc = 0, .dda3_size = 0, .sc_reset = TV_SC_RESET_EVERY_4, .pal_burst = FALSE, @@ -377,7 +382,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "PAL-M", - .clock = 107520, + .clock = 108000, .refresh = 29.97, .oversample = TV_OVERSAMPLE_8X, .component_only = 0, @@ -391,7 +396,7 @@ const static tv_mode_t tv_modes[] = { .vsync_start_f1 = 6, .vsync_start_f2 = 7, .vsync_len = 6, - .veq_ena = TRUE, .veq_start_f1 = 0, + .veq_ena = TRUE, .veq_start_f1 = 0, .veq_start_f2 = 1, .veq_len = 18, .vi_end_f1 = 20, .vi_end_f2 = 21, @@ -401,15 +406,15 @@ const static tv_mode_t tv_modes[] = { .hburst_start = 72, .hburst_len = 34, .vburst_start_f1 = 9, .vburst_end_f1 = 240, .vburst_start_f2 = 10, .vburst_end_f2 = 240, - .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, .vburst_start_f4 = 10, .vburst_end_f4 = 240, /* desired 3.5800000 actual 3.5800000 clock 107.52 */ - .dda1_inc = 136, - .dda2_inc = 7624, .dda2_size = 20013, + .dda1_inc = 135, + .dda2_inc = 16704, .dda2_size = 27456, .dda3_inc = 0, .dda3_size = 0, - .sc_reset = TV_SC_RESET_EVERY_4, - .pal_burst = FALSE, + .sc_reset = TV_SC_RESET_EVERY_8, + .pal_burst = TRUE, .composite_levels = { .blank = 225, .black = 267, .burst = 113 }, .composite_color = { @@ -429,7 +434,7 @@ const static tv_mode_t tv_modes[] = { { /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */ .name = "PAL-N", - .clock = 107520, + .clock = 108000, .refresh = 25.0, .oversample = TV_OVERSAMPLE_8X, .component_only = 0, @@ -443,24 +448,24 @@ const static tv_mode_t tv_modes[] = { .vsync_start_f1 = 6, .vsync_start_f2 = 7, .vsync_len = 6, - .veq_ena = TRUE, .veq_start_f1 = 0, + .veq_ena = TRUE, .veq_start_f1 = 0, .veq_start_f2 = 1, .veq_len = 18, .vi_end_f1 = 24, .vi_end_f2 = 25, .nbr_end = 286, .burst_ena = TRUE, - .hburst_start = 73, .hburst_len = 34, + .hburst_start = 73, .hburst_len = 34, .vburst_start_f1 = 8, .vburst_end_f1 = 285, .vburst_start_f2 = 8, .vburst_end_f2 = 286, - .vburst_start_f3 = 9, .vburst_end_f3 = 286, + .vburst_start_f3 = 9, .vburst_end_f3 = 286, .vburst_start_f4 = 9, .vburst_end_f4 = 285, /* desired 4.4336180 actual 4.4336180 clock 107.52 */ - .dda1_inc = 168, - .dda2_inc = 18557, .dda2_size = 20625, - .dda3_inc = 0, .dda3_size = 0, + .dda1_inc = 135, + .dda2_inc = 23578, .dda2_size = 27648, + .dda3_inc = 134, .dda3_size = 625, .sc_reset = TV_SC_RESET_EVERY_8, .pal_burst = TRUE, @@ -482,12 +487,12 @@ const static tv_mode_t tv_modes[] = { { /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */ .name = "PAL", - .clock = 107520, + .clock = 108000, .refresh = 25.0, .oversample = TV_OVERSAMPLE_8X, .component_only = 0, - .hsync_end = 64, .hblank_end = 128, + .hsync_end = 64, .hblank_end = 142, .hblank_start = 844, .htotal = 863, .progressive = FALSE, .trilevel_sync = FALSE, @@ -495,7 +500,7 @@ const static tv_mode_t tv_modes[] = { .vsync_start_f1 = 5, .vsync_start_f2 = 6, .vsync_len = 5, - .veq_ena = TRUE, .veq_start_f1 = 0, + .veq_ena = TRUE, .veq_start_f1 = 0, .veq_start_f2 = 1, .veq_len = 15, .vi_end_f1 = 24, .vi_end_f2 = 25, @@ -505,13 +510,13 @@ const static tv_mode_t tv_modes[] = { .hburst_start = 73, .hburst_len = 32, .vburst_start_f1 = 8, .vburst_end_f1 = 285, .vburst_start_f2 = 8, .vburst_end_f2 = 286, - .vburst_start_f3 = 9, .vburst_end_f3 = 286, + .vburst_start_f3 = 9, .vburst_end_f3 = 286, .vburst_start_f4 = 9, .vburst_end_f4 = 285, /* desired 4.4336180 actual 4.4336180 clock 107.52 */ .dda1_inc = 168, - .dda2_inc = 18557, .dda2_size = 20625, - .dda3_inc = 0, .dda3_size = 0, + .dda2_inc = 4122, .dda2_size = 27648, + .dda3_inc = 67, .dda3_size = 625, .sc_reset = TV_SC_RESET_EVERY_8, .pal_burst = TRUE, @@ -532,7 +537,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "480p@59.94Hz", - .clock = 107520, + .clock = 107520, .refresh = 59.94, .oversample = TV_OVERSAMPLE_4X, .component_only = 1, @@ -540,7 +545,7 @@ const static tv_mode_t tv_modes[] = { .hsync_end = 64, .hblank_end = 122, .hblank_start = 842, .htotal = 857, - .progressive = TRUE,.trilevel_sync = FALSE, + .progressive = TRUE, .trilevel_sync = FALSE, .vsync_start_f1 = 12, .vsync_start_f2 = 12, .vsync_len = 12, @@ -548,7 +553,7 @@ const static tv_mode_t tv_modes[] = { .veq_ena = FALSE, .vi_end_f1 = 44, .vi_end_f2 = 44, - .nbr_end = 496, + .nbr_end = 479, .burst_ena = FALSE, @@ -556,7 +561,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "480p@60Hz", - .clock = 107520, + .clock = 107520, .refresh = 60.0, .oversample = TV_OVERSAMPLE_4X, .component_only = 1, @@ -564,7 +569,7 @@ const static tv_mode_t tv_modes[] = { .hsync_end = 64, .hblank_end = 122, .hblank_start = 842, .htotal = 856, - .progressive = TRUE,.trilevel_sync = FALSE, + .progressive = TRUE, .trilevel_sync = FALSE, .vsync_start_f1 = 12, .vsync_start_f2 = 12, .vsync_len = 12, @@ -572,7 +577,7 @@ const static tv_mode_t tv_modes[] = { .veq_ena = FALSE, .vi_end_f1 = 44, .vi_end_f2 = 44, - .nbr_end = 496, + .nbr_end = 479, .burst_ena = FALSE, @@ -580,7 +585,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "576p", - .clock = 107520, + .clock = 107520, .refresh = 50.0, .oversample = TV_OVERSAMPLE_4X, .component_only = 1, @@ -588,7 +593,7 @@ const static tv_mode_t tv_modes[] = { .hsync_end = 64, .hblank_end = 139, .hblank_start = 859, .htotal = 863, - .progressive = TRUE, .trilevel_sync = FALSE, + .progressive = TRUE, .trilevel_sync = FALSE, .vsync_start_f1 = 10, .vsync_start_f2 = 10, .vsync_len = 10, @@ -604,7 +609,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "720p@60Hz", - .clock = 148800, + .clock = 148800, .refresh = 60.0, .oversample = TV_OVERSAMPLE_2X, .component_only = 1, @@ -612,7 +617,7 @@ const static tv_mode_t tv_modes[] = { .hsync_end = 80, .hblank_end = 300, .hblank_start = 1580, .htotal = 1649, - .progressive = TRUE, .trilevel_sync = TRUE, + .progressive = TRUE, .trilevel_sync = TRUE, .vsync_start_f1 = 10, .vsync_start_f2 = 10, .vsync_len = 10, @@ -628,7 +633,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "720p@59.94Hz", - .clock = 148800, + .clock = 148800, .refresh = 59.94, .oversample = TV_OVERSAMPLE_2X, .component_only = 1, @@ -636,7 +641,7 @@ const static tv_mode_t tv_modes[] = { .hsync_end = 80, .hblank_end = 300, .hblank_start = 1580, .htotal = 1651, - .progressive = TRUE, .trilevel_sync = TRUE, + .progressive = TRUE, .trilevel_sync = TRUE, .vsync_start_f1 = 10, .vsync_start_f2 = 10, .vsync_len = 10, @@ -652,7 +657,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "720p@50Hz", - .clock = 148800, + .clock = 148800, .refresh = 50.0, .oversample = TV_OVERSAMPLE_2X, .component_only = 1, @@ -660,7 +665,7 @@ const static tv_mode_t tv_modes[] = { .hsync_end = 80, .hblank_end = 300, .hblank_start = 1580, .htotal = 1979, - .progressive = TRUE, .trilevel_sync = TRUE, + .progressive = TRUE, .trilevel_sync = TRUE, .vsync_start_f1 = 10, .vsync_start_f2 = 10, .vsync_len = 10, @@ -677,7 +682,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "1080i@50Hz", - .clock = 148800, + .clock = 148800, .refresh = 25.0, .oversample = TV_OVERSAMPLE_2X, .component_only = 1, @@ -685,14 +690,13 @@ const static tv_mode_t tv_modes[] = { .hsync_end = 88, .hblank_end = 235, .hblank_start = 2155, .htotal = 2639, - .progressive = FALSE, .trilevel_sync = TRUE, + .progressive = FALSE, .trilevel_sync = TRUE, - .vsync_start_f1 = 4, .vsync_start_f2 = 5, + .vsync_start_f1 = 4, .vsync_start_f2 = 5, .vsync_len = 10, - .veq_ena = TRUE, .veq_start_f1 = 4, - .veq_start_f2 = 4, .veq_len = 10, - + .veq_ena = TRUE, .veq_start_f1 = 4, + .veq_start_f2 = 4, .veq_len = 10, .vi_end_f1 = 21, .vi_end_f2 = 22, .nbr_end = 539, @@ -703,7 +707,7 @@ const static tv_mode_t tv_modes[] = { }, { .name = "1080i@60Hz", - .clock = 148800, + .clock = 148800, .refresh = 30.0, .oversample = TV_OVERSAMPLE_2X, .component_only = 1, @@ -711,15 +715,14 @@ const static tv_mode_t tv_modes[] = { .hsync_end = 88, .hblank_end = 235, .hblank_start = 2155, .htotal = 2199, - .progressive = FALSE, .trilevel_sync = TRUE, + .progressive = FALSE, .trilevel_sync = TRUE, - .vsync_start_f1 = 4, .vsync_start_f2 = 5, + .vsync_start_f1 = 4, .vsync_start_f2 = 5, .vsync_len = 10, - .veq_ena = TRUE, .veq_start_f1 = 4, + .veq_ena = TRUE, .veq_start_f1 = 4, .veq_start_f2 = 4, .veq_len = 10, - .vi_end_f1 = 21, .vi_end_f2 = 22, .nbr_end = 539, @@ -729,24 +732,24 @@ const static tv_mode_t tv_modes[] = { }, { .name = "1080i@59.94Hz", - .clock = 148800, + .clock = 148800, .refresh = 29.97, .oversample = TV_OVERSAMPLE_2X, .component_only = 1, .hsync_end = 88, .hblank_end = 235, - .hblank_start = 2155, .htotal = 2200, + .hblank_start = 2155, .htotal = 2201, - .progressive = FALSE, .trilevel_sync = TRUE, + .progressive = FALSE, .trilevel_sync = TRUE, - .vsync_start_f1 = 4, .vsync_start_f2 = 5, + .vsync_start_f1 = 4, .vsync_start_f2 = 5, .vsync_len = 10, .veq_ena = TRUE, .veq_start_f1 = 4, - .veq_start_f2 = 4, .veq_len = 10, + .veq_start_f2 = 4, .veq_len = 10, - .vi_end_f1 = 21, .vi_end_f2 = 22, + .vi_end_f1 = 21, .vi_end_f2 = 22, .nbr_end = 539, .burst_ena = FALSE, @@ -758,7 +761,7 @@ const static tv_mode_t tv_modes[] = { #define NUM_TV_MODES sizeof(tv_modes) / sizeof (tv_modes[0]) static const video_levels_t component_level = { - .blank = 279, .black = 279 + .blank = 279, .black = 279, .burst = 0, }; static const color_conversion_t sdtv_component_color = { @@ -929,8 +932,8 @@ static const tv_mode_t * i830_tv_mode_lookup (char *tv_format) { int i; - - for (i = 0; i < sizeof(tv_modes) / sizeof (tv_modes[0]); i++) + + for (i = 0; i < sizeof(tv_modes) / sizeof (tv_modes[0]); i++) { const tv_mode_t *tv_mode = &tv_modes[i]; @@ -953,7 +956,7 @@ static int i830_tv_mode_valid(xf86OutputPtr output, DisplayModePtr mode) { const tv_mode_t *tv_mode = i830_tv_mode_find (output); - + if (tv_mode && fabs (tv_mode->refresh - xf86ModeVRefresh (mode)) < 1.0) return MODE_OK; return MODE_CLOCK_RANGE; @@ -971,8 +974,8 @@ i830_tv_mode_fixup(xf86OutputPtr output, DisplayModePtr mode, if (!tv_mode) return FALSE; - - for (i = 0; i < xf86_config->num_output; i++) + + for (i = 0; i < xf86_config->num_output; i++) { xf86OutputPtr other_output = xf86_config->output[i]; @@ -1021,6 +1024,96 @@ i830_float_to_luma (float f) return ret; } +static uint8_t +float_to_float_2_6(float fin) +{ + uint8_t exp; + uint8_t mant; + float f = fin; + uint32_t tmp; + + if (f < 0) f = -f; + + tmp = f; + for (exp = 0; exp <= 3 && tmp > 0; exp++) + tmp /= 2; + + mant = (f * (1 << 6) + 0.5); + mant >>= exp; + if (mant > (1 << 6)) + mant = (1 << 6) - 1; + + return (exp << 6) | mant; +} + +static uint8_t +float_to_fix_2_6(float f) +{ + uint8_t ret; + + ret = f * (1 << 6); + return ret; +} + +static void +i830_tv_update_brightness(I830Ptr pI830, uint8_t brightness) +{ + /* brightness in 2's comp value */ + uint32_t val = INREG(TV_CLR_KNOBS) & ~TV_BRIGHTNESS_MASK; + int8_t bri = brightness - 128; /* remove bias */ + + val |= (bri << TV_BRIGHTNESS_SHIFT) & TV_BRIGHTNESS_MASK; + OUTREG(TV_CLR_KNOBS, val); +} + +static void +i830_tv_update_contrast(I830Ptr pI830, uint8_t contrast) +{ + uint32_t val = INREG(TV_CLR_KNOBS) & ~TV_CONTRAST_MASK;; + float con; + uint8_t c; + + if (IS_I965G(pI830)) { + /* 2.6 fixed point */ + con = 3.0 * ((float) contrast / 255); + c = float_to_fix_2_6(con); + } else { + /* 2.6 floating point */ + con = 2.65625 * ((float) contrast / 255); + c = float_to_float_2_6(con); + } + val |= (c << TV_CONTRAST_SHIFT) & TV_CONTRAST_MASK; + OUTREG(TV_CLR_KNOBS, val); +} + +static void +i830_tv_update_saturation(I830Ptr pI830, uint8_t saturation) +{ + uint32_t val = INREG(TV_CLR_KNOBS) & ~TV_SATURATION_MASK; + float sat; + uint8_t s; + + /* same as contrast */ + if (IS_I965G(pI830)) { + sat = 3.0 * ((float) saturation / 255); + s = float_to_fix_2_6(sat); + } else { + sat = 2.65625 * ((float) saturation / 255); + s = float_to_float_2_6(sat); + } + val |= (s << TV_SATURATION_SHIFT) & TV_SATURATION_MASK; + OUTREG(TV_CLR_KNOBS, val); +} + +static void +i830_tv_update_hue(I830Ptr pI830, uint8_t hue) +{ + uint32_t val = INREG(TV_CLR_KNOBS) & ~TV_HUE_MASK; + + val |= (hue << TV_HUE_SHIFT) & TV_HUE_MASK; + OUTREG(TV_CLR_KNOBS, val); +} + static void i830_tv_mode_set(xf86OutputPtr output, DisplayModePtr mode, DisplayModePtr adjusted_mode) @@ -1040,11 +1133,12 @@ i830_tv_mode_set(xf86OutputPtr output, DisplayModePtr mode, const video_levels_t *video_levels; const color_conversion_t *color_conversion; Bool burst_ena; - + if (!tv_mode) return; /* can't happen (mode_prepare prevents this) */ - - tv_ctl = 0; + + tv_ctl = INREG(TV_CTL); + tv_ctl &= TV_CTL_SAVE; switch (dev_priv->type) { default: @@ -1181,7 +1275,6 @@ i830_tv_mode_set(xf86OutputPtr output, DisplayModePtr mode, (i830_float_to_csc(color_conversion->bv) << 16) | (i830_float_to_luma(color_conversion->av))); - OUTREG(TV_CLR_KNOBS, 0x00606000); OUTREG(TV_CLR_LEVEL, ((video_levels->black << TV_BLACK_LEVEL_SHIFT) | (video_levels->blank << TV_BLANK_LEVEL_SHIFT))); { @@ -1207,7 +1300,7 @@ i830_tv_mode_set(xf86OutputPtr output, DisplayModePtr mode, i830WaitForVblank(pScrn); /* Filter ctl must be set before TV_WIN_SIZE */ - OUTREG(TV_FILTER_CTL_1, TV_AUTO_SCALE); + OUTREG(TV_FILTER_CTL_1, TV_AUTO_SCALE); xsize = tv_mode->hblank_start - tv_mode->hblank_end; if (tv_mode->progressive) ysize = tv_mode->nbr_end + 1; @@ -1216,9 +1309,9 @@ i830_tv_mode_set(xf86OutputPtr output, DisplayModePtr mode, xpos += dev_priv->margin[TV_MARGIN_LEFT]; ypos += dev_priv->margin[TV_MARGIN_TOP]; - xsize -= (dev_priv->margin[TV_MARGIN_LEFT] + + xsize -= (dev_priv->margin[TV_MARGIN_LEFT] + dev_priv->margin[TV_MARGIN_RIGHT]); - ysize -= (dev_priv->margin[TV_MARGIN_TOP] + + ysize -= (dev_priv->margin[TV_MARGIN_TOP] + dev_priv->margin[TV_MARGIN_BOTTOM]); OUTREG(TV_WIN_POS, (xpos<<16)|ypos); OUTREG(TV_WIN_SIZE, (xsize<<16)|ysize); @@ -1227,7 +1320,7 @@ i830_tv_mode_set(xf86OutputPtr output, DisplayModePtr mode, OUTREG(dspcntr_reg, dspcntr); /* Flush the plane changes */ OUTREG(dspbase_reg, INREG(dspbase_reg)); - } + } j = 0; for (i = 0; i < 60; i++) @@ -1365,6 +1458,10 @@ i830_tv_detect(xf86OutputPtr output) int dpms_mode; int type = dev_priv->type; + /* If TV connector type set by user, always return connected */ + if (dev_priv->force_type) + return XF86OutputStatusConnected; + mode = reported_modes[0]; xf86SetModeCrtc (&mode, INTERLACE_HALVE_V); crtc = i830GetLoadDetectPipe (output, &mode, &dpms_mode); @@ -1381,7 +1478,7 @@ i830_tv_detect(xf86OutputPtr output) i830_tv_format_configure_property (output); #endif } - + switch (type) { case TV_TYPE_NONE: return XF86OutputStatusDisconnected; @@ -1394,15 +1491,15 @@ i830_tv_detect(xf86OutputPtr output) static struct input_res { char *name; - int w, h; -} input_res_table[] = + int w, h; +} input_res_table[] = { {"640x480", 640, 480}, {"800x600", 800, 600}, - {"1024x768", 1024, 768}, - {"1280x1024", 1280, 1024}, {"848x480", 848, 480}, + {"1024x768", 1024, 768}, {"1280x720", 1280, 720}, + {"1280x1024", 1280, 1024}, {"1920x1080", 1920, 1080}, }; @@ -1425,16 +1522,16 @@ i830_tv_get_modes(xf86OutputPtr output) struct input_res *input = &input_res_table[j]; unsigned int hactive_s = input->w; unsigned int vactive_s = input->h; - + if (tv_mode->max_srcw && input->w > tv_mode->max_srcw) continue; - if (input->w > 1024 && (!tv_mode->progressive + if (input->w > 1024 && (!tv_mode->progressive && !tv_mode->component_only)) continue; mode_ptr = xnfcalloc(1, sizeof(DisplayModeRec)); - mode_ptr->name = xnfalloc(strlen(input->name) + 1); + mode_ptr->name = xnfalloc(strlen(input->name) + 1); strcpy (mode_ptr->name, input->name); mode_ptr->HDisplay = hactive_s; @@ -1451,17 +1548,17 @@ i830_tv_get_modes(xf86OutputPtr output) mode_ptr->VSyncEnd = mode_ptr->VSyncStart + 1; mode_ptr->VTotal = vactive_s + 33; - mode_ptr->Clock = (int) (tv_mode->refresh * - mode_ptr->VTotal * + mode_ptr->Clock = (int) (tv_mode->refresh * + mode_ptr->VTotal * mode_ptr->HTotal / 1000.0); - + mode_ptr->type = M_T_DRIVER; mode_ptr->next = ret; mode_ptr->prev = NULL; if (ret != NULL) ret->prev = mode_ptr; ret = mode_ptr; - } + } return ret; } @@ -1482,6 +1579,26 @@ static char *margin_names[4] = { "LEFT", "TOP", "RIGHT", "BOTTOM" }; +/** + * contrast and saturation has different format on 915/945 with 965. + * On 915/945, it's 2.6 floating point number. + * On 965, it's 2.6 fixed point number. + */ +#define TV_BRIGHTNESS_NAME "BRIGHTNESS" +#define TV_BRIGHTNESS_DEFAULT 128 /* bias */ +static Atom brightness_atom; +#define TV_CONTRAST_NAME "CONTRAST" +#define TV_CONTRAST_DEFAULT 0x40 +#define TV_CONTRAST_DEFAULT_945G 0x60 +static Atom contrast_atom; +#define TV_SATURATION_NAME "SATURATION" +#define TV_SATURATION_DEFAULT 0x40 +#define TV_SATURATION_DEFAULT_945G 0x60 +static Atom saturation_atom; +#define TV_HUE_NAME "HUE" +#define TV_HUE_DEFAULT 0 +static Atom hue_atom; + static Bool i830_tv_format_set_property (xf86OutputPtr output) { @@ -1499,7 +1616,6 @@ i830_tv_format_set_property (xf86OutputPtr output) return err == Success; } - /** * Configure the TV_FORMAT property to list only supported formats * @@ -1515,19 +1631,75 @@ i830_tv_format_configure_property (xf86OutputPtr output) Atom current_atoms[NUM_TV_MODES]; int num_atoms = 0; int i; - + if (!output->randr_output) return Success; for (i = 0; i < NUM_TV_MODES; i++) if (!tv_modes[i].component_only || dev_priv->type == TV_TYPE_COMPONENT) current_atoms[num_atoms++] = tv_format_name_atoms[i]; - + return RRConfigureOutputProperty(output->randr_output, tv_format_atom, - TRUE, FALSE, FALSE, + TRUE, FALSE, FALSE, num_atoms, (INT32 *) current_atoms); } +static void +i830_tv_color_set_property(xf86OutputPtr output, Atom property, + uint8_t val) +{ + ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); + I830OutputPrivatePtr intel_output = output->driver_private; + struct i830_tv_priv *dev_priv = intel_output->dev_priv; + + if (property == brightness_atom) { + dev_priv->brightness = val; + i830_tv_update_brightness(pI830, val); + } else if (property == contrast_atom) { + dev_priv->contrast = val; + i830_tv_update_contrast(pI830, val); + } else if (property == saturation_atom) { + dev_priv->saturation = val; + i830_tv_update_saturation(pI830, val); + } else if (property == hue_atom) { + dev_priv->hue = val; + i830_tv_update_hue(pI830, val); + } +} + +static void +i830_tv_color_create_property(xf86OutputPtr output, Atom *property, + char *name, int name_len, uint8_t val) +{ + ScrnInfoPtr pScrn = output->scrn; + INT32 range[2]; + int err = 0; + + *property = MakeAtom(name, name_len - 1, TRUE); + range[0] = 0; + range[1] = 255; + err = RRConfigureOutputProperty(output->randr_output, *property, + FALSE, TRUE, FALSE, 2, range); + if (err != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "RRConfigureOutputProperty error, %d\n", err); + goto out; + } + /* Set the current value */ + i830_tv_color_set_property(output, *property, val); + + err = RRChangeOutputProperty(output->randr_output, *property, + XA_INTEGER, 32, PropModeReplace, 1, &val, + FALSE, FALSE); + if (err != 0) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "RRChangeOutputProperty error, %d\n", err); + } +out: + return; +} + #endif /* RANDR_12_INTERFACE */ static void @@ -1535,10 +1707,10 @@ i830_tv_create_resources(xf86OutputPtr output) { #ifdef RANDR_12_INTERFACE ScrnInfoPtr pScrn = output->scrn; + I830Ptr pI830 = I830PTR(pScrn); I830OutputPrivatePtr intel_output = output->driver_private; struct i830_tv_priv *dev_priv = intel_output->dev_priv; - int err; - int i; + int err, i; /* Set up the tv_format property, which takes effect on mode set * and accepts strings that match exactly @@ -1573,7 +1745,7 @@ i830_tv_create_resources(xf86OutputPtr output) range[1] = 100; err = RRConfigureOutputProperty(output->randr_output, margin_atoms[i], TRUE, TRUE, FALSE, 2, range); - + if (err != 0) xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "RRConfigureOutputProperty error, %d\n", err); @@ -1586,6 +1758,23 @@ i830_tv_create_resources(xf86OutputPtr output) xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "RRChangeOutputProperty error, %d\n", err); } + + i830_tv_color_create_property(output, &brightness_atom, + TV_BRIGHTNESS_NAME, + sizeof(TV_BRIGHTNESS_NAME), + TV_BRIGHTNESS_DEFAULT); + i830_tv_color_create_property(output, &contrast_atom, + TV_CONTRAST_NAME, + sizeof(TV_CONTRAST_NAME), + IS_I965G(pI830) ? TV_CONTRAST_DEFAULT : + TV_CONTRAST_DEFAULT_945G); + i830_tv_color_create_property(output, &saturation_atom, + TV_SATURATION_NAME, + sizeof(TV_SATURATION_NAME), + IS_I965G(pI830) ? TV_SATURATION_DEFAULT : + TV_SATURATION_DEFAULT_945G); + i830_tv_color_create_property(output, &hue_atom, TV_HUE_NAME, + sizeof(TV_HUE_NAME), TV_HUE_DEFAULT); #endif /* RANDR_12_INTERFACE */ } @@ -1595,21 +1784,26 @@ i830_tv_set_property(xf86OutputPtr output, Atom property, RRPropertyValuePtr value) { int i; - - if (property == tv_format_atom) + + if (property == tv_format_atom) { I830OutputPrivatePtr intel_output = output->driver_private; struct i830_tv_priv *dev_priv = intel_output->dev_priv; + I830Ptr pI830 = I830PTR(output->scrn); Atom atom; - char *name; + const char *name; char *val; + RRCrtcPtr randr_crtc; + xRRModeInfo modeinfo; + RRModePtr mode; + DisplayModePtr crtc_mode; if (value->type != XA_ATOM || value->format != 32 || value->size != 1) return FALSE; memcpy (&atom, value->data, 4); name = NameForAtom (atom); - + val = xalloc (strlen (name) + 1); if (!val) return FALSE; @@ -1621,6 +1815,51 @@ i830_tv_set_property(xf86OutputPtr output, Atom property, } xfree (dev_priv->tv_format); dev_priv->tv_format = val; + + if (pI830->starting) + return TRUE; + + /* TV format change will generate new modelines, try + to probe them and update outputs. */ + xf86ProbeOutputModes(output->scrn, 0, 0); + /* Mirror output modes to scrn mode list */ + xf86SetScrnInfoModes (output->scrn); + + for (crtc_mode = output->probed_modes; crtc_mode; + crtc_mode = crtc_mode->next) + { + if (output->crtc->mode.HDisplay == crtc_mode->HDisplay && + output->crtc->mode.VDisplay == crtc_mode->VDisplay) + break; + } + if (!crtc_mode) + crtc_mode = output->probed_modes; + + xf86CrtcSetMode(output->crtc, crtc_mode, output->crtc->rotation, + output->crtc->x, output->crtc->y); + + xf86RandR12TellChanged(output->scrn->pScreen); + + modeinfo.width = crtc_mode->HDisplay; + modeinfo.height = crtc_mode->VDisplay; + modeinfo.dotClock = crtc_mode->Clock * 1000; + modeinfo.hSyncStart = crtc_mode->HSyncStart; + modeinfo.hSyncEnd = crtc_mode->HSyncEnd; + modeinfo.hTotal = crtc_mode->HTotal; + modeinfo.hSkew = crtc_mode->HSkew; + modeinfo.vSyncStart = crtc_mode->VSyncStart; + modeinfo.vSyncEnd = crtc_mode->VSyncEnd; + modeinfo.vTotal = crtc_mode->VTotal; + modeinfo.nameLength = strlen(crtc_mode->name); + modeinfo.modeFlags = crtc_mode->Flags; + + mode = RRModeGet(&modeinfo, crtc_mode->name); + randr_crtc = output->crtc->randr_crtc; + if (mode != randr_crtc->mode) { + if (randr_crtc->mode) + RRModeDestroy(randr_crtc->mode); + randr_crtc->mode = mode; + } return TRUE; } for (i = 0; i < 4; i++) @@ -1640,6 +1879,18 @@ i830_tv_set_property(xf86OutputPtr output, Atom property, return TRUE; } } + if (property == brightness_atom || property == contrast_atom || + property == saturation_atom || property == hue_atom) { + uint8_t val; + + /* Make sure value is sane */ + if (value->type != XA_INTEGER || value->format != 32 || + value->size != 1) + return FALSE; + + memcpy (&val, value->data, 1); + i830_tv_color_set_property(output, property, val); + } return TRUE; } @@ -1652,7 +1903,7 @@ i830_tv_get_crtc(xf86OutputPtr output) ScrnInfoPtr pScrn = output->scrn; I830Ptr pI830 = I830PTR(pScrn); int pipe = !!(INREG(TV_CTL) & TV_ENC_PIPEB_SELECT); - + return i830_pipe_to_crtc(pScrn, pipe); } #endif @@ -1686,6 +1937,9 @@ i830_tv_init(ScrnInfoPtr pScrn) I830OutputPrivatePtr intel_output; struct i830_tv_priv *dev_priv; uint32_t tv_dac_on, tv_dac_off, save_tv_dac; + XF86OptionPtr mon_option_lst = NULL; + char *tv_format = NULL; + char *tv_type = NULL; if (pI830->quirk_flag & QUIRK_IGNORE_TV) return; @@ -1712,7 +1966,7 @@ i830_tv_init(ScrnInfoPtr pScrn) * bit, (either as a 0 or a 1), assume it doesn't really * exist */ - if ((tv_dac_on & TVDAC_STATE_CHG_EN) == 0 || + if ((tv_dac_on & TVDAC_STATE_CHG_EN) == 0 || (tv_dac_off & TVDAC_STATE_CHG_EN) != 0) return; @@ -1739,24 +1993,46 @@ i830_tv_init(ScrnInfoPtr pScrn) dev_priv->type = TV_TYPE_UNKNOWN; dev_priv->tv_format = NULL; - - /* BIOS margin values */ - dev_priv->margin[TV_MARGIN_LEFT] = 54; - dev_priv->margin[TV_MARGIN_TOP] = 36; - dev_priv->margin[TV_MARGIN_RIGHT] = 46; - dev_priv->margin[TV_MARGIN_BOTTOM] = 37; - + if (output->conf_monitor) - { - char *tv_format; - - tv_format = xf86findOptionValue (output->conf_monitor->mon_option_lst, "TV Format"); - if (tv_format) - dev_priv->tv_format = xstrdup (tv_format); - } - if (!dev_priv->tv_format) + mon_option_lst = output->conf_monitor->mon_option_lst; + + /* BIOS margin values */ + dev_priv->margin[TV_MARGIN_LEFT] = xf86SetIntOption (mon_option_lst, + "Left", 54); + dev_priv->margin[TV_MARGIN_TOP] = xf86SetIntOption (mon_option_lst, + "Top", 36); + dev_priv->margin[TV_MARGIN_RIGHT] = xf86SetIntOption (mon_option_lst, + "Right", 46); + dev_priv->margin[TV_MARGIN_BOTTOM] = xf86SetIntOption (mon_option_lst, + "Bottom", 37); + + tv_format = xf86findOptionValue (mon_option_lst, "TV_Format"); + if (tv_format) + dev_priv->tv_format = xstrdup (tv_format); + else dev_priv->tv_format = xstrdup (tv_modes[0].name); - + + tv_type = xf86findOptionValue (mon_option_lst, "TV_Connector"); + if (tv_type) { + dev_priv->force_type = TRUE; + if (strcasecmp(tv_type, "S-Video") == 0) + dev_priv->type = TV_TYPE_SVIDEO; + else if (strcasecmp(tv_type, "Composite") == 0) + dev_priv->type = TV_TYPE_COMPOSITE; + else if (strcasecmp(tv_type, "Component") == 0) + dev_priv->type = TV_TYPE_COMPONENT; + else { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Unknown TV Connector type %s\n", tv_type); + dev_priv->force_type = FALSE; + } + } + + if (dev_priv->force_type) + xf86DrvMsg(pScrn->scrnIndex, X_INFO, + "Force TV Connector type as %s\n", tv_type); + output->driver_private = intel_output; output->interlaceAllowed = FALSE; output->doubleScanAllowed = FALSE; diff --git a/driver/xf86-video-intel/src/i830_video.c b/driver/xf86-video-intel/src/i830_video.c index 486f6708e..a62d7a13b 100644 --- a/driver/xf86-video-intel/src/i830_video.c +++ b/driver/xf86-video-intel/src/i830_video.c @@ -81,10 +81,6 @@ #include "i915_hwmc.h" #endif -#ifndef USE_USLEEP_FOR_VIDEO -#define USE_USLEEP_FOR_VIDEO 0 -#endif - #define OFF_DELAY 250 /* milliseconds */ #define FREE_DELAY 15000 @@ -117,6 +113,7 @@ static int I830QueryImageAttributesTextured(ScrnInfoPtr, int, unsigned short *, static Atom xvBrightness, xvContrast, xvSaturation, xvColorKey, xvPipe, xvDoubleBuffer; static Atom xvGamma0, xvGamma1, xvGamma2, xvGamma3, xvGamma4, xvGamma5; +static Atom xvSyncToVblank; /* Limits for the overlay/textured video source sizes. The documented hardware * limits are 2048x2048 or better for overlay and both of our textured video @@ -247,10 +244,11 @@ static XF86AttributeRec Attributes[NUM_ATTRIBUTES] = { {XvSettable | XvGettable, 0, 1, "XV_DOUBLE_BUFFER"} }; -#define NUM_TEXTURED_ATTRIBUTES 2 -static XF86AttributeRec TexturedAttributes[NUM_ATTRIBUTES] = { +#define NUM_TEXTURED_ATTRIBUTES 3 +static XF86AttributeRec TexturedAttributes[NUM_TEXTURED_ATTRIBUTES] = { {XvSettable | XvGettable, -128, 127, "XV_BRIGHTNESS"}, {XvSettable | XvGettable, 0, 255, "XV_CONTRAST"}, + {XvSettable | XvGettable, -1, 1, "XV_SYNC_TO_VBLANK"}, }; #define GAMMA_ATTRIBUTES 6 @@ -446,7 +444,7 @@ i830_overlay_on(ScrnInfoPtr pScrn) I830PortPrivPtr pPriv = pI830->adaptor->pPortPrivates[0].ptr; Bool deactivate = FALSE; - if (*pI830->overlayOn) + if (pI830->overlayOn) return; /* @@ -480,7 +478,7 @@ i830_overlay_on(ScrnInfoPtr pScrn) i830_pipe_a_require_deactivate (pScrn); OVERLAY_DEBUG("overlay_on\n"); - *pI830->overlayOn = TRUE; + pI830->overlayOn = TRUE; overlay->OCMD |= OVERLAY_ENABLE; } @@ -492,7 +490,7 @@ i830_overlay_continue(ScrnInfoPtr pScrn, Bool update_filter) uint32_t flip_addr; I830OverlayRegPtr overlay = I830OVERLAYREG(pI830); - if (!*pI830->overlayOn) + if (!pI830->overlayOn) return; if (OVERLAY_NOPHYSICAL(pI830)) @@ -518,7 +516,7 @@ i830_overlay_off(ScrnInfoPtr pScrn) I830Ptr pI830 = I830PTR(pScrn); I830OverlayRegPtr overlay = I830OVERLAYREG(pI830); - if (!*pI830->overlayOn) + if (!pI830->overlayOn) return; /* @@ -556,7 +554,7 @@ i830_overlay_off(ScrnInfoPtr pScrn) ADVANCE_BATCH(); i830WaitSync(pScrn); } - *pI830->overlayOn = FALSE; + pI830->overlayOn = FALSE; OVERLAY_DEBUG("overlay_off\n"); } @@ -611,7 +609,6 @@ I830InitVideo(ScreenPtr pScreen) { texturedAdaptor = I830SetupImageVideoTextured(pScreen); if (texturedAdaptor != NULL) { - adaptors[num_adaptors++] = texturedAdaptor; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Set up textured video\n"); } else { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -621,11 +618,10 @@ I830InitVideo(ScreenPtr pScreen) /* Set up overlay video if we can do it at this depth. */ if (!OVERLAY_NOEXIST(pI830) && pScrn->bitsPerPixel != 8 && - pI830->overlay_regs != NULL) + !pI830->use_drm_mode && pI830->overlay_regs != NULL) { overlayAdaptor = I830SetupImageVideoOverlay(pScreen); if (overlayAdaptor != NULL) { - adaptors[num_adaptors++] = overlayAdaptor; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Set up overlay video\n"); } else { xf86DrvMsg(pScrn->scrnIndex, X_ERROR, @@ -633,6 +629,16 @@ I830InitVideo(ScreenPtr pScreen) } I830InitOffscreenImages(pScreen); } + + if (overlayAdaptor && pI830->XvPreferOverlay) + adaptors[num_adaptors++] = overlayAdaptor; + + if (texturedAdaptor) + adaptors[num_adaptors++] = texturedAdaptor; + + if (overlayAdaptor && !pI830->XvPreferOverlay) + adaptors[num_adaptors++] = overlayAdaptor; + #ifdef INTEL_XVMC if (intel_xvmc_probe(pScrn)) { if (texturedAdaptor) @@ -640,8 +646,13 @@ I830InitVideo(ScreenPtr pScreen) } #endif - if (num_adaptors) + if (num_adaptors) { xf86XVScreenInit(pScreen, adaptors, num_adaptors); + } else { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, + "Disabling Xv because no adaptors could be initialized.\n"); + pI830->XvEnabled = FALSE; + } #ifdef INTEL_XVMC if (xvmc_status) @@ -1008,6 +1019,7 @@ I830SetupImageVideoTextured(ScreenPtr pScreen) pPriv->doubleBuffer = 0; pPriv->rotation = RR_Rotate_0; + pPriv->SyncToVblank = 1; /* gotta uninit this someplace, XXX: shouldn't be necessary for textured */ REGION_NULL(pScreen, &pPriv->clip); @@ -1015,42 +1027,15 @@ I830SetupImageVideoTextured(ScreenPtr pScreen) adapt->pPortPrivates[i].ptr = (pointer) (pPriv); } - return adapt; -} + xvSyncToVblank = MAKE_ATOM("XV_SYNC_TO_VBLANK"); -static Bool -RegionsEqual(RegionPtr A, RegionPtr B) -{ - int *dataA, *dataB; - int num; - - num = REGION_NUM_RECTS(A); - if (num != REGION_NUM_RECTS(B)) - return FALSE; - - if ((A->extents.x1 != B->extents.x1) || - (A->extents.x2 != B->extents.x2) || - (A->extents.y1 != B->extents.y1) || (A->extents.y2 != B->extents.y2)) - return FALSE; - - dataA = (int *)REGION_RECTS(A); - dataB = (int *)REGION_RECTS(B); - - while (num--) { - if ((dataA[0] != dataB[0]) || (dataA[1] != dataB[1])) - return FALSE; - dataA += 2; - dataB += 2; - } - - return TRUE; + return adapt; } static void I830StopVideo(ScrnInfoPtr pScrn, pointer data, Bool shutdown) { I830PortPrivPtr pPriv = (I830PortPrivPtr) data; - I830Ptr pI830 = I830PTR(pScrn); if (pPriv->textured) return; @@ -1062,15 +1047,15 @@ I830StopVideo(ScrnInfoPtr pScrn, pointer data, Bool shutdown) if (shutdown) { if (pPriv->videoStatus & CLIENT_VIDEO_ON) { i830_overlay_off(pScrn); - if (pI830->entityPrivate) - pI830->entityPrivate->XvInUse = -1; } - /* Sync before freeing the buffer, because the pages will be unbound. - */ - I830Sync(pScrn); - i830_free_memory(pScrn, pPriv->buf); - pPriv->buf = NULL; - pPriv->videoStatus = 0; + + if (pPriv->buf) { + if (!pPriv->textured) + drm_intel_bo_unpin(pPriv->buf); + drm_intel_bo_unreference(pPriv->buf); + pPriv->buf = NULL; + pPriv->videoStatus = 0; + } } else { if (pPriv->videoStatus & CLIENT_VIDEO_ON) { pPriv->videoStatus |= OFF_TIMER; @@ -1096,6 +1081,12 @@ I830SetPortAttributeTextured(ScrnInfoPtr pScrn, return BadValue; pPriv->contrast = value; return Success; + } else if (attribute == xvSyncToVblank) { + if ((value < -1) || (value > 1)) + return BadValue; + + pPriv->SyncToVblank = value; + return Success; } else { return BadMatch; } @@ -1174,7 +1165,7 @@ I830SetPortAttribute(ScrnInfoPtr pScrn, if ((value < 0) || (value > 1)) return BadValue; /* Do not allow buffer change while playing video */ - if(!*pI830->overlayOn) + if(!pI830->overlayOn) pPriv->doubleBuffer = value; } else return BadMatch; @@ -1231,7 +1222,9 @@ I830GetPortAttribute(ScrnInfoPtr pScrn, *value = pPriv->colorKey; } else if (attribute == xvDoubleBuffer) { *value = pPriv->doubleBuffer; - } else + } else if (attribute == xvSyncToVblank) { + *value = pPriv->SyncToVblank; + } else return BadMatch; return Success; @@ -1260,7 +1253,7 @@ I830CopyPackedData(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int dstPitch, int top, int left, int h, int w) { I830Ptr pI830 = I830PTR(pScrn); - unsigned char *src, *dst; + unsigned char *src, *dst, *dst_base; int i,j; unsigned char *s; @@ -1272,10 +1265,18 @@ I830CopyPackedData(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, src = buf + (top * srcPitch) + (left << 1); + if (pPriv->textured) { + drm_intel_bo_map(pPriv->buf, TRUE); + dst_base = pPriv->buf->virtual; + } else { + drm_intel_gem_bo_start_gtt_access(pPriv->buf, TRUE); + dst_base = pI830->FbBase; + } + if (pPriv->currentBuf == 0) - dst = pI830->FbBase + pPriv->YBuf0offset; + dst = dst_base + pPriv->YBuf0offset; else - dst = pI830->FbBase + pPriv->YBuf1offset; + dst = dst_base + pPriv->YBuf1offset; switch (pPriv->rotation) { case RR_Rotate_0: @@ -1348,6 +1349,9 @@ I830CopyPackedData(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, } break; } + + if (pPriv->textured) + drm_intel_bo_unmap(pPriv->buf); } static void @@ -1358,7 +1362,7 @@ I830CopyPlanarData(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, { I830Ptr pI830 = I830PTR(pScrn); int i, j = 0; - unsigned char *src1, *src2, *src3, *dst1, *dst2, *dst3; + unsigned char *src1, *src2, *src3, *dst_base, *dst1, *dst2, *dst3; unsigned char *s; int dstPitch2 = dstPitch << 1; @@ -1375,10 +1379,19 @@ I830CopyPlanarData(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, ErrorF("src1 is %p, offset is %ld\n", src1, (unsigned long)src1 - (unsigned long)buf); #endif + + if (pPriv->textured) { + drm_intel_bo_map(pPriv->buf, TRUE); + dst_base = pPriv->buf->virtual; + } else { + drm_intel_gem_bo_start_gtt_access(pPriv->buf, TRUE); + dst_base = pI830->FbBase; + } + if (pPriv->currentBuf == 0) - dst1 = pI830->FbBase + pPriv->YBuf0offset; + dst1 = dst_base + pPriv->YBuf0offset; else - dst1 = pI830->FbBase + pPriv->YBuf1offset; + dst1 = dst_base + pPriv->YBuf1offset; switch (pPriv->rotation) { case RR_Rotate_0: @@ -1428,14 +1441,14 @@ I830CopyPlanarData(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, #endif if (pPriv->currentBuf == 0) { if (id == FOURCC_I420) - dst2 = pI830->FbBase + pPriv->UBuf0offset; + dst2 = dst_base + pPriv->UBuf0offset; else - dst2 = pI830->FbBase + pPriv->VBuf0offset; + dst2 = dst_base + pPriv->VBuf0offset; } else { if (id == FOURCC_I420) - dst2 = pI830->FbBase + pPriv->UBuf1offset; + dst2 = dst_base + pPriv->UBuf1offset; else - dst2 = pI830->FbBase + pPriv->VBuf1offset; + dst2 = dst_base + pPriv->VBuf1offset; } switch (pPriv->rotation) { @@ -1487,14 +1500,14 @@ I830CopyPlanarData(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, #endif if (pPriv->currentBuf == 0) { if (id == FOURCC_I420) - dst3 = pI830->FbBase + pPriv->VBuf0offset; + dst3 = dst_base + pPriv->VBuf0offset; else - dst3 = pI830->FbBase + pPriv->UBuf0offset; + dst3 = dst_base + pPriv->UBuf0offset; } else { if (id == FOURCC_I420) - dst3 = pI830->FbBase + pPriv->VBuf1offset; + dst3 = dst_base + pPriv->VBuf1offset; else - dst3 = pI830->FbBase + pPriv->UBuf1offset; + dst3 = dst_base + pPriv->UBuf1offset; } switch (pPriv->rotation) { @@ -1536,6 +1549,9 @@ I830CopyPlanarData(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, } break; } + + if (pPriv->textured) + drm_intel_bo_unmap(pPriv->buf); } typedef struct { @@ -2104,6 +2120,7 @@ i830_display_video(ScrnInfoPtr pScrn, xf86CrtcPtr crtc, static Bool i830_clip_video_helper (ScrnInfoPtr pScrn, + I830PortPrivPtr pPriv, xf86CrtcPtr *crtc_ret, BoxPtr dst, INT32 *xa, @@ -2124,14 +2141,13 @@ i830_clip_video_helper (ScrnInfoPtr pScrn, */ if (crtc_ret) { - I830Ptr pI830 = I830PTR(pScrn); - I830PortPrivPtr pPriv = pI830->adaptor->pPortPrivates[0].ptr; BoxRec crtc_box; xf86CrtcPtr crtc = i830_covering_crtc (pScrn, dst, pPriv->desired_crtc, &crtc_box); - if (crtc) + /* For textured video, we don't actually want to clip at all. */ + if (crtc && !pPriv->textured) { REGION_INIT (pScreen, &crtc_region_local, &crtc_box, 1); crtc_region = &crtc_region_local; @@ -2215,7 +2231,7 @@ I830PutImage(ScrnInfoPtr pScrn, int top, left, npixels, nlines, size; BoxRec dstBox; int pitchAlignMask; - int alloc_size, extraLinear; + int alloc_size; xf86CrtcPtr crtc; if (pPriv->textured) @@ -2229,29 +2245,17 @@ I830PutImage(ScrnInfoPtr pScrn, drw_w, drw_h, width, height); #endif - if (pI830->entityPrivate) { - if (pI830->entityPrivate->XvInUse != -1 && - pI830->entityPrivate->XvInUse != i830_crtc_pipe (pPriv->current_crtc)) { -#ifdef PANORAMIX - if (!noPanoramiXExtension) { - return Success; /* faked for trying to share it */ - } else -#endif - { - return BadAlloc; - } - } + if (!pPriv->textured) { + /* If dst width and height are less than 1/8th the src size, the + * src/dst scale factor becomes larger than 8 and doesn't fit in + * the scale register. */ + if(src_w >= (drw_w * 8)) + drw_w = src_w/7; - pI830->entityPrivate->XvInUse = i830_crtc_pipe (pPriv->current_crtc);; + if(src_h >= (drw_h * 8)) + drw_h = src_h/7; } - /* Clamp dst width & height to 7x of src (overlay limit) */ - if(drw_w > (src_w * 7)) - drw_w = src_w * 7; - - if(drw_h > (src_h * 7)) - drw_h = src_h * 7; - /* Clip */ x1 = src_x; x2 = src_x + src_w; @@ -2264,7 +2268,8 @@ I830PutImage(ScrnInfoPtr pScrn, dstBox.y2 = drw_y + drw_h; if (!i830_clip_video_helper(pScrn, - pPriv->textured ? NULL : &crtc, + pPriv, + &crtc, &dstBox, &x1, &x2, &y1, &y2, clipBoxes, width, height)) return Success; @@ -2289,6 +2294,8 @@ I830PutImage(ScrnInfoPtr pScrn, break; #ifdef INTEL_XVMC case FOURCC_XVMC: + srcPitch = (width + 0x3) & ~0x3; + srcPitch2 = ((width >> 1) + 0x3) & ~0x3; break; #endif case FOURCC_UYVY: @@ -2356,51 +2363,59 @@ I830PutImage(ScrnInfoPtr pScrn, ErrorF("srcPitch: %d, dstPitch: %d, size: %d\n", srcPitch, dstPitch, size); #endif - if (IS_I965G(pI830)) - extraLinear = BRW_LINEAR_EXTRA; - else - extraLinear = 0; - alloc_size = size; if (pPriv->doubleBuffer) alloc_size *= 2; - alloc_size += extraLinear; - - if (pPriv->buf) { - /* Wait for any previous acceleration to the buffer to have completed. - * When we start using BOs for rendering, we won't have to worry - * because mapping or freeing will take care of it automatically. - */ - I830Sync(pScrn); - } /* Free the current buffer if we're going to have to reallocate */ if (pPriv->buf && pPriv->buf->size < alloc_size) { - i830_free_memory(pScrn, pPriv->buf); + if (!pPriv->textured) + drm_intel_bo_unpin(pPriv->buf); + drm_intel_bo_unreference(pPriv->buf); pPriv->buf = NULL; } - if (pPriv->buf == NULL) { - pPriv->buf = i830_allocate_memory(pScrn, "xv buffer", alloc_size, 16, - 0); +#ifdef INTEL_XVMC + if (id == FOURCC_XVMC && + pPriv->rotation == RR_Rotate_0) { + if (pPriv->buf) { + assert(pPriv->textured); + drm_intel_bo_unreference(pPriv->buf); + pPriv->buf = NULL; + } + } else { +#endif + if (pPriv->buf == NULL) { + pPriv->buf = drm_intel_bo_alloc(pI830->bufmgr, + "xv buffer", alloc_size, 4096); + if (pPriv->buf == NULL) + return BadAlloc; + if (!pPriv->textured && drm_intel_bo_pin(pPriv->buf, 4096) != 0) { + drm_intel_bo_unreference(pPriv->buf); + pPriv->buf = NULL; + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, + "Failed to pin xv buffer\n"); + return BadAlloc; + } + } +#ifdef INTEL_XVMC } - - if (pPriv->buf == NULL) - return BadAlloc; - - pPriv->extra_offset = pPriv->buf->offset + - (pPriv->doubleBuffer ? size * 2 : size); +#endif /* fixup pointers */ #ifdef INTEL_XVMC if (id == FOURCC_XVMC && IS_I915(pI830)) { - pPriv->YBuf0offset = (uint32_t)buf; + pPriv->YBuf0offset = (uint32_t)((uintptr_t)buf); pPriv->VBuf0offset = pPriv->YBuf0offset + (dstPitch2 * height); pPriv->UBuf0offset = pPriv->VBuf0offset + (dstPitch * height / 2); destId = FOURCC_YV12; } else { #endif - pPriv->YBuf0offset = pPriv->buf->offset; + if (pPriv->textured) + pPriv->YBuf0offset = 0; + else + pPriv->YBuf0offset = pPriv->buf->offset; + if (pPriv->rotation & (RR_Rotate_90 | RR_Rotate_270)) { pPriv->UBuf0offset = pPriv->YBuf0offset + (dstPitch * 2 * width); pPriv->VBuf0offset = pPriv->UBuf0offset + (dstPitch * width / 2); @@ -2423,7 +2438,7 @@ I830PutImage(ScrnInfoPtr pScrn, #endif /* Pick the idle buffer */ - if (!pPriv->textured && *pI830->overlayOn && pPriv->doubleBuffer) + if (!pPriv->textured && pI830->overlayOn && pPriv->doubleBuffer) pPriv->currentBuf = !((INREG(DOVSTA) & OC_BUF) >> 20); /* copy data */ @@ -2447,6 +2462,13 @@ I830PutImage(ScrnInfoPtr pScrn, break; #ifdef INTEL_XVMC case FOURCC_XVMC: + if (pPriv->rotation != RR_Rotate_0) { + top &= ~1; + nlines = ((((y2 + 0xffff) >> 16) + 1) & ~1) - top; + I830CopyPlanarData(pScrn, pPriv, buf, srcPitch, srcPitch2, dstPitch, + height, top, left, nlines, npixels, id); + } + break; #endif default: @@ -2460,13 +2482,13 @@ I830PutImage(ScrnInfoPtr pScrn, } #ifdef I830_USE_EXA - if (pPriv->textured && pI830->useEXA) { + if (pPriv->textured && pI830->accel == ACCEL_EXA) { /* Force the pixmap into framebuffer so we can draw to it. */ exaMoveInPixmap(pPixmap); } #endif - if (pPriv->textured && !pI830->useEXA && + if (pPriv->textured && pI830->accel <= ACCEL_XAA && (((char *)pPixmap->devPrivate.ptr < (char *)pI830->FbBase) || ((char *)pPixmap->devPrivate.ptr >= (char *)pI830->FbBase + pI830->FbMapSize))) { @@ -2482,18 +2504,64 @@ I830PutImage(ScrnInfoPtr pScrn, drw_w, drw_h); /* update cliplist */ - if (!RegionsEqual(&pPriv->clip, clipBoxes)) { + if (!REGION_EQUAL(pScrn->pScreen, &pPriv->clip, clipBoxes)) { REGION_COPY(pScrn->pScreen, &pPriv->clip, clipBoxes); i830_fill_colorkey (pScreen, pPriv->colorKey, clipBoxes); } - } else if (IS_I965G(pI830)) { - I965DisplayVideoTextured(pScrn, pPriv, destId, clipBoxes, width, height, - dstPitch, x1, y1, x2, y2, - src_w, src_h, drw_w, drw_h, pPixmap); } else { - I915DisplayVideoTextured(pScrn, pPriv, destId, clipBoxes, width, height, - dstPitch, dstPitch2, x1, y1, x2, y2, - src_w, src_h, drw_w, drw_h, pPixmap); + Bool sync = TRUE; + + if (crtc == NULL) { + sync = FALSE; + } else if (pPriv->SyncToVblank == 0) { + sync = FALSE; + } + + if (sync) { + BoxPtr box; + int y1, y2; + int event, pipe; + I830CrtcPrivatePtr intel_crtc = crtc->driver_private; + + if (intel_crtc->pipe == 0) { + event = MI_WAIT_FOR_PIPEA_SCAN_LINE_WINDOW; + pipe = MI_LOAD_SCAN_LINES_DISPLAY_PIPEA; + } else { + event = MI_WAIT_FOR_PIPEB_SCAN_LINE_WINDOW; + pipe = MI_LOAD_SCAN_LINES_DISPLAY_PIPEB; + } + + box = REGION_EXTENTS(unused, clipBoxes); + y1 = box->y1 - crtc->y; + y2 = box->y2 - crtc->y; + + BEGIN_BATCH(5); + /* The documentation says that the LOAD_SCAN_LINES command + * always comes in pairs. Don't ask me why. */ + OUT_BATCH(MI_LOAD_SCAN_LINES_INCL | pipe); + OUT_BATCH((y1 << 16) | y2); + OUT_BATCH(MI_LOAD_SCAN_LINES_INCL | pipe); + OUT_BATCH((y1 << 16) | y2); + OUT_BATCH(MI_WAIT_FOR_EVENT | event); + ADVANCE_BATCH(); + } + + if (IS_I965G(pI830)) { +#ifdef INTEL_XVMC + if (id == FOURCC_XVMC && pPriv->rotation == RR_Rotate_0) { + pPriv->YBuf0offset = buf - pI830->FbBase; + pPriv->UBuf0offset = pPriv->YBuf0offset + height*width; + pPriv->VBuf0offset = pPriv->UBuf0offset + height*width/4; + } +#endif + I965DisplayVideoTextured(pScrn, pPriv, destId, clipBoxes, width, height, + dstPitch, x1, y1, x2, y2, + src_w, src_h, drw_w, drw_h, pPixmap); + } else { + I915DisplayVideoTextured(pScrn, pPriv, destId, clipBoxes, width, height, + dstPitch, dstPitch2, x1, y1, x2, y2, + src_w, src_h, drw_w, drw_h, pPixmap); + } } if (pPriv->textured) { DamageDamageRegion(pDraw, clipBoxes); @@ -2636,17 +2704,12 @@ I830VideoBlockHandler(int i, pointer blockData, pointer pTimeout, pPriv->videoStatus = FREE_TIMER; pPriv->freeTime = now + FREE_DELAY; - - if (pI830->entityPrivate) - pI830->entityPrivate->XvInUse = -1; } } else { /* FREE_TIMER */ if (pPriv->freeTime < now) { - /* Sync before freeing the buffer, because the pages will be - * unbound. - */ - I830Sync(pScrn); - i830_free_memory(pScrn, pPriv->buf); + if (!pPriv->textured) + drm_intel_bo_unpin(pPriv->buf); + drm_intel_bo_unreference(pPriv->buf); pPriv->buf = NULL; pPriv->videoStatus = 0; } @@ -2659,7 +2722,6 @@ I830VideoBlockHandler(int i, pointer blockData, pointer pTimeout, ***************************************************************************/ typedef struct { - i830_memory *buf; Bool isOn; } OffscreenPrivRec, *OffscreenPrivPtr; @@ -2704,14 +2766,6 @@ I830AllocateSurface(ScrnInfoPtr pScrn, fbpitch = pI830->cpp * pScrn->displayWidth; size = pitch * h; - pPriv->buf = i830_allocate_memory(pScrn, "xv surface buffer", size, 16, 0); - if (pPriv->buf == NULL) { - xfree(surface->pitches); - xfree(surface->offsets); - xfree(pPriv); - return BadAlloc; - } - surface->width = w; surface->height = h; @@ -2720,11 +2774,9 @@ I830AllocateSurface(ScrnInfoPtr pScrn, surface->pScrn = pScrn; surface->id = id; surface->pitches[0] = pitch; - surface->offsets[0] = pPriv->buf->offset; + surface->offsets[0] = 0; surface->devPrivate.ptr = (pointer) pPriv; - memset(pI830->FbBase + surface->offsets[0], 0, size); - return Success; } @@ -2735,15 +2787,10 @@ I830StopSurface(XF86SurfacePtr surface) ScrnInfoPtr pScrn = surface->pScrn; if (pPriv->isOn) { - I830Ptr pI830 = I830PTR(pScrn); - OVERLAY_DEBUG("StopSurface\n"); i830_overlay_off (pScrn); - if (pI830->entityPrivate) - pI830->entityPrivate->XvInUse = -1; - pPriv->isOn = FALSE; } @@ -2753,14 +2800,7 @@ I830StopSurface(XF86SurfacePtr surface) static int I830FreeSurface(XF86SurfacePtr surface) { - ScrnInfoPtr pScrn = surface->pScrn; - OffscreenPrivPtr pPriv = (OffscreenPrivPtr) surface->devPrivate.ptr; - I830StopSurface(surface); - /* Sync before freeing the buffer, because the pages will be unbound. */ - I830Sync(pScrn); - i830_free_memory(surface->pScrn, pPriv->buf); - pPriv->buf = NULL; xfree(surface->pitches); xfree(surface->offsets); xfree(surface->devPrivate.ptr); @@ -2798,22 +2838,6 @@ I830DisplaySurface(XF86SurfacePtr surface, OVERLAY_DEBUG("I830DisplaySurface\n"); - if (pI830->entityPrivate) { - if (pI830->entityPrivate->XvInUse != -1 && - pI830->entityPrivate->XvInUse != i830_crtc_pipe (pI830Priv->current_crtc)) { -#ifdef PANORAMIX - if (!noPanoramiXExtension) { - return Success; /* faked for trying to share it */ - } else -#endif - { - return BadAlloc; - } - } - - pI830->entityPrivate->XvInUse = i830_crtc_pipe (pI830Priv->current_crtc); - } - x1 = src_x; x2 = src_x + src_w; y1 = src_y; @@ -2824,7 +2848,7 @@ I830DisplaySurface(XF86SurfacePtr surface, dstBox.y1 = drw_y; dstBox.y2 = drw_y + drw_h; - if (!i830_clip_video_helper (pScrn, &crtc, &dstBox, + if (!i830_clip_video_helper (pScrn, pI830Priv, &crtc, &dstBox, &x1, &x2, &y1, &y2, clipBoxes, surface->width, surface->height)) return Success; @@ -2834,7 +2858,7 @@ I830DisplaySurface(XF86SurfacePtr surface, pI830Priv->YBuf1offset = pI830Priv->YBuf0offset; /* Pick the idle buffer */ - if (!pI830Priv->textured && *pI830->overlayOn && pI830Priv->doubleBuffer) + if (!pI830Priv->textured && pI830->overlayOn && pI830Priv->doubleBuffer) pI830Priv->currentBuf = !((INREG(DOVSTA) & OC_BUF) >> 20); i830_display_video(pScrn, crtc, surface->id, surface->width, surface->height, diff --git a/driver/xf86-video-intel/src/i830_video.h b/driver/xf86-video-intel/src/i830_video.h index 91f767f9f..03e2ba93d 100644 --- a/driver/xf86-video-intel/src/i830_video.h +++ b/driver/xf86-video-intel/src/i830_video.h @@ -58,24 +58,20 @@ typedef struct { uint32_t videoStatus; Time offTime; Time freeTime; - i830_memory *buf; /** YUV data buffer */ - unsigned int extra_offset; + drm_intel_bo *buf; /** YUV data buffer */ Bool overlayOK; int oneLineMode; int scaleRatio; Bool textured; Rotation rotation; /* should remove I830->rotation later*/ + + int SyncToVblank; /* -1: auto, 0: off, 1: on */ } I830PortPrivRec, *I830PortPrivPtr; #define GET_PORT_PRIVATE(pScrn) \ (I830PortPrivPtr)((I830PTR(pScrn))->adaptor->pPortPrivates[0].ptr) -/* - * Broadwater requires a bit of extra video memory for state information - */ -#define BRW_LINEAR_EXTRA (36*1024) - void I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, RegionPtr dstRegion, short width, short height, int video_pitch, int video_pitch2, @@ -94,3 +90,4 @@ void I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, void I830VideoBlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask); +void i965_free_video(ScrnInfoPtr scrn); diff --git a/driver/xf86-video-intel/src/i830_xaa.c b/driver/xf86-video-intel/src/i830_xaa.c index c9c26b071..1f82840d0 100644 --- a/driver/xf86-video-intel/src/i830_xaa.c +++ b/driver/xf86-video-intel/src/i830_xaa.c @@ -91,7 +91,6 @@ static void I830SubsequentScanlineImageWriteRect(ScrnInfoPtr pScrn, int skipleft); static void I830SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno); #endif -static void I830RestoreAccelState(ScrnInfoPtr pScrn); void i830_xaa_composite(CARD8 op, @@ -160,23 +159,10 @@ I830XAAInit(ScreenPtr pScreen) } - /* On the primary screen */ - if (pI830->init == 0) { - if (pI830->xaa_scratch->size != 0) { - width = ((pScrn->displayWidth + 31) & ~31) / 8; - nr_buffers = pI830->xaa_scratch->size / width; - ptr = pI830->FbBase + pI830->xaa_scratch->offset; - } - } else { - /* On the secondary screen */ - I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1); - if (pI8301->xaa_scratch_2->size != 0) { - width = ((pScrn->displayWidth + 31) & ~31) / 8; - nr_buffers = pI8301->xaa_scratch_2->size / width; - /* We have to use the primary screen's FbBase, as that's where - * we allocated xaa_scratch_2, so we get the correct pointer */ - ptr = pI8301->FbBase + pI8301->xaa_scratch_2->offset; - } + if (pI830->xaa_scratch->size != 0) { + width = ((pScrn->displayWidth + 31) & ~31) / 8; + nr_buffers = pI830->xaa_scratch->size / width; + ptr = pI830->FbBase + pI830->xaa_scratch->offset; } if (nr_buffers) { @@ -223,17 +209,6 @@ I830XAAInit(ScreenPtr pScreen) #endif } - { - Bool shared_accel = FALSE; - - for(i = 0; i < pScrn->numEntities; i++) { - if(xf86IsEntityShared(pScrn->entityList[i])) - shared_accel = TRUE; - } - if(shared_accel == TRUE) - infoPtr->RestoreAccelState = I830RestoreAccelState; - } - /* Set up pI830->bufferOffset */ I830SelectBuffer(pScrn, I830_SELECT_FRONT); @@ -292,12 +267,6 @@ I830CheckTiling(ScrnInfoPtr pScrn) { return TRUE; } - if (pI830->third_buffer != NULL && - pI830->bufferOffset == pI830->third_buffer->offset && - pI830->third_buffer->tiling != TILE_NONE) - { - return TRUE; - } #endif return FALSE; @@ -314,7 +283,7 @@ I830SetupForSolidFill(ScrnInfoPtr pScrn, int color, int rop, color, rop, planemask); if (IS_I965G(pI830) && I830CheckTiling(pScrn)) { - pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 4; + pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 2; } else { pI830->BR[13] = (pScrn->displayWidth * pI830->cpp); } @@ -385,7 +354,7 @@ I830SetupForScreenToScreenCopy(ScrnInfoPtr pScrn, int xdir, int ydir, int rop, xdir, ydir, rop, planemask, transparency_color); if (IS_I965G(pI830) && I830CheckTiling(pScrn)) { - pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 4; + pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 2; } else { pI830->BR[13] = (pScrn->displayWidth * pI830->cpp); } @@ -468,7 +437,7 @@ I830SetupForMono8x8PatternFill(ScrnInfoPtr pScrn, int pattx, int patty, pI830->BR[19] = fg; if (IS_I965G(pI830) && I830CheckTiling(pScrn)) { - pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 4; + pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 2; } else { pI830->BR[13] = (pScrn->displayWidth * pI830->cpp); } @@ -565,7 +534,7 @@ I830SetupForScanlineCPUToScreenColorExpandFill(ScrnInfoPtr pScrn, /* Fill out register values */ if (IS_I965G(pI830) && I830CheckTiling(pScrn)) { - pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 4; + pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 2; } else { pI830->BR[13] = (pScrn->displayWidth * pI830->cpp); } @@ -613,17 +582,8 @@ I830SubsequentColorExpandScanline(ScrnInfoPtr pScrn, int bufno) I830Ptr pI830 = I830PTR(pScrn); unsigned int tiled = I830CheckTiling(pScrn); - if (pI830->init == 0) { - pI830->BR[12] = (pI830->AccelInfoRec->ScanlineColorExpandBuffers[0] - - pI830->FbBase); - } else { - I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1); - - /* We have to use the primary screen's FbBase, as that's where - * we allocated xaa_scratch_2, so we get the correct pointer */ - pI830->BR[12] = (pI830->AccelInfoRec->ScanlineColorExpandBuffers[0] - - pI8301->FbBase); - } + pI830->BR[12] = (pI830->AccelInfoRec->ScanlineColorExpandBuffers[0] - + pI830->FbBase); if (I810_DEBUG & DEBUG_VERBOSE_ACCEL) ErrorF("I830SubsequentColorExpandScanline %d (addr %x)\n", @@ -671,7 +631,7 @@ I830SetupForScanlineImageWrite(ScrnInfoPtr pScrn, int rop, /* Fill out register values */ if (IS_I965G(pI830) && I830CheckTiling(pScrn)) { - pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 4; + pI830->BR[13] = (pScrn->displayWidth * pI830->cpp) >> 2; } else { pI830->BR[13] = (pScrn->displayWidth * pI830->cpp); } @@ -713,17 +673,8 @@ I830SubsequentImageWriteScanline(ScrnInfoPtr pScrn, int bufno) I830Ptr pI830 = I830PTR(pScrn); unsigned int tiled = I830CheckTiling(pScrn); - if (pI830->init == 0) { - pI830->BR[12] = (pI830->AccelInfoRec->ScanlineColorExpandBuffers[0] - - pI830->FbBase); - } else { - I830Ptr pI8301 = I830PTR(pI830->entityPrivate->pScrn_1); - - /* We have to use the primary screen's FbBase, as that's where - * we allocated xaa_scratch_2, so we get the correct pointer */ - pI830->BR[12] = (pI830->AccelInfoRec->ScanlineColorExpandBuffers[0] - - pI8301->FbBase); - } + pI830->BR[12] = (pI830->AccelInfoRec->ScanlineColorExpandBuffers[0] - + pI830->FbBase); if (I810_DEBUG & DEBUG_VERBOSE_ACCEL) ErrorF("I830SubsequentImageWriteScanline %d (addr %x)\n", @@ -876,13 +827,3 @@ fallback: pI830->saved_composite = ps->Composite; ps->Composite = i830_xaa_composite; } - -static void -I830RestoreAccelState(ScrnInfoPtr pScrn) -{ -#if 0 - /* might be needed, but everything is on a ring, so I don't think so */ - I830Sync(pScrn); -#endif -} - diff --git a/driver/xf86-video-intel/src/i915_3d.h b/driver/xf86-video-intel/src/i915_3d.h index 1a0bd45b1..d3330e5be 100644 --- a/driver/xf86-video-intel/src/i915_3d.h +++ b/driver/xf86-video-intel/src/i915_3d.h @@ -446,12 +446,12 @@ do { \ #define FS_END() \ do { \ int _i, _pad = (_cur_shader_commands & 0x1) ? 0 : 1; \ - BEGIN_LP_RING(_cur_shader_commands * 3 + 1 + _pad); \ - OUT_RING(_3DSTATE_PIXEL_SHADER_PROGRAM | \ + BEGIN_BATCH(_cur_shader_commands * 3 + 1 + _pad); \ + OUT_BATCH(_3DSTATE_PIXEL_SHADER_PROGRAM | \ (_cur_shader_commands * 3 - 1)); \ for (_i = 0; _i < _cur_shader_commands * 3; _i++) \ - OUT_RING(_shader_buf[_i]); \ + OUT_BATCH(_shader_buf[_i]); \ if (_pad != 0) \ - OUT_RING(MI_NOOP); \ - ADVANCE_LP_RING(); \ + OUT_BATCH(MI_NOOP); \ + ADVANCE_BATCH(); \ } while (0); diff --git a/driver/xf86-video-intel/src/i915_render.c b/driver/xf86-video-intel/src/i915_render.c index 4a02cf545..268dd8a1d 100644 --- a/driver/xf86-video-intel/src/i915_render.c +++ b/driver/xf86-video-intel/src/i915_render.c @@ -35,23 +35,6 @@ #include "i915_reg.h" #include "i915_3d.h" -#ifdef I830DEBUG -#define DEBUG_I830FALLBACK 1 -#endif - -#ifdef DEBUG_I830FALLBACK -#define I830FALLBACK(s, arg...) \ -do { \ - DPRINTF(PFX, "EXA fallback: " s "\n", ##arg); \ - return FALSE; \ -} while(0) -#else -#define I830FALLBACK(s, arg...) \ -do { \ - return FALSE; \ -} while(0) -#endif - struct formatinfo { int fmt; uint32_t card_fmt; @@ -155,6 +138,8 @@ static uint32_t i915_get_blend_cntl(int op, PicturePtr pMask, static Bool i915_get_dest_format(PicturePtr pDstPicture, uint32_t *dst_format) { + ScrnInfoPtr pScrn = xf86Screens[pDstPicture->pDrawable->pScreen->myNum]; + switch (pDstPicture->format) { case PICT_a8r8g8b8: case PICT_x8r8g8b8: @@ -184,6 +169,7 @@ static Bool i915_get_dest_format(PicturePtr pDstPicture, uint32_t *dst_format) static Bool i915_check_composite_texture(PicturePtr pPict, int unit) { + ScrnInfoPtr pScrn = xf86Screens[pPict->pDrawable->pScreen->myNum]; int w = pPict->pDrawable->width; int h = pPict->pDrawable->height; int i; @@ -201,9 +187,8 @@ static Bool i915_check_composite_texture(PicturePtr pPict, int unit) I830FALLBACK("Unsupported picture format 0x%x\n", (int)pPict->format); - if (pPict->repeat && pPict->repeatType != RepeatNormal) - I830FALLBACK("extended repeat (%d) not supported\n", - pPict->repeatType); + if (pPict->repeatType > RepeatReflect) + I830FALLBACK("Unsupported picture repeat %d\n", pPict->repeatType); if (pPict->filter != PictFilterNearest && pPict->filter != PictFilterBilinear) @@ -216,6 +201,7 @@ Bool i915_check_composite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture, PicturePtr pDstPicture) { + ScrnInfoPtr pScrn = xf86Screens[pDstPicture->pDrawable->pScreen->myNum]; uint32_t tmp1; /* Check for unsupported compositing operations. */ @@ -250,11 +236,10 @@ i915_texture_setup(PicturePtr pPict, PixmapPtr pPix, int unit) { ScrnInfoPtr pScrn = xf86Screens[pPict->pDrawable->pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - uint32_t format, offset, pitch, filter; + uint32_t format, pitch, filter; int w, h, i; - uint32_t wrap_mode = TEXCOORDMODE_CLAMP_BORDER; + uint32_t wrap_mode; - offset = intel_get_pixmap_offset(pPix); pitch = intel_get_pixmap_pitch(pPix); w = pPict->pDrawable->width; h = pPict->pDrawable->height; @@ -271,8 +256,22 @@ i915_texture_setup(PicturePtr pPict, PixmapPtr pPix, int unit) I830FALLBACK("unknown texture format\n"); format = i915_tex_formats[i].card_fmt; - if (pPict->repeat) + switch (pPict->repeatType) { + case RepeatNone: + wrap_mode = TEXCOORDMODE_CLAMP_BORDER; + break; + case RepeatNormal: wrap_mode = TEXCOORDMODE_WRAP; + break; + case RepeatPad: + wrap_mode = TEXCOORDMODE_CLAMP_EDGE; + break; + case RepeatReflect: + wrap_mode = TEXCOORDMODE_MIRROR; + break; + default: + FatalError("Unkown repeat type %d\n", pPict->repeatType); + } switch (pPict->filter) { case PictFilterNearest: @@ -288,7 +287,7 @@ i915_texture_setup(PicturePtr pPict, PixmapPtr pPix, int unit) I830FALLBACK("Bad filter 0x%x\n", pPict->filter); } - pI830->mapstate[unit * 3 + 0] = offset; + pI830->mapstate[unit * 3 + 0] = 0; /* offset filled in at emit time */ pI830->mapstate[unit * 3 + 1] = format | MS3_USE_FENCE_REGS | ((pPix->drawable.height - 1) << MS3_HEIGHT_SHIFT) | @@ -316,40 +315,78 @@ i915_prepare_composite(int op, PicturePtr pSrcPicture, { ScrnInfoPtr pScrn = xf86Screens[pSrcPicture->pDrawable->pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - uint32_t dst_format, dst_offset, dst_pitch; - uint32_t blendctl; - int out_reg = FS_OC; - FS_LOCALS(20); - Bool is_affine_src, is_affine_mask; - Bool is_nearest = FALSE; + drm_intel_bo *bo_table[] = { + NULL, /* batch_bo */ + i830_get_pixmap_bo(pSrc), + pMask ? i830_get_pixmap_bo(pMask) : NULL, + i830_get_pixmap_bo(pDst), + }; i830_exa_check_pitch_3d(pSrc); if (pMask) i830_exa_check_pitch_3d(pMask); i830_exa_check_pitch_3d(pDst); - IntelEmitInvarientState(pScrn); - *pI830->last_3d = LAST_3D_RENDER; + if (!i915_get_dest_format(pDstPicture, + &pI830->i915_render_state.dst_format)) + return FALSE; - if (!i915_get_dest_format(pDstPicture, &dst_format)) + if (!i830_get_aperture_space(pScrn, bo_table, ARRAY_SIZE(bo_table))) return FALSE; - dst_offset = intel_get_pixmap_offset(pDst); - dst_pitch = intel_get_pixmap_pitch(pDst); + pI830->i915_render_state.is_nearest = FALSE; if (!i915_texture_setup(pSrcPicture, pSrc, 0)) I830FALLBACK("fail to setup src texture\n"); if (pSrcPicture->filter == PictFilterNearest) - is_nearest = TRUE; + pI830->i915_render_state.is_nearest = TRUE; if (pMask != NULL) { if (!i915_texture_setup(pMaskPicture, pMask, 1)) I830FALLBACK("fail to setup mask texture\n"); if (pMaskPicture->filter == PictFilterNearest) - is_nearest = TRUE; + pI830->i915_render_state.is_nearest = TRUE; } else { pI830->transform[1] = NULL; pI830->scale_units[1][0] = -1; pI830->scale_units[1][1] = -1; } + + pI830->i915_render_state.op = op; + pI830->i915_render_state.pSrcPicture = pSrcPicture; + pI830->i915_render_state.pMaskPicture = pMaskPicture; + pI830->i915_render_state.pDstPicture = pDstPicture; + pI830->i915_render_state.pSrc = pSrc; + pI830->i915_render_state.pMask = pMask; + pI830->i915_render_state.pDst = pDst; + pI830->i915_render_state.needs_emit = TRUE; + + return TRUE; +} + +static void +i915_emit_composite_setup(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + int op = pI830->i915_render_state.op; + PicturePtr pSrcPicture = pI830->i915_render_state.pSrcPicture; + PicturePtr pMaskPicture = pI830->i915_render_state.pMaskPicture; + PicturePtr pDstPicture = pI830->i915_render_state.pDstPicture; + PixmapPtr pSrc = pI830->i915_render_state.pSrc; + PixmapPtr pMask = pI830->i915_render_state.pMask; + PixmapPtr pDst = pI830->i915_render_state.pDst; + uint32_t dst_format = pI830->i915_render_state.dst_format, dst_pitch; + uint32_t blendctl; + int out_reg = FS_OC; + FS_LOCALS(20); + Bool is_affine_src, is_affine_mask; + Bool is_nearest = pI830->i915_render_state.is_nearest; + + pI830->i915_render_state.needs_emit = FALSE; + + IntelEmitInvarientState(pScrn); + pI830->last_3d = LAST_3D_RENDER; + + dst_pitch = intel_get_pixmap_pitch(pDst); + is_affine_src = i830_transform_is_affine (pI830->transform[0]); is_affine_mask = i830_transform_is_affine (pI830->transform[1]); @@ -362,7 +399,7 @@ i915_prepare_composite(int op, PicturePtr pSrcPicture, BEGIN_BATCH(10); OUT_BATCH(_3DSTATE_MAP_STATE | 3); OUT_BATCH(0x00000001); /* map 0 */ - OUT_BATCH(pI830->mapstate[0]); + OUT_RELOC_PIXMAP(pSrc, I915_GEM_DOMAIN_SAMPLER, 0, 0); OUT_BATCH(pI830->mapstate[1]); OUT_BATCH(pI830->mapstate[2]); @@ -376,10 +413,10 @@ i915_prepare_composite(int op, PicturePtr pSrcPicture, BEGIN_BATCH(16); OUT_BATCH(_3DSTATE_MAP_STATE | 6); OUT_BATCH(0x00000003); /* map 0,1 */ - OUT_BATCH(pI830->mapstate[0]); + OUT_RELOC_PIXMAP(pSrc, I915_GEM_DOMAIN_SAMPLER, 0, 0); OUT_BATCH(pI830->mapstate[1]); OUT_BATCH(pI830->mapstate[2]); - OUT_BATCH(pI830->mapstate[3]); + OUT_RELOC_PIXMAP(pMask, I915_GEM_DOMAIN_SAMPLER, 0, 0); OUT_BATCH(pI830->mapstate[4]); OUT_BATCH(pI830->mapstate[5]); @@ -400,7 +437,7 @@ i915_prepare_composite(int op, PicturePtr pSrcPicture, OUT_BATCH(_3DSTATE_BUF_INFO_CMD); OUT_BATCH(BUF_3D_ID_COLOR_BACK| BUF_3D_USE_FENCE| BUF_3D_PITCH(dst_pitch)); - OUT_BATCH(BUF_3D_ADDR(dst_offset)); + OUT_RELOC_PIXMAP(pDst, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0); OUT_BATCH(_3DSTATE_DST_BUF_VARS_CMD); OUT_BATCH(dst_format); @@ -505,6 +542,29 @@ i915_prepare_composite(int op, PicturePtr pSrcPicture, i915_fs_mov(FS_OC, i915_fs_operand(out_reg, W, W, W, W)); FS_END(); +} - return TRUE; +void +i915_composite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY, + int dstX, int dstY, int w, int h) +{ + ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); + + intel_batch_start_atomic(pScrn, 150); + + if (pI830->i915_render_state.needs_emit) + i915_emit_composite_setup(pScrn); + + i830_composite(pDst, srcX, srcY, maskX, maskY, dstX, dstY, w, h); + + intel_batch_end_atomic(pScrn); +} + +void +i915_batch_flush_notify(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + + pI830->i915_render_state.needs_emit = TRUE; } diff --git a/driver/xf86-video-intel/src/i915_video.c b/driver/xf86-video-intel/src/i915_video.c index d2da94bb7..afa105510 100644 --- a/driver/xf86-video-intel/src/i915_video.c +++ b/driver/xf86-video-intel/src/i915_video.c @@ -49,8 +49,10 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, { I830Ptr pI830 = I830PTR(pScrn); uint32_t format, ms3, s5; - BoxPtr pbox; - int nbox, dxo, dyo, pix_xoff, pix_yoff; + BoxPtr pbox = REGION_RECTS(dstRegion); + int nbox_total = REGION_NUM_RECTS(dstRegion); + int nbox_this_time; + int dxo, dyo, pix_xoff, pix_yoff; Bool planar; #if 0 @@ -72,8 +74,20 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, return; } +#define BYTES_FOR_BOXES(n) ((200 + (n) * 20) * 4) +#define BOXES_IN_BYTES(s) ((((s)/4) - 200) / 20) +#define BATCH_BYTES(p) ((p)->batch_bo->size - 16) + + while (nbox_total) { + nbox_this_time = nbox_total; + if (BYTES_FOR_BOXES(nbox_this_time) > BATCH_BYTES(pI830)) + nbox_this_time = BOXES_IN_BYTES(BATCH_BYTES(pI830)); + nbox_total -= nbox_this_time; + + intel_batch_start_atomic(pScrn, 200 + 20 * nbox_this_time); + IntelEmitInvarientState(pScrn); - *pI830->last_3d = LAST_3D_VIDEO; + pI830->last_3d = LAST_3D_VIDEO; BEGIN_BATCH(20); @@ -130,7 +144,7 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, OUT_BATCH(_3DSTATE_BUF_INFO_CMD); OUT_BATCH(BUF_3D_ID_COLOR_BACK | BUF_3D_USE_FENCE | BUF_3D_PITCH(intel_get_pixmap_pitch(pPixmap))); - OUT_BATCH(BUF_3D_ADDR(intel_get_pixmap_offset(pPixmap))); + OUT_RELOC_PIXMAP(pPixmap, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, 0); ADVANCE_BATCH(); if (!planar) { @@ -158,7 +172,8 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, OUT_BATCH(_3DSTATE_MAP_STATE | 3); OUT_BATCH(0x00000001); /* texture map #1 */ - OUT_BATCH(pPriv->YBuf0offset); + OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0, pPriv->YBuf0offset); + ms3 = MAPSURF_422 | MS3_USE_FENCE_REGS; switch (id) { case FOURCC_YUY2: @@ -266,7 +281,7 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, OUT_BATCH(_3DSTATE_MAP_STATE | 9); OUT_BATCH(0x00000007); - OUT_BATCH(pPriv->YBuf0offset); + OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0, pPriv->YBuf0offset); ms3 = MAPSURF_8BIT | MT_8BIT_I8 | MS3_USE_FENCE_REGS; ms3 |= (height - 1) << MS3_HEIGHT_SHIFT; ms3 |= (width - 1) << MS3_WIDTH_SHIFT; @@ -279,14 +294,14 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, else OUT_BATCH(((video_pitch * 2 / 4) - 1) << MS4_PITCH_SHIFT); - OUT_BATCH(pPriv->UBuf0offset); + OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0, pPriv->UBuf0offset); ms3 = MAPSURF_8BIT | MT_8BIT_I8 | MS3_USE_FENCE_REGS; ms3 |= (height / 2 - 1) << MS3_HEIGHT_SHIFT; ms3 |= (width / 2 - 1) << MS3_WIDTH_SHIFT; OUT_BATCH(ms3); OUT_BATCH(((video_pitch / 4) - 1) << MS4_PITCH_SHIFT); - OUT_BATCH(pPriv->VBuf0offset); + OUT_RELOC(pPriv->buf, I915_GEM_DOMAIN_SAMPLER, 0, pPriv->VBuf0offset); ms3 = MAPSURF_8BIT | MT_8BIT_I8 | MS3_USE_FENCE_REGS; ms3 |= (height / 2 - 1) << MS3_HEIGHT_SHIFT; ms3 |= (width / 2 - 1) << MS3_WIDTH_SHIFT; @@ -362,9 +377,7 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, dxo = dstRegion->extents.x1; dyo = dstRegion->extents.y1; - pbox = REGION_RECTS(dstRegion); - nbox = REGION_NUM_RECTS(dstRegion); - while (nbox--) + while (nbox_this_time--) { int box_x1 = pbox->x1; int box_y1 = pbox->y1; @@ -412,6 +425,9 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, ADVANCE_BATCH(); } + intel_batch_end_atomic(pScrn); + } + i830MarkSync(pScrn); } diff --git a/driver/xf86-video-intel/src/i965_hwmc.c b/driver/xf86-video-intel/src/i965_hwmc.c new file mode 100644 index 000000000..d9b4f0ddd --- /dev/null +++ b/driver/xf86-video-intel/src/i965_hwmc.c @@ -0,0 +1,320 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * + */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <X11/extensions/Xv.h> +#include <X11/extensions/XvMC.h> +#include <fourcc.h> +#include <errno.h> + +#include "i830.h" +#include "i830_dri.h" +#define _INTEL_XVMC_SERVER_ +#include "i830_hwmc.h" +#include "i965_hwmc.h" + +#define STRIDE(w) (w) +#define SIZE_YUV420(w, h) (h * (STRIDE(w) + STRIDE(w >> 1))) + +static PutImageFuncPtr XvPutImage; + +#if 0 +static int alloc_drm_memory_tiled(ScrnInfoPtr pScrn, + struct drm_memory_block *mem, + char *name, size_t size, unsigned long pitch, unsigned long alignment) +{ + I830Ptr pI830 = I830PTR(pScrn); + if ((mem->buffer = i830_allocate_memory(pScrn, + name, size, pitch, + GTT_PAGE_SIZE, ALIGN_BOTH_ENDS, TILE_XMAJOR)) == NULL) { + ErrorF("Fail to alloc \n"); + return BadAlloc; + } + + if (drmAddMap(pI830->drmSubFD, + (drm_handle_t)(mem->buffer->offset + pI830->LinearAddr), + size, DRM_AGP, 0, + (drmAddress)&mem->handle) < 0) { + ErrorF("Fail to map %d \n", errno); + i830_free_memory(pScrn, mem->buffer); + return BadAlloc; + } + + mem->size = size; + mem->offset = mem->buffer->offset; + return Success; +} +#endif + +static int alloc_drm_memory(ScrnInfoPtr pScrn, + struct drm_memory_block *mem, + char *name, size_t size) +{ + I830Ptr pI830 = I830PTR(pScrn); + if ((mem->buffer = i830_allocate_memory(pScrn, + name, size, PITCH_NONE, GTT_PAGE_SIZE, + ALIGN_BOTH_ENDS, TILE_NONE)) == NULL) { + ErrorF("Fail to alloc \n"); + return BadAlloc; + } + + if (drmAddMap(pI830->drmSubFD, + (drm_handle_t)(mem->buffer->offset + pI830->LinearAddr), + size, DRM_AGP, 0, + (drmAddress)&mem->handle) < 0) { + ErrorF("Fail to map %d \n", errno); + i830_free_memory(pScrn, mem->buffer); + return BadAlloc; + } + + mem->size = size; + mem->offset = mem->buffer->offset; + return Success; +} + +static void free_drm_memory(ScrnInfoPtr pScrn, + struct drm_memory_block *mem) +{ + I830Ptr pI830 = I830PTR(pScrn); + drmRmMap(pI830->drmSubFD, mem->handle); + i830_free_memory(pScrn, mem->buffer); +} + +static int create_context(ScrnInfoPtr pScrn, + XvMCContextPtr context, int *num_privates, CARD32 **private) +{ + struct i965_xvmc_context *private_context, *context_dup; + I830Ptr I830 = I830PTR(pScrn); + DRIInfoPtr driinfo = I830->pDRIInfo; + + unsigned int blocknum = + (((context->width + 15)/16)*((context->height+15)/16)); + unsigned int blocksize = 6*blocknum*64*sizeof(short); + blocksize = (blocksize + 4095)&(~4095); + if ((private_context = Xcalloc(sizeof(*private_context))) == NULL) { + ErrorF("XVMC Can not allocate private context\n"); + return BadAlloc; + } + + if ((context_dup = Xcalloc(sizeof(*private_context))) == NULL) { + ErrorF("XVMC Can not allocate private context\n"); + return BadAlloc; + } + + private_context->is_g4x = IS_G4X(I830); + private_context->is_965_q = IS_965_Q(I830); + private_context->comm.type = xvmc_driver->flag; + private_context->comm.sarea_size = driinfo->SAREASize; + private_context->comm.batchbuffer.offset = xvmc_driver->batch->offset; + private_context->comm.batchbuffer.size = xvmc_driver->batch->size; + private_context->comm.batchbuffer.handle = xvmc_driver->batch_handle; + + if (alloc_drm_memory(pScrn, &private_context->static_buffer, + "XVMC static buffers", + I965_MC_STATIC_BUFFER_SIZE)) { + ErrorF("Unable to allocate and map static buffer for XVMC\n"); + return BadAlloc; + } + + if (alloc_drm_memory(pScrn, &private_context->blocks, + "XVMC blocks", blocksize)) { + ErrorF("Unable to allocate and map block buffer for XVMC\n"); + return BadAlloc; + } + *num_privates = sizeof(*private_context)/sizeof(CARD32); + *private = (CARD32 *)private_context; + memcpy(context_dup, private_context, sizeof(*private_context)); + context->driver_priv = context_dup; + + return Success; +} + +static void destroy_context(ScrnInfoPtr pScrn, XvMCContextPtr context) +{ + struct i965_xvmc_context *private_context; + private_context = context->driver_priv; + free_drm_memory(pScrn, &private_context->static_buffer); + Xfree(private_context); +} + +static int create_surface(ScrnInfoPtr pScrn, XvMCSurfacePtr surface, + int *num_priv, CARD32 **priv) +{ + XvMCContextPtr ctx = surface->context; + struct i965_xvmc_surface *priv_surface, *surface_dup; + struct i965_xvmc_context *priv_ctx = ctx->driver_priv; + size_t bufsize = SIZE_YUV420(ctx->width, ctx->height); + int i; + for (i = 0 ; i < I965_MAX_SURFACES; i++) { + if (priv_ctx->surfaces[i] == NULL) { + priv_surface = Xcalloc(sizeof(*priv_surface)); + if (priv_surface == NULL) + return BadAlloc; + surface_dup = Xcalloc(sizeof(*priv_surface)); + if (surface_dup == NULL) + return BadAlloc; + + priv_surface->no = i; + priv_surface->handle = priv_surface; + priv_ctx->surfaces[i] = surface->driver_priv + = priv_surface; + if (alloc_drm_memory(pScrn, &priv_surface->buffer, + "surface buffer\n", (bufsize+0xFFF)&~(0xFFF))) { + ErrorF("Unable to allocate surface buffer\n"); + return BadAlloc; + } + memcpy(surface_dup, priv_surface, sizeof(*priv_surface)); + *num_priv = sizeof(*priv_surface)/sizeof(CARD32); + *priv = (CARD32 *)surface_dup; + break; + } + } + + if (i >= I965_MAX_SURFACES) { + ErrorF("I965 XVMC too many surfaces in one context\n"); + return BadAlloc; + } + + return Success; +} + +static void destory_surface(ScrnInfoPtr pScrn, XvMCSurfacePtr surface) +{ + XvMCContextPtr ctx = surface->context; + struct i965_xvmc_surface *priv_surface = surface->driver_priv; + struct i965_xvmc_context *priv_ctx = ctx->driver_priv; + priv_ctx->surfaces[priv_surface->no] = NULL; + free_drm_memory(pScrn, &priv_surface->buffer); + Xfree(priv_surface); +} + +static int create_subpicture(ScrnInfoPtr pScrn, XvMCSubpicturePtr subpicture, + int *num_priv, CARD32 **priv) +{ + return Success; +} + +static void destroy_subpicture(ScrnInfoPtr pScrn, XvMCSubpicturePtr subpicture) +{ +} +static int put_image(ScrnInfoPtr pScrn, + short src_x, short src_y, + short drw_x, short drw_y, short src_w, + short src_h, short drw_w, short drw_h, + int id, unsigned char *buf, short width, + short height, Bool sync, RegionPtr clipBoxes, pointer data, + DrawablePtr pDraw) +{ + I830Ptr pI830 = I830PTR(pScrn); + struct intel_xvmc_command *cmd = (struct intel_xvmc_command *)buf; + if (id == FOURCC_XVMC) { + buf = pI830->FbBase + cmd->surf_offset; + } + XvPutImage(pScrn, src_x, src_y, drw_x, drw_y, src_w, src_h, + drw_w, drw_h, id, buf, width, height, sync, clipBoxes, + data, pDraw); + return Success; +} + +static Bool init(ScrnInfoPtr screen_info, XF86VideoAdaptorPtr adaptor) +{ + if (!intel_xvmc_init_batch(screen_info)) { + ErrorF("[XvMC] fail to init batch buffer\n"); + return FALSE; + } + XvPutImage = adaptor->PutImage; + adaptor->PutImage = put_image; + + return TRUE; +} + +static void fini(ScrnInfoPtr screen_info) +{ +} + +static XF86MCSurfaceInfoRec yv12_mpeg2_surface = +{ + FOURCC_YV12, + XVMC_CHROMA_FORMAT_420, + 0, + 1936, + 1096, + 1920, + 1080, + XVMC_MPEG_2|XVMC_MOCOMP, + /* XVMC_OVERLAID_SURFACE | XVMC_SUBPICTURE_INDEPENDENT_SCALING,*/ + XVMC_INTRA_UNSIGNED, + /* &yv12_subpicture_list*/ + NULL +}; + +static XF86MCSurfaceInfoRec yv12_mpeg1_surface = +{ + FOURCC_YV12, + XVMC_CHROMA_FORMAT_420, + 0, + 1920, + 1080, + 1920, + 1080, + XVMC_MPEG_1|XVMC_MOCOMP, + /*XVMC_OVERLAID_SURFACE | XVMC_SUBPICTURE_INDEPENDENT_SCALING | + XVMC_INTRA_UNSIGNED,*/ + XVMC_INTRA_UNSIGNED, + + /*&yv12_subpicture_list*/ + NULL +}; + +static XF86MCSurfaceInfoPtr surface_info[] = { + &yv12_mpeg2_surface, + &yv12_mpeg1_surface +}; + +static XF86MCAdaptorRec adaptor = { + .name = "Intel(R) Textured Video", + .num_surfaces = sizeof(surface_info)/sizeof(surface_info[0]), + .surfaces = surface_info, + + .CreateContext = create_context, + .DestroyContext = destroy_context, + .CreateSurface = create_surface, + .DestroySurface = destory_surface, + .CreateSubpicture = create_subpicture, + .DestroySubpicture = destroy_subpicture +}; + +struct intel_xvmc_driver i965_xvmc_driver = { + .name = "i965_xvmc", + .adaptor = &adaptor, + .flag = XVMC_I965_MPEG2_MC, + .init = init, + .fini = fini +}; + diff --git a/driver/xf86-video-intel/src/i965_hwmc.h b/driver/xf86-video-intel/src/i965_hwmc.h new file mode 100644 index 000000000..dafd18d4b --- /dev/null +++ b/driver/xf86-video-intel/src/i965_hwmc.h @@ -0,0 +1,25 @@ +#define I965_MC_STATIC_BUFFER_SIZE (1024*512) +#define I965_MAX_SURFACES 32 +struct _i830_memory; +struct drm_memory_block { + struct _i830_memory *buffer; + drm_handle_t handle; + drmAddress ptr; + size_t size; + unsigned long offset; +}; + +struct i965_xvmc_surface { + struct drm_memory_block buffer; + unsigned int no; + void *handle; +}; + +struct i965_xvmc_context { + struct _intel_xvmc_common comm; + struct drm_memory_block static_buffer; + struct drm_memory_block blocks; + struct i965_xvmc_surface *surfaces[I965_MAX_SURFACES]; + unsigned int is_g4x:1; + unsigned int is_965_q:1; +}; diff --git a/driver/xf86-video-intel/src/i965_render.c b/driver/xf86-video-intel/src/i965_render.c index 8360be4a1..c123a3695 100644 --- a/driver/xf86-video-intel/src/i965_render.c +++ b/driver/xf86-video-intel/src/i965_render.c @@ -42,25 +42,14 @@ #include "brw_defines.h" #include "brw_structs.h" -#ifdef I830DEBUG -#define DEBUG_I830FALLBACK 1 -#endif - -#ifdef DEBUG_I830FALLBACK -#define I830FALLBACK(s, arg...) \ -do { \ - DPRINTF(PFX, "EXA fallback: " s "\n", ##arg); \ - return FALSE; \ -} while(0) -#else -#define I830FALLBACK(s, arg...) \ -do { \ - return FALSE; \ -} while(0) -#endif - -#define MAX_VERTEX_PER_COMPOSITE 24 -#define MAX_VERTEX_BUFFERS 256 +/* 24 = 4 vertices/composite * 3 texcoords/vertex * 2 floats/texcoord + * + * This is an upper-bound based on the case of a non-affine + * transformation and with a mask, but useful for sizing all cases for + * simplicity. + */ +#define VERTEX_FLOATS_PER_COMPOSITE 24 +#define VERTEX_BUFFER_SIZE (256 * VERTEX_FLOATS_PER_COMPOSITE) struct blendinfo { Bool dst_alpha; @@ -161,6 +150,8 @@ static void i965_get_blend_cntl(int op, PicturePtr pMask, uint32_t dst_format, static Bool i965_get_dest_format(PicturePtr pDstPicture, uint32_t *dst_format) { + ScrnInfoPtr pScrn = xf86Screens[pDstPicture->pDrawable->pScreen->myNum]; + switch (pDstPicture->format) { case PICT_a8r8g8b8: case PICT_x8r8g8b8: @@ -192,6 +183,7 @@ static Bool i965_get_dest_format(PicturePtr pDstPicture, uint32_t *dst_format) static Bool i965_check_composite_texture(PicturePtr pPict, int unit) { + ScrnInfoPtr pScrn = xf86Screens[pPict->pDrawable->pScreen->myNum]; int w = pPict->pDrawable->width; int h = pPict->pDrawable->height; int i; @@ -209,7 +201,7 @@ static Bool i965_check_composite_texture(PicturePtr pPict, int unit) I830FALLBACK("Unsupported picture format 0x%x\n", (int)pPict->format); - if (pPict->repeat && pPict->repeatType != RepeatNormal) + if (pPict->repeatType > RepeatReflect) I830FALLBACK("extended repeat (%d) not supported\n", pPict->repeatType); @@ -226,6 +218,7 @@ Bool i965_check_composite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture, PicturePtr pDstPicture) { + ScrnInfoPtr pScrn = xf86Screens[pDstPicture->pDrawable->pScreen->myNum]; uint32_t tmp1; /* Check for unsupported compositing operations. */ @@ -322,8 +315,6 @@ static const uint32_t sf_kernel_mask_static[][4] = { /* ps kernels */ #define PS_KERNEL_NUM_GRF 32 #define PS_MAX_THREADS 48 -#define PS_SCRATCH_SPACE 1024 -#define PS_SCRATCH_SPACE_LOG 0 /* log2 (PS_SCRATCH_SPACE) - 10 (1024 is 0, 2048 is 1) */ static const uint32_t ps_kernel_nomask_affine_static [][4] = { #include "exa_wm_xy.g4b" @@ -399,12 +390,6 @@ static const uint32_t ps_kernel_masknoca_projective_static [][4] = { #include "exa_wm_write.g4b" }; -/** - * Storage for the static kernel data with template name, rounded to 64 bytes. - */ -#define KERNEL_DECL(template) \ - uint32_t template [((sizeof (template ## _static) + 63) & ~63) / 16][4]; - #define WM_STATE_DECL(kernel) \ struct brw_wm_unit_state wm_state_ ## kernel[SAMPLER_STATE_FILTER_COUNT] \ [SAMPLER_STATE_EXTEND_COUNT] \ @@ -427,9 +412,49 @@ typedef enum { typedef enum { SAMPLER_STATE_EXTEND_NONE, SAMPLER_STATE_EXTEND_REPEAT, + SAMPLER_STATE_EXTEND_PAD, + SAMPLER_STATE_EXTEND_REFLECT, SAMPLER_STATE_EXTEND_COUNT } sampler_state_extend_t; +typedef enum { + WM_KERNEL_NOMASK_AFFINE, + WM_KERNEL_NOMASK_PROJECTIVE, + WM_KERNEL_MASKCA_AFFINE, + WM_KERNEL_MASKCA_PROJECTIVE, + WM_KERNEL_MASKCA_SRCALPHA_AFFINE, + WM_KERNEL_MASKCA_SRCALPHA_PROJECTIVE, + WM_KERNEL_MASKNOCA_AFFINE, + WM_KERNEL_MASKNOCA_PROJECTIVE, + WM_KERNEL_COUNT +} wm_kernel_t; + +#define KERNEL(kernel_enum, kernel, masked) \ + [kernel_enum] = {&kernel, sizeof(kernel), masked} +struct wm_kernel_info { + void *data; + unsigned int size; + Bool has_mask; +} wm_kernels[] = { + KERNEL(WM_KERNEL_NOMASK_AFFINE, + ps_kernel_nomask_affine_static, FALSE), + KERNEL(WM_KERNEL_NOMASK_PROJECTIVE, + ps_kernel_nomask_projective_static, FALSE), + KERNEL(WM_KERNEL_MASKCA_AFFINE, + ps_kernel_maskca_affine_static, TRUE), + KERNEL(WM_KERNEL_MASKCA_PROJECTIVE, + ps_kernel_maskca_projective_static, TRUE), + KERNEL(WM_KERNEL_MASKCA_SRCALPHA_AFFINE, + ps_kernel_maskca_srcalpha_affine_static, TRUE), + KERNEL(WM_KERNEL_MASKCA_SRCALPHA_PROJECTIVE, + ps_kernel_maskca_srcalpha_projective_static, TRUE), + KERNEL(WM_KERNEL_MASKNOCA_AFFINE, + ps_kernel_masknoca_affine_static, TRUE), + KERNEL(WM_KERNEL_MASKNOCA_PROJECTIVE, + ps_kernel_masknoca_projective_static, TRUE), +}; +#undef KERNEL + typedef struct _brw_cc_unit_state_padded { struct brw_cc_unit_state state; char pad[64 - sizeof (struct brw_cc_unit_state)]; @@ -440,81 +465,53 @@ typedef struct brw_surface_state_padded { char pad[32 - sizeof (struct brw_surface_state)]; } brw_surface_state_padded; -/** - * Gen4 rendering state buffer structure. - * - * Ideally this structure would contain static data for all of the - * combinations of state that we use for Render acceleration, and another - * buffer would be the use-and-throw-away surface and vertex data. See the - * intel-batchbuffer branch for an implementation of that. For now, it - * has the static program data, and then a changing buffer containing all - * the rest. - */ -typedef struct _gen4_state { - uint8_t wm_scratch[128 * PS_MAX_THREADS]; - - KERNEL_DECL (sip_kernel); - KERNEL_DECL (sf_kernel); - KERNEL_DECL (sf_kernel_mask); - KERNEL_DECL (ps_kernel_nomask_affine); - KERNEL_DECL (ps_kernel_nomask_projective); - KERNEL_DECL (ps_kernel_maskca_affine); - KERNEL_DECL (ps_kernel_maskca_projective); - KERNEL_DECL (ps_kernel_maskca_srcalpha_affine); - KERNEL_DECL (ps_kernel_maskca_srcalpha_projective); - KERNEL_DECL (ps_kernel_masknoca_affine); - KERNEL_DECL (ps_kernel_masknoca_projective); - - struct brw_vs_unit_state vs_state; - PAD64 (brw_vs_unit_state, 0); - - struct brw_sf_unit_state sf_state; - PAD64 (brw_sf_unit_state, 0); - struct brw_sf_unit_state sf_state_mask; - PAD64 (brw_sf_unit_state, 1); - - WM_STATE_DECL (nomask_affine); - WM_STATE_DECL (nomask_projective); - WM_STATE_DECL (maskca_affine); - WM_STATE_DECL (maskca_projective); - WM_STATE_DECL (maskca_srcalpha_affine); - WM_STATE_DECL (maskca_srcalpha_projective); - WM_STATE_DECL (masknoca_affine); - WM_STATE_DECL (masknoca_projective); - - uint32_t binding_table[128]; - - struct brw_surface_state_padded surface_state[32]; - - /* Index by [src_filter][src_extend][mask_filter][mask_extend]. Two of - * the structs happen to add to 32 bytes. - */ - struct brw_sampler_state sampler_state[SAMPLER_STATE_FILTER_COUNT] - [SAMPLER_STATE_EXTEND_COUNT] - [SAMPLER_STATE_FILTER_COUNT] - [SAMPLER_STATE_EXTEND_COUNT][2]; - - struct brw_sampler_default_color sampler_default_color; - PAD64 (brw_sampler_default_color, 0); - +struct gen4_cc_unit_state { /* Index by [src_blend][dst_blend] */ brw_cc_unit_state_padded cc_state[BRW_BLENDFACTOR_COUNT] [BRW_BLENDFACTOR_COUNT]; - struct brw_cc_viewport cc_viewport; - PAD64 (brw_cc_viewport, 0); +}; - float vb[MAX_VERTEX_PER_COMPOSITE * MAX_VERTEX_BUFFERS]; -} gen4_state_t; +typedef float gen4_vertex_buffer[VERTEX_BUFFER_SIZE]; + +typedef struct gen4_composite_op { + int op; + PicturePtr source_picture; + PicturePtr mask_picture; + PicturePtr dest_picture; + PixmapPtr source; + PixmapPtr mask; + PixmapPtr dest; + drm_intel_bo *binding_table_bo; + sampler_state_filter_t src_filter; + sampler_state_filter_t mask_filter; + sampler_state_extend_t src_extend; + sampler_state_extend_t mask_extend; + Bool is_affine; + wm_kernel_t wm_kernel; +} gen4_composite_op; /** Private data for gen4 render accel implementation. */ struct gen4_render_state { - gen4_state_t *card_state; - uint32_t card_state_offset; + drm_intel_bo *vs_state_bo; + drm_intel_bo *sf_state_bo; + drm_intel_bo *sf_mask_state_bo; + drm_intel_bo *cc_state_bo; + drm_intel_bo *wm_state_bo[WM_KERNEL_COUNT] + [SAMPLER_STATE_FILTER_COUNT] + [SAMPLER_STATE_EXTEND_COUNT] + [SAMPLER_STATE_FILTER_COUNT] + [SAMPLER_STATE_EXTEND_COUNT]; + drm_intel_bo *wm_kernel_bo[WM_KERNEL_COUNT]; + + drm_intel_bo *sip_kernel_bo; + dri_bo* vertex_buffer_bo; + + gen4_composite_op composite_op; - int binding_table_index; - int surface_state_index; int vb_offset; int vertex_size; + + Bool needs_state_emit; }; /** @@ -524,11 +521,25 @@ struct gen4_render_state { * calculate dA/dx and dA/dy. Hand these interpolation coefficients * back to SF which then hands pixels off to WM. */ -static void -sf_state_init (struct brw_sf_unit_state *sf_state, int kernel_offset) +static drm_intel_bo * +gen4_create_sf_state(ScrnInfoPtr scrn, drm_intel_bo *kernel_bo) { + I830Ptr pI830 = I830PTR(scrn); + struct brw_sf_unit_state *sf_state; + drm_intel_bo *sf_state_bo; + + sf_state_bo = drm_intel_bo_alloc(pI830->bufmgr, "gen4 SF state", + sizeof(*sf_state), 4096); + drm_intel_bo_map(sf_state_bo, TRUE); + sf_state = sf_state_bo->virtual; + memset(sf_state, 0, sizeof(*sf_state)); sf_state->thread0.grf_reg_count = BRW_GRF_BLOCKS(SF_KERNEL_NUM_GRF); + sf_state->thread0.kernel_start_pointer = + intel_emit_reloc(sf_state_bo, + offsetof(struct brw_sf_unit_state, thread0), + kernel_bo, sf_state->thread0.grf_reg_count << 1, + I915_GEM_DOMAIN_INSTRUCTION, 0) >> 6; sf_state->sf1.single_program_flow = 1; sf_state->sf1.binding_table_entry_count = 0; sf_state->sf1.thread_priority = 0; @@ -556,21 +567,49 @@ sf_state_init (struct brw_sf_unit_state *sf_state, int kernel_offset) sf_state->sf6.dest_org_vbias = 0x8; sf_state->sf6.dest_org_hbias = 0x8; - assert((kernel_offset & 63) == 0); - sf_state->thread0.kernel_start_pointer = kernel_offset >> 6; + drm_intel_bo_unmap(sf_state_bo); + + return sf_state_bo; +} + +static drm_intel_bo * +sampler_border_color_create(ScrnInfoPtr scrn) +{ + struct brw_sampler_legacy_border_color sampler_border_color; + + /* Set up the sampler border color (always transparent black) */ + memset(&sampler_border_color, 0, sizeof(sampler_border_color)); + sampler_border_color.color[0] = 0; /* R */ + sampler_border_color.color[1] = 0; /* G */ + sampler_border_color.color[2] = 0; /* B */ + sampler_border_color.color[3] = 0; /* A */ + + return intel_bo_alloc_for_data(scrn, + &sampler_border_color, + sizeof(sampler_border_color), + "gen4 render sampler border color"); } static void -sampler_state_init (struct brw_sampler_state *sampler_state, +sampler_state_init (drm_intel_bo *sampler_state_bo, + struct brw_sampler_state *sampler_state, sampler_state_filter_t filter, sampler_state_extend_t extend, - int default_color_offset) + drm_intel_bo *border_color_bo) { + uint32_t sampler_state_offset; + + sampler_state_offset = (char *)sampler_state - + (char *)sampler_state_bo->virtual; + /* PS kernel use this sampler */ memset(sampler_state, 0, sizeof(*sampler_state)); sampler_state->ss0.lod_preclamp = 1; /* GL mode */ - sampler_state->ss0.default_color_mode = 0; /* GL mode */ + + /* We use the legacy mode to get the semantics specified by + * the Render extension. */ + sampler_state->ss0.border_color_mode = BRW_BORDER_COLOR_MODE_LEGACY; switch(filter) { default: @@ -596,20 +635,71 @@ sampler_state_init (struct brw_sampler_state *sampler_state, sampler_state->ss1.s_wrap_mode = BRW_TEXCOORDMODE_WRAP; sampler_state->ss1.t_wrap_mode = BRW_TEXCOORDMODE_WRAP; break; + case SAMPLER_STATE_EXTEND_PAD: + sampler_state->ss1.r_wrap_mode = BRW_TEXCOORDMODE_CLAMP; + sampler_state->ss1.s_wrap_mode = BRW_TEXCOORDMODE_CLAMP; + sampler_state->ss1.t_wrap_mode = BRW_TEXCOORDMODE_CLAMP; + break; + case SAMPLER_STATE_EXTEND_REFLECT: + sampler_state->ss1.r_wrap_mode = BRW_TEXCOORDMODE_MIRROR; + sampler_state->ss1.s_wrap_mode = BRW_TEXCOORDMODE_MIRROR; + sampler_state->ss1.t_wrap_mode = BRW_TEXCOORDMODE_MIRROR; + break; } - assert((default_color_offset & 31) == 0); - sampler_state->ss2.default_color_pointer = default_color_offset >> 5; + sampler_state->ss2.border_color_pointer = + intel_emit_reloc(sampler_state_bo, sampler_state_offset + + offsetof(struct brw_sampler_state, ss2), + border_color_bo, 0, + I915_GEM_DOMAIN_SAMPLER, 0) >> 5; sampler_state->ss3.chroma_key_enable = 0; /* disable chromakey */ } +static drm_intel_bo * +gen4_create_sampler_state(ScrnInfoPtr scrn, + sampler_state_filter_t src_filter, + sampler_state_extend_t src_extend, + sampler_state_filter_t mask_filter, + sampler_state_extend_t mask_extend, + drm_intel_bo *border_color_bo) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *sampler_state_bo; + struct brw_sampler_state *sampler_state; + + sampler_state_bo = drm_intel_bo_alloc(pI830->bufmgr, "gen4 sampler state", + sizeof(struct brw_sampler_state) * 2, + 4096); + drm_intel_bo_map(sampler_state_bo, TRUE); + sampler_state = sampler_state_bo->virtual; + + sampler_state_init(sampler_state_bo, + &sampler_state[0], + src_filter, src_extend, + border_color_bo); + sampler_state_init(sampler_state_bo, + &sampler_state[1], + mask_filter, mask_extend, + border_color_bo); + + drm_intel_bo_unmap(sampler_state_bo); + + return sampler_state_bo; +} + static void -cc_state_init (struct brw_cc_unit_state *cc_state, +cc_state_init (drm_intel_bo *cc_state_bo, + uint32_t cc_state_offset, int src_blend, int dst_blend, - int cc_viewport_offset) + drm_intel_bo *cc_vp_bo) { + struct brw_cc_unit_state *cc_state; + + cc_state = (struct brw_cc_unit_state *)((char *)cc_state_bo->virtual + + cc_state_offset); + memset(cc_state, 0, sizeof(*cc_state)); cc_state->cc0.stencil_enable = 0; /* disable stencil */ cc_state->cc2.depth_test = 0; /* disable depth test */ @@ -618,8 +708,11 @@ cc_state_init (struct brw_cc_unit_state *cc_state, cc_state->cc3.blend_enable = 1; /* enable color blend */ cc_state->cc3.alpha_test = 0; /* disable alpha test */ - assert((cc_viewport_offset & 31) == 0); - cc_state->cc4.cc_viewport_state_offset = cc_viewport_offset >> 5; + cc_state->cc4.cc_viewport_state_offset = + intel_emit_reloc(cc_state_bo, cc_state_offset + + offsetof(struct brw_cc_unit_state, cc4), + cc_vp_bo, 0, + I915_GEM_DOMAIN_INSTRUCTION, 0) >> 5; cc_state->cc5.dither_enable = 0; /* disable dither */ cc_state->cc5.logicop_func = 0xc; /* COPY */ @@ -639,21 +732,34 @@ cc_state_init (struct brw_cc_unit_state *cc_state, cc_state->cc6.dest_blend_factor = dst_blend; } -static void -wm_state_init (struct brw_wm_unit_state *wm_state, - Bool has_mask, - int scratch_offset, - int kernel_offset, - int sampler_state_offset) +static drm_intel_bo * +gen4_create_wm_state(ScrnInfoPtr scrn, + Bool has_mask, drm_intel_bo *kernel_bo, + drm_intel_bo *sampler_bo) { + I830Ptr pI830 = I830PTR(scrn); + struct brw_wm_unit_state *wm_state; + drm_intel_bo *wm_state_bo; + + wm_state_bo = drm_intel_bo_alloc(pI830->bufmgr, "gen4 WM state", + sizeof(*wm_state), 4096); + drm_intel_bo_map(wm_state_bo, TRUE); + wm_state = wm_state_bo->virtual; + memset(wm_state, 0, sizeof (*wm_state)); wm_state->thread0.grf_reg_count = BRW_GRF_BLOCKS(PS_KERNEL_NUM_GRF); + wm_state->thread0.kernel_start_pointer = + intel_emit_reloc(wm_state_bo, + offsetof(struct brw_wm_unit_state, thread0), + kernel_bo, wm_state->thread0.grf_reg_count << 1, + I915_GEM_DOMAIN_INSTRUCTION, 0) >> 6; + wm_state->thread1.single_program_flow = 0; - assert((scratch_offset & 1023) == 0); - wm_state->thread2.scratch_space_base_pointer = scratch_offset >> 10; + /* scratch space is not used in our kernel */ + wm_state->thread2.scratch_space_base_pointer = 0; + wm_state->thread2.per_thread_scratch_space = 0; - wm_state->thread2.per_thread_scratch_space = PS_SCRATCH_SPACE_LOG; wm_state->thread3.const_urb_entry_read_length = 0; wm_state->thread3.const_urb_entry_read_offset = 0; @@ -662,9 +768,13 @@ wm_state_init (struct brw_wm_unit_state *wm_state, wm_state->thread3.dispatch_grf_start_reg = 3; /* must match kernel */ wm_state->wm4.stats_enable = 1; /* statistic */ - assert((sampler_state_offset & 31) == 0); - wm_state->wm4.sampler_state_pointer = sampler_state_offset >> 5; wm_state->wm4.sampler_count = 1; /* 1-4 samplers used */ + wm_state->wm4.sampler_state_pointer = + intel_emit_reloc(wm_state_bo, offsetof(struct brw_wm_unit_state, wm4), + sampler_bo, + wm_state->wm4.stats_enable + + (wm_state->wm4.sampler_count << 2), + I915_GEM_DOMAIN_INSTRUCTION, 0) >> 5; wm_state->wm5.max_threads = PS_MAX_THREADS - 1; wm_state->wm5.transposed_urb_read = 0; wm_state->wm5.thread_dispatch_enable = 1; @@ -675,9 +785,6 @@ wm_state_init (struct brw_wm_unit_state *wm_state, wm_state->wm5.enable_8_pix = 0; wm_state->wm5.early_depth_test = 1; - assert((kernel_offset & 63) == 0); - wm_state->thread0.kernel_start_pointer = kernel_offset >> 6; - /* Each pair of attributes (src/mask coords) is two URB entries */ if (has_mask) { wm_state->thread1.binding_table_entry_count = 3; /* 2 tex and fb */ @@ -686,116 +793,76 @@ wm_state_init (struct brw_wm_unit_state *wm_state, wm_state->thread1.binding_table_entry_count = 2; /* 1 tex and fb */ wm_state->thread3.urb_entry_read_length = 2; } + + drm_intel_bo_unmap(wm_state_bo); + + return wm_state_bo; } -/** - * Called at EnterVT to fill in our state buffer with any static information. - */ -static void -gen4_state_init (struct gen4_render_state *render_state) +static drm_intel_bo * +gen4_create_cc_viewport(ScrnInfoPtr scrn) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *bo; + struct brw_cc_viewport cc_viewport; + + cc_viewport.min_depth = -1.e35; + cc_viewport.max_depth = 1.e35; + + bo = drm_intel_bo_alloc(pI830->bufmgr, "gen4 render unit state", + sizeof(cc_viewport), 4096); + drm_intel_bo_subdata(bo, 0, sizeof(cc_viewport), &cc_viewport); + + return bo; +} + +static drm_intel_bo * +gen4_create_vs_unit_state(ScrnInfoPtr scrn) { - int i, j, k, l; - gen4_state_t *card_state = render_state->card_state; - uint32_t state_base_offset = render_state->card_state_offset; - -#define KERNEL_COPY(kernel) \ - memcpy(card_state->kernel, kernel ## _static, sizeof(kernel ## _static)) - - KERNEL_COPY (sip_kernel); - KERNEL_COPY (sf_kernel); - KERNEL_COPY (sf_kernel_mask); - KERNEL_COPY (ps_kernel_nomask_affine); - KERNEL_COPY (ps_kernel_nomask_projective); - KERNEL_COPY (ps_kernel_maskca_affine); - KERNEL_COPY (ps_kernel_maskca_projective); - KERNEL_COPY (ps_kernel_maskca_srcalpha_affine); - KERNEL_COPY (ps_kernel_maskca_srcalpha_projective); - KERNEL_COPY (ps_kernel_masknoca_affine); - KERNEL_COPY (ps_kernel_masknoca_projective); -#undef KERNEL_COPY + struct brw_vs_unit_state vs_state; + memset(&vs_state, 0, sizeof(vs_state)); /* Set up the vertex shader to be disabled (passthrough) */ - memset(&card_state->vs_state, 0, sizeof(card_state->vs_state)); - card_state->vs_state.thread4.nr_urb_entries = URB_VS_ENTRIES; - card_state->vs_state.thread4.urb_entry_allocation_size = - URB_VS_ENTRY_SIZE - 1; - card_state->vs_state.vs6.vs_enable = 0; - card_state->vs_state.vs6.vert_cache_disable = 1; - - /* Set up the sampler default color (always transparent black) */ - memset(&card_state->sampler_default_color, 0, - sizeof(card_state->sampler_default_color)); - card_state->sampler_default_color.color[0] = 0.0; /* R */ - card_state->sampler_default_color.color[1] = 0.0; /* G */ - card_state->sampler_default_color.color[2] = 0.0; /* B */ - card_state->sampler_default_color.color[3] = 0.0; /* A */ - - card_state->cc_viewport.min_depth = -1.e35; - card_state->cc_viewport.max_depth = 1.e35; - - sf_state_init (&card_state->sf_state, - state_base_offset + - offsetof (gen4_state_t, sf_kernel)); - sf_state_init (&card_state->sf_state_mask, - state_base_offset + - offsetof (gen4_state_t, sf_kernel_mask)); + vs_state.thread4.nr_urb_entries = URB_VS_ENTRIES; + vs_state.thread4.urb_entry_allocation_size = URB_VS_ENTRY_SIZE - 1; + vs_state.vs6.vs_enable = 0; + vs_state.vs6.vert_cache_disable = 1; - for (i = 0; i < SAMPLER_STATE_FILTER_COUNT; i++) { - for (j = 0; j < SAMPLER_STATE_EXTEND_COUNT; j++) { - for (k = 0; k < SAMPLER_STATE_FILTER_COUNT; k++) { - for (l = 0; l < SAMPLER_STATE_EXTEND_COUNT; l++) { - sampler_state_init (&card_state->sampler_state[i][j][k][l][0], - i, j, - state_base_offset + - offsetof (gen4_state_t, - sampler_default_color)); - sampler_state_init (&card_state->sampler_state[i][j][k][l][1], - k, l, - state_base_offset + - offsetof (gen4_state_t, - sampler_default_color)); - } - } - } - } + return intel_bo_alloc_for_data(scrn, &vs_state, sizeof(vs_state), + "gen4 render VS state"); +} + +/** + * Set up all combinations of cc state: each blendfactor for source and + * dest. + */ +static drm_intel_bo * +gen4_create_cc_unit_state(ScrnInfoPtr scrn) +{ + I830Ptr pI830 = I830PTR(scrn); + struct gen4_cc_unit_state *cc_state; + drm_intel_bo *cc_state_bo, *cc_vp_bo; + int i, j; + cc_vp_bo = gen4_create_cc_viewport(scrn); + cc_state_bo = drm_intel_bo_alloc(pI830->bufmgr, "gen4 CC state", + sizeof(*cc_state), 4096); + drm_intel_bo_map(cc_state_bo, TRUE); + cc_state = cc_state_bo->virtual; for (i = 0; i < BRW_BLENDFACTOR_COUNT; i++) { for (j = 0; j < BRW_BLENDFACTOR_COUNT; j++) { - cc_state_init (&card_state->cc_state[i][j].state, i, j, - state_base_offset + - offsetof (gen4_state_t, cc_viewport)); + cc_state_init(cc_state_bo, + offsetof(struct gen4_cc_unit_state, + cc_state[i][j].state), + i, j, cc_vp_bo); } } + drm_intel_bo_unmap(cc_state_bo); -#define SETUP_WM_STATE(kernel, has_mask) \ - wm_state_init(&card_state->wm_state_ ## kernel [i][j][k][l], \ - has_mask, \ - state_base_offset + offsetof(gen4_state_t, \ - wm_scratch), \ - state_base_offset + offsetof(gen4_state_t, \ - ps_kernel_ ## kernel), \ - state_base_offset + offsetof(gen4_state_t, \ - sampler_state[i][j][k][l])); - + drm_intel_bo_unreference(cc_vp_bo); - for (i = 0; i < SAMPLER_STATE_FILTER_COUNT; i++) { - for (j = 0; j < SAMPLER_STATE_EXTEND_COUNT; j++) { - for (k = 0; k < SAMPLER_STATE_FILTER_COUNT; k++) { - for (l = 0; l < SAMPLER_STATE_EXTEND_COUNT; l++) { - SETUP_WM_STATE (nomask_affine, FALSE); - SETUP_WM_STATE (nomask_projective, FALSE); - SETUP_WM_STATE (maskca_affine, TRUE); - SETUP_WM_STATE (maskca_projective, TRUE); - SETUP_WM_STATE (maskca_srcalpha_affine, TRUE); - SETUP_WM_STATE (maskca_srcalpha_projective, TRUE); - SETUP_WM_STATE (masknoca_affine, TRUE); - SETUP_WM_STATE (masknoca_projective, TRUE); - } - } - } - } -#undef SETUP_WM_STATE + return cc_state_bo; } static uint32_t @@ -828,33 +895,36 @@ sampler_state_filter_from_picture (int filter) } static sampler_state_extend_t -sampler_state_extend_from_picture (int repeat) +sampler_state_extend_from_picture (int repeat_type) { - switch (repeat) { + switch (repeat_type) { case RepeatNone: return SAMPLER_STATE_EXTEND_NONE; case RepeatNormal: return SAMPLER_STATE_EXTEND_REPEAT; + case RepeatPad: + return SAMPLER_STATE_EXTEND_PAD; + case RepeatReflect: + return SAMPLER_STATE_EXTEND_REFLECT; default: return -1; } } /** - * Sets up the common fields for a surface state buffer for the given picture - * in the surface state buffer at index, and returns the offset within the - * state buffer for this entry. + * Sets up the common fields for a surface state buffer for the given + * picture in the given surface state buffer. */ -static unsigned int -i965_set_picture_surface_state(ScrnInfoPtr pScrn, struct brw_surface_state *ss, +static void +i965_set_picture_surface_state(dri_bo *ss_bo, int ss_index, PicturePtr pPicture, PixmapPtr pPixmap, Bool is_dst) { - I830Ptr pI830 = I830PTR(pScrn); - struct gen4_render_state *render_state= pI830->gen4_render_state; - gen4_state_t *card_state = render_state->card_state; + struct brw_surface_state_padded *ss; struct brw_surface_state local_ss; - uint32_t offset; + dri_bo *pixmap_bo = i830_get_pixmap_bo(pPixmap); + + ss = (struct brw_surface_state_padded *)ss_bo->virtual + ss_index; /* Since ss is a pointer to WC memory, do all of our bit operations * into a local temporary first. @@ -882,7 +952,10 @@ i965_set_picture_surface_state(ScrnInfoPtr pScrn, struct brw_surface_state *ss, local_ss.ss0.vert_line_stride_ofs = 0; local_ss.ss0.mipmap_layout_mode = 0; local_ss.ss0.render_cache_read_mode = 0; - local_ss.ss1.base_addr = intel_get_pixmap_offset(pPixmap); + if (pixmap_bo != NULL) + local_ss.ss1.base_addr = pixmap_bo->offset; + else + local_ss.ss1.base_addr = intel_get_pixmap_offset(pPixmap); local_ss.ss2.mip_count = 0; local_ss.ss2.render_target_rotation = 0; @@ -894,62 +967,52 @@ i965_set_picture_surface_state(ScrnInfoPtr pScrn, struct brw_surface_state *ss, memcpy(ss, &local_ss, sizeof(local_ss)); - offset = (char *)ss - (char *)card_state; - assert((offset & 31) == 0); + if (pixmap_bo != NULL) { + uint32_t write_domain, read_domains; - return offset; + if (is_dst) { + write_domain = I915_GEM_DOMAIN_RENDER; + read_domains = I915_GEM_DOMAIN_RENDER; + } else { + write_domain = 0; + read_domains = I915_GEM_DOMAIN_SAMPLER; + } + dri_bo_emit_reloc(ss_bo, read_domains, write_domain, + 0, + ss_index * sizeof(*ss) + + offsetof(struct brw_surface_state, ss1), + pixmap_bo); + } } -Bool -i965_prepare_composite(int op, PicturePtr pSrcPicture, - PicturePtr pMaskPicture, PicturePtr pDstPicture, - PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) +static void +i965_emit_composite_state(ScrnInfoPtr pScrn) { - ScrnInfoPtr pScrn = xf86Screens[pSrcPicture->pDrawable->pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); struct gen4_render_state *render_state= pI830->gen4_render_state; - gen4_state_t *card_state = render_state->card_state; - struct brw_surface_state_padded *ss; - uint32_t sf_state_offset; - sampler_state_filter_t src_filter, mask_filter; - sampler_state_extend_t src_extend, mask_extend; - Bool is_affine_src, is_affine_mask, is_affine; + gen4_composite_op *composite_op = &render_state->composite_op; + int op = composite_op->op; + PicturePtr pMaskPicture = composite_op->mask_picture; + PicturePtr pDstPicture = composite_op->dest_picture; + PixmapPtr pMask = composite_op->mask; + PixmapPtr pDst = composite_op->dest; + sampler_state_filter_t src_filter = composite_op->src_filter; + sampler_state_filter_t mask_filter = composite_op->mask_filter; + sampler_state_extend_t src_extend = composite_op->src_extend; + sampler_state_extend_t mask_extend = composite_op->mask_extend; + Bool is_affine = composite_op->is_affine; int urb_vs_start, urb_vs_size; int urb_gs_start, urb_gs_size; int urb_clip_start, urb_clip_size; int urb_sf_start, urb_sf_size; int urb_cs_start, urb_cs_size; - char *state_base; - int state_base_offset; uint32_t src_blend, dst_blend; - uint32_t *binding_table; + dri_bo *binding_table_bo = composite_op->binding_table_bo; - IntelEmitInvarientState(pScrn); - *pI830->last_3d = LAST_3D_RENDER; + render_state->needs_state_emit = FALSE; - pI830->scale_units[0][0] = pSrc->drawable.width; - pI830->scale_units[0][1] = pSrc->drawable.height; - - pI830->transform[0] = pSrcPicture->transform; - is_affine_src = i830_transform_is_affine (pI830->transform[0]); - - if (!pMask) { - pI830->transform[1] = NULL; - pI830->scale_units[1][0] = -1; - pI830->scale_units[1][1] = -1; - is_affine_mask = TRUE; - } else { - pI830->transform[1] = pMaskPicture->transform; - pI830->scale_units[1][0] = pMask->drawable.width; - pI830->scale_units[1][1] = pMask->drawable.height; - is_affine_mask = i830_transform_is_affine (pI830->transform[1]); - } - - is_affine = is_affine_src && is_affine_mask; - - state_base_offset = pI830->gen4_render_state_mem->offset; - assert((state_base_offset & 63) == 0); - state_base = (char *)(pI830->FbBase + state_base_offset); + IntelEmitInvarientState(pScrn); + pI830->last_3d = LAST_3D_RENDER; urb_vs_start = 0; urb_vs_size = URB_VS_ENTRIES * URB_VS_ENTRY_SIZE; @@ -965,67 +1028,6 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture, i965_get_blend_cntl(op, pMaskPicture, pDstPicture->format, &src_blend, &dst_blend); - if ((render_state->binding_table_index + 3 >= - ARRAY_SIZE(card_state->binding_table)) || - (render_state->surface_state_index + 3 >= - ARRAY_SIZE(card_state->surface_state))) - { - i830WaitSync(pScrn); - render_state->binding_table_index = 0; - render_state->surface_state_index = 0; - render_state->vb_offset = 0; - } - - binding_table = card_state->binding_table + - render_state->binding_table_index; - ss = card_state->surface_state + render_state->surface_state_index; - /* We only use 2 or 3 entries, but the table has to be 32-byte - * aligned. - */ - render_state->binding_table_index += 8; - render_state->surface_state_index += (pMask != NULL) ? 3 : 2; - - /* Set up and bind the state buffer for the destination surface */ - binding_table[0] = state_base_offset + - i965_set_picture_surface_state(pScrn, - &ss[0].state, - pDstPicture, pDst, TRUE); - - /* Set up and bind the source surface state buffer */ - binding_table[1] = state_base_offset + - i965_set_picture_surface_state(pScrn, - &ss[1].state, - pSrcPicture, pSrc, FALSE); - if (pMask) { - /* Set up and bind the mask surface state buffer */ - binding_table[2] = state_base_offset + - i965_set_picture_surface_state(pScrn, - &ss[2].state, - pMaskPicture, pMask, - FALSE); - } else { - binding_table[2] = 0; - } - - src_filter = sampler_state_filter_from_picture (pSrcPicture->filter); - if (src_filter < 0) - I830FALLBACK ("Bad src filter 0x%x\n", pSrcPicture->filter); - src_extend = sampler_state_extend_from_picture (pSrcPicture->repeat); - if (src_extend < 0) - I830FALLBACK ("Bad src repeat 0x%x\n", pSrcPicture->repeat); - - if (pMaskPicture) { - mask_filter = sampler_state_filter_from_picture (pMaskPicture->filter); - if (mask_filter < 0) - I830FALLBACK ("Bad mask filter 0x%x\n", pMaskPicture->filter); - mask_extend = sampler_state_extend_from_picture (pMaskPicture->repeat); - if (mask_extend < 0) - I830FALLBACK ("Bad mask repeat 0x%x\n", pMaskPicture->repeat); - } else { - mask_filter = SAMPLER_STATE_FILTER_NEAREST; - mask_extend = SAMPLER_STATE_EXTEND_NONE; - } - /* Begin the long sequence of commands needed to set up the 3D * rendering pipe */ @@ -1041,7 +1043,7 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture, BEGIN_BATCH(12); /* Match Mesa driver setup */ - if (IS_GM45(pI830) || IS_G4X(pI830)) + if (IS_G4X(pI830)) OUT_BATCH(NEW_PIPELINE_SELECT | PIPELINE_SELECT_3D); else OUT_BATCH(BRW_PIPELINE_SELECT | PIPELINE_SELECT_3D); @@ -1064,7 +1066,8 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture, /* Set system instruction pointer */ OUT_BATCH(BRW_STATE_SIP | 0); - OUT_BATCH(state_base_offset + offsetof(gen4_state_t, sip_kernel)); + OUT_RELOC(render_state->sip_kernel_bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, 0); OUT_BATCH(MI_NOOP); ADVANCE_BATCH(); } @@ -1086,8 +1089,7 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture, OUT_BATCH(0); /* clip */ OUT_BATCH(0); /* sf */ /* Only the PS uses the binding table */ - assert((((unsigned char *)binding_table - pI830->FbBase) & 31) == 0); - OUT_BATCH((unsigned char *)binding_table - pI830->FbBase); + OUT_RELOC(binding_table_bo, I915_GEM_DOMAIN_SAMPLER, 0, 0); /* The drawing rectangle clipping is always on. Set it to values that * shouldn't do any clipping. @@ -1105,68 +1107,26 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture, /* Set the pointers to the 3d pipeline state */ OUT_BATCH(BRW_3DSTATE_PIPELINED_POINTERS | 5); - assert((offsetof(gen4_state_t, vs_state) & 31) == 0); - OUT_BATCH(state_base_offset + offsetof(gen4_state_t, vs_state)); + OUT_RELOC(render_state->vs_state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); OUT_BATCH(BRW_GS_DISABLE); /* disable GS, resulting in passthrough */ OUT_BATCH(BRW_CLIP_DISABLE); /* disable CLIP, resulting in passthrough */ - if (pMask) { - sf_state_offset = state_base_offset + - offsetof(gen4_state_t, sf_state_mask); + OUT_RELOC(render_state->sf_mask_state_bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, 0); } else { - sf_state_offset = state_base_offset + - offsetof(gen4_state_t, sf_state); + OUT_RELOC(render_state->sf_state_bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, 0); } - assert((sf_state_offset & 31) == 0); - OUT_BATCH(sf_state_offset); - - /* Shorthand for long array lookup */ -#define OUT_WM_KERNEL(kernel) do { \ - uint32_t offset = state_base_offset + \ - offsetof(gen4_state_t, \ - wm_state_ ## kernel \ - [src_filter] \ - [src_extend] \ - [mask_filter] \ - [mask_extend]); \ - assert((offset & 31) == 0); \ - OUT_BATCH(offset); \ -} while (0) - if (pMask) { - if (pMaskPicture->componentAlpha && - PICT_FORMAT_RGB(pMaskPicture->format)) - { - if (i965_blend_op[op].src_alpha) { - if (is_affine) - OUT_WM_KERNEL(maskca_srcalpha_affine); - else - OUT_WM_KERNEL(maskca_srcalpha_projective); - } else { - if (is_affine) - OUT_WM_KERNEL(maskca_affine); - else - OUT_WM_KERNEL(maskca_projective); - } - } else { - if (is_affine) - OUT_WM_KERNEL(masknoca_affine); - else - OUT_WM_KERNEL(masknoca_projective); - } - } else { - if (is_affine) - OUT_WM_KERNEL(nomask_affine); - else - OUT_WM_KERNEL(nomask_projective); - } -#undef OUT_WM_KERNEL + OUT_RELOC(render_state->wm_state_bo[composite_op->wm_kernel] + [src_filter][src_extend] + [mask_filter][mask_extend], + I915_GEM_DOMAIN_INSTRUCTION, 0, 0); - /* 64 byte aligned */ - assert((offsetof(gen4_state_t, - cc_state[src_blend][dst_blend]) & 63) == 0); - OUT_BATCH(state_base_offset + - offsetof(gen4_state_t, cc_state[src_blend][dst_blend])); + OUT_RELOC(render_state->cc_state_bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, + offsetof(struct gen4_cc_unit_state, + cc_state[src_blend][dst_blend])); /* URB fence */ OUT_BATCH(BRW_URB_FENCE | @@ -1261,27 +1221,237 @@ i965_prepare_composite(int op, PicturePtr pSrcPicture, ErrorF("try to sync to show any errors...\n"); I830Sync(pScrn); #endif +} + +/** + * Returns whether the current set of composite state plus vertex buffer is + * expected to fit in the aperture. + */ +static Bool +i965_composite_check_aperture(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + struct gen4_render_state *render_state= pI830->gen4_render_state; + gen4_composite_op *composite_op = &render_state->composite_op; + drm_intel_bo *bo_table[] = { + pI830->batch_bo, + composite_op->binding_table_bo, + render_state->vertex_buffer_bo, + render_state->vs_state_bo, + render_state->sf_state_bo, + render_state->sf_mask_state_bo, + render_state->wm_state_bo[composite_op->wm_kernel] + [composite_op->src_filter] + [composite_op->src_extend] + [composite_op->mask_filter] + [composite_op->mask_extend], + render_state->cc_state_bo, + render_state->sip_kernel_bo, + }; + + return drm_intel_bufmgr_check_aperture_space(bo_table, + ARRAY_SIZE(bo_table)) == 0; +} + +Bool +i965_prepare_composite(int op, PicturePtr pSrcPicture, + PicturePtr pMaskPicture, PicturePtr pDstPicture, + PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) +{ + ScrnInfoPtr pScrn = xf86Screens[pSrcPicture->pDrawable->pScreen->myNum]; + I830Ptr pI830 = I830PTR(pScrn); + struct gen4_render_state *render_state= pI830->gen4_render_state; + gen4_composite_op *composite_op = &render_state->composite_op; + uint32_t *binding_table; + drm_intel_bo *binding_table_bo, *surface_state_bo; + + if (composite_op->src_filter < 0) + I830FALLBACK("Bad src filter 0x%x\n", pSrcPicture->filter); + composite_op->src_extend = + sampler_state_extend_from_picture(pSrcPicture->repeatType); + if (composite_op->src_extend < 0) + I830FALLBACK("Bad src repeat 0x%x\n", pSrcPicture->repeatType); + + if (pMaskPicture) { + composite_op->mask_filter = + sampler_state_filter_from_picture(pMaskPicture->filter); + if (composite_op->mask_filter < 0) + I830FALLBACK("Bad mask filter 0x%x\n", pMaskPicture->filter); + composite_op->mask_extend = + sampler_state_extend_from_picture(pMaskPicture->repeatType); + if (composite_op->mask_extend < 0) + I830FALLBACK("Bad mask repeat 0x%x\n", pMaskPicture->repeatType); + } else { + composite_op->mask_filter = SAMPLER_STATE_FILTER_NEAREST; + composite_op->mask_extend = SAMPLER_STATE_EXTEND_NONE; + } + + /* Set up the surface states. */ + surface_state_bo = dri_bo_alloc(pI830->bufmgr, "surface_state", + 3 * sizeof (brw_surface_state_padded), + 4096); + if (dri_bo_map(surface_state_bo, 1) != 0) + return FALSE; + /* Set up the state buffer for the destination surface */ + i965_set_picture_surface_state(surface_state_bo, 0, + pDstPicture, pDst, TRUE); + /* Set up the source surface state buffer */ + i965_set_picture_surface_state(surface_state_bo, 1, + pSrcPicture, pSrc, FALSE); + if (pMask) { + /* Set up the mask surface state buffer */ + i965_set_picture_surface_state(surface_state_bo, 2, + pMaskPicture, pMask, + FALSE); + } + dri_bo_unmap(surface_state_bo); + + /* Set up the binding table of surface indices to surface state. */ + binding_table_bo = dri_bo_alloc(pI830->bufmgr, "binding_table", + 3 * sizeof(uint32_t), 4096); + if (dri_bo_map (binding_table_bo, 1) != 0) { + dri_bo_unreference(surface_state_bo); + return FALSE; + } + + binding_table = binding_table_bo->virtual; + binding_table[0] = intel_emit_reloc(binding_table_bo, + 0 * sizeof(uint32_t), + surface_state_bo, + 0 * sizeof(brw_surface_state_padded), + I915_GEM_DOMAIN_INSTRUCTION, 0); + + binding_table[1] = intel_emit_reloc(binding_table_bo, + 1 * sizeof(uint32_t), + surface_state_bo, + 1 * sizeof(brw_surface_state_padded), + I915_GEM_DOMAIN_INSTRUCTION, 0); + + if (pMask) { + binding_table[2] = intel_emit_reloc(binding_table_bo, + 2 * sizeof(uint32_t), + surface_state_bo, + 2 * sizeof(brw_surface_state_padded), + I915_GEM_DOMAIN_INSTRUCTION, 0); + } else { + binding_table[2] = 0; + } + dri_bo_unmap(binding_table_bo); + /* All refs to surface_state are now contained in binding_table_bo. */ + drm_intel_bo_unreference(surface_state_bo); + + composite_op->op = op; + composite_op->source_picture = pSrcPicture; + composite_op->mask_picture = pMaskPicture; + composite_op->dest_picture = pDstPicture; + composite_op->source = pSrc; + composite_op->mask = pMask; + composite_op->dest = pDst; + drm_intel_bo_unreference(composite_op->binding_table_bo); + composite_op->binding_table_bo = binding_table_bo; + composite_op->src_filter = + sampler_state_filter_from_picture(pSrcPicture->filter); + + pI830->scale_units[0][0] = pSrc->drawable.width; + pI830->scale_units[0][1] = pSrc->drawable.height; + + pI830->transform[0] = pSrcPicture->transform; + composite_op->is_affine = + i830_transform_is_affine(pI830->transform[0]); + + if (!pMask) { + pI830->transform[1] = NULL; + pI830->scale_units[1][0] = -1; + pI830->scale_units[1][1] = -1; + } else { + pI830->transform[1] = pMaskPicture->transform; + pI830->scale_units[1][0] = pMask->drawable.width; + pI830->scale_units[1][1] = pMask->drawable.height; + composite_op->is_affine |= + i830_transform_is_affine(pI830->transform[1]); + } + + + if (pMask) { + if (pMaskPicture->componentAlpha && + PICT_FORMAT_RGB(pMaskPicture->format)) + { + if (i965_blend_op[op].src_alpha) { + if (composite_op->is_affine) + composite_op->wm_kernel = WM_KERNEL_MASKCA_SRCALPHA_AFFINE; + else + composite_op->wm_kernel = WM_KERNEL_MASKCA_SRCALPHA_PROJECTIVE; + } else { + if (composite_op->is_affine) + composite_op->wm_kernel = WM_KERNEL_MASKCA_AFFINE; + else + composite_op->wm_kernel = WM_KERNEL_MASKCA_PROJECTIVE; + } + } else { + if (composite_op->is_affine) + composite_op->wm_kernel = WM_KERNEL_MASKNOCA_AFFINE; + else + composite_op->wm_kernel = WM_KERNEL_MASKNOCA_PROJECTIVE; + } + } else { + if (composite_op->is_affine) + composite_op->wm_kernel = WM_KERNEL_NOMASK_AFFINE; + else + composite_op->wm_kernel = WM_KERNEL_NOMASK_PROJECTIVE; + } + + if (!i965_composite_check_aperture(pScrn)) { + intel_batch_flush(pScrn, FALSE); + if (!i965_composite_check_aperture(pScrn)) + I830FALLBACK("Couldn't fit render operation in aperture\n"); + } + + render_state->needs_state_emit = TRUE; + return TRUE; } +static drm_intel_bo * +i965_get_vb_space(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + struct gen4_render_state *render_state = pI830->gen4_render_state; + + /* If the vertex buffer is too full, then we free the old and a new one + * gets made. + */ + if (render_state->vb_offset + VERTEX_FLOATS_PER_COMPOSITE > + VERTEX_BUFFER_SIZE) { + drm_intel_bo_unreference(render_state->vertex_buffer_bo); + render_state->vertex_buffer_bo = NULL; + } + + /* Alloc a new vertex buffer if necessary. */ + if (render_state->vertex_buffer_bo == NULL) { + render_state->vertex_buffer_bo = drm_intel_bo_alloc(pI830->bufmgr, "vb", + sizeof(gen4_vertex_buffer), + 4096); + render_state->vb_offset = 0; + } + + drm_intel_bo_reference(render_state->vertex_buffer_bo); + return render_state->vertex_buffer_bo; +} + void i965_composite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY, int dstX, int dstY, int w, int h) { ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum]; I830Ptr pI830 = I830PTR(pScrn); - gen4_state_t *card_state = pI830->gen4_render_state->card_state; struct gen4_render_state *render_state = pI830->gen4_render_state; Bool has_mask; - Bool is_affine_src, is_affine_mask, is_affine; float src_x[3], src_y[3], src_w[3], mask_x[3], mask_y[3], mask_w[3]; - float *vb = card_state->vb; int i; + drm_intel_bo *vb_bo; + float vb[18]; + Bool is_affine = render_state->composite_op.is_affine; - is_affine_src = i830_transform_is_affine (pI830->transform[0]); - is_affine_mask = i830_transform_is_affine (pI830->transform[1]); - is_affine = is_affine_src && is_affine_mask; - if (is_affine) { if (!i830_get_transformed_coordinates(srcX, srcY, @@ -1352,12 +1522,10 @@ i965_composite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY, } } - if (render_state->vb_offset + MAX_VERTEX_PER_COMPOSITE >= ARRAY_SIZE(card_state->vb)) { - i830WaitSync(pScrn); - render_state->vb_offset = 0; - } - - i = render_state->vb_offset; + vb_bo = i965_get_vb_space(pScrn); + if (vb_bo == NULL) + return; + i = 0; /* rect (x2,y2) */ vb[i++] = (float)(dstX + w); vb[i++] = (float)(dstY + h); @@ -1399,7 +1567,15 @@ i965_composite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY, if (!is_affine) vb[i++] = mask_w[0]; } - assert (i * 4 <= sizeof(card_state->vb)); + assert (i <= VERTEX_BUFFER_SIZE); + drm_intel_bo_subdata(vb_bo, render_state->vb_offset * 4, i * 4, vb); + + if (!i965_composite_check_aperture(pScrn)) + intel_batch_flush(pScrn, FALSE); + + intel_batch_start_atomic(pScrn, 200); + if (render_state->needs_state_emit) + i965_emit_composite_state(pScrn); BEGIN_BATCH(12); OUT_BATCH(MI_FLUSH); @@ -1408,8 +1584,7 @@ i965_composite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY, OUT_BATCH((0 << VB0_BUFFER_INDEX_SHIFT) | VB0_VERTEXDATA | (render_state->vertex_size << VB0_BUFFER_PITCH_SHIFT)); - OUT_BATCH(render_state->card_state_offset + offsetof(gen4_state_t, vb) + - render_state->vb_offset * 4); + OUT_RELOC(vb_bo, I915_GEM_DOMAIN_VERTEX, 0, render_state->vb_offset * 4); OUT_BATCH(3); OUT_BATCH(0); // ignore for VERTEXDATA, but still there @@ -1425,32 +1600,32 @@ i965_composite(PixmapPtr pDst, int srcX, int srcY, int maskX, int maskY, OUT_BATCH(0); /* index buffer offset, ignored */ ADVANCE_BATCH(); - render_state->vb_offset = i; + render_state->vb_offset += i; + drm_intel_bo_unreference(vb_bo); + + intel_batch_end_atomic(pScrn); #ifdef I830DEBUG ErrorF("sync after 3dprimitive\n"); I830Sync(pScrn); #endif - /* we must be sure that the pipeline is flushed before next exa draw, - because that will be new state, binding state and instructions*/ - { - BEGIN_BATCH(4); - OUT_BATCH(BRW_PIPE_CONTROL | - BRW_PIPE_CONTROL_NOWRITE | - BRW_PIPE_CONTROL_WC_FLUSH | - BRW_PIPE_CONTROL_IS_FLUSH | - (1 << 10) | /* XXX texture cache flush for BLC/CTG */ - 2); - OUT_BATCH(0); /* Destination address */ - OUT_BATCH(0); /* Immediate data low DW */ - OUT_BATCH(0); /* Immediate data high DW */ - ADVANCE_BATCH(); +} + +void +i965_batch_flush_notify(ScrnInfoPtr pScrn) +{ + I830Ptr pI830 = I830PTR(pScrn); + struct gen4_render_state *render_state = pI830->gen4_render_state; + + /* Once a batch is emitted, we never want to map again any buffer + * object being referenced by that batch, (which would be very + * expensive). */ + if (render_state->vertex_buffer_bo) { + dri_bo_unreference (render_state->vertex_buffer_bo); + render_state->vertex_buffer_bo = NULL; } - /* Mark sync so we can wait for it before setting up the VB on the next - * rectangle. - */ - i830MarkSync(pScrn); + render_state->needs_state_emit = TRUE; } /** @@ -1461,17 +1636,75 @@ gen4_render_state_init(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); struct gen4_render_state *render_state; + int i, j, k, l, m; + drm_intel_bo *sf_kernel_bo, *sf_kernel_mask_bo; + drm_intel_bo *border_color_bo; if (pI830->gen4_render_state == NULL) pI830->gen4_render_state = calloc(sizeof(*render_state), 1); render_state = pI830->gen4_render_state; + render_state->vb_offset = 0; + + render_state->vs_state_bo = gen4_create_vs_unit_state(pScrn); + + /* Set up the two SF states (one for blending with a mask, one without) */ + sf_kernel_bo = intel_bo_alloc_for_data(pScrn, + sf_kernel_static, + sizeof(sf_kernel_static), + "sf kernel"); + sf_kernel_mask_bo = intel_bo_alloc_for_data(pScrn, + sf_kernel_mask_static, + sizeof(sf_kernel_mask_static), + "sf mask kernel"); + render_state->sf_state_bo = gen4_create_sf_state(pScrn, sf_kernel_bo); + render_state->sf_mask_state_bo = gen4_create_sf_state(pScrn, + sf_kernel_mask_bo); + drm_intel_bo_unreference(sf_kernel_bo); + drm_intel_bo_unreference(sf_kernel_mask_bo); + + for (m = 0; m < WM_KERNEL_COUNT; m++) { + render_state->wm_kernel_bo[m] = + intel_bo_alloc_for_data(pScrn, + wm_kernels[m].data, wm_kernels[m].size, + "WM kernel"); + } - render_state->card_state_offset = pI830->gen4_render_state_mem->offset; - render_state->card_state = (gen4_state_t *) - (pI830->FbBase + render_state->card_state_offset); + /* Set up the WM states: each filter/extend type for source and mask, per + * kernel. + */ + border_color_bo = sampler_border_color_create(pScrn); + for (i = 0; i < SAMPLER_STATE_FILTER_COUNT; i++) { + for (j = 0; j < SAMPLER_STATE_EXTEND_COUNT; j++) { + for (k = 0; k < SAMPLER_STATE_FILTER_COUNT; k++) { + for (l = 0; l < SAMPLER_STATE_EXTEND_COUNT; l++) { + drm_intel_bo *sampler_state_bo; + + sampler_state_bo = + gen4_create_sampler_state(pScrn, + i, j, + k, l, + border_color_bo); + + for (m = 0; m < WM_KERNEL_COUNT; m++) { + render_state->wm_state_bo[m][i][j][k][l] = + gen4_create_wm_state(pScrn, + wm_kernels[m].has_mask, + render_state->wm_kernel_bo[m], + sampler_state_bo); + } + drm_intel_bo_unreference(sampler_state_bo); + } + } + } + } + drm_intel_bo_unreference(border_color_bo); - gen4_state_init(render_state); + render_state->cc_state_bo = gen4_create_cc_unit_state(pScrn); + render_state->sip_kernel_bo = intel_bo_alloc_for_data(pScrn, + sip_kernel_static, + sizeof(sip_kernel_static), + "sip kernel"); } /** @@ -1481,12 +1714,37 @@ void gen4_render_state_cleanup(ScrnInfoPtr pScrn) { I830Ptr pI830 = I830PTR(pScrn); + struct gen4_render_state *render_state= pI830->gen4_render_state; + int i, j, k, l, m; - pI830->gen4_render_state->card_state = NULL; -} + if (render_state->vertex_buffer_bo) { + dri_bo_unreference (render_state->vertex_buffer_bo); + render_state->vertex_buffer_bo = NULL; + } -unsigned int -gen4_render_state_size(ScrnInfoPtr pScrn) -{ - return sizeof(gen4_state_t); + drm_intel_bo_unreference(render_state->vs_state_bo); + render_state->vs_state_bo = NULL; + drm_intel_bo_unreference(render_state->sf_state_bo); + render_state->sf_state_bo = NULL; + drm_intel_bo_unreference(render_state->sf_mask_state_bo); + render_state->sf_mask_state_bo = NULL; + + for (i = 0; i < WM_KERNEL_COUNT; i++) { + drm_intel_bo_unreference(render_state->wm_kernel_bo[i]); + render_state->wm_kernel_bo[i] = NULL; + } + + for (i = 0; i < SAMPLER_STATE_FILTER_COUNT; i++) + for (j = 0; j < SAMPLER_STATE_EXTEND_COUNT; j++) + for (k = 0; k < SAMPLER_STATE_FILTER_COUNT; k++) + for (l = 0; l < SAMPLER_STATE_EXTEND_COUNT; l++) + for (m = 0; m < WM_KERNEL_COUNT; m++) { + drm_intel_bo_unreference(render_state->wm_state_bo[m][i][j][k][l]); + render_state->wm_state_bo[m][i][j][k][l] = NULL; + } + + drm_intel_bo_unreference(render_state->cc_state_bo); + render_state->cc_state_bo = NULL; + drm_intel_bo_unreference(render_state->sip_kernel_bo); + render_state->sip_kernel_bo = NULL; } diff --git a/driver/xf86-video-intel/src/i965_video.c b/driver/xf86-video-intel/src/i965_video.c index 4c79259bf..7b52de714 100644 --- a/driver/xf86-video-intel/src/i965_video.c +++ b/driver/xf86-video-intel/src/i965_video.c @@ -37,6 +37,7 @@ #include "i830.h" #include "i830_video.h" +#include "i830_hwmc.h" #include "brw_defines.h" #include "brw_structs.h" #include <string.h> @@ -153,221 +154,158 @@ brw_debug (ScrnInfoPtr pScrn, char *when) #define WATCH_WIZ 0 #define WATCH_STATS 0 -void -I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, - RegionPtr dstRegion, - short width, short height, int video_pitch, - int x1, int y1, int x2, int y2, - short src_w, short src_h, - short drw_w, short drw_h, - PixmapPtr pPixmap) +static void +i965_pre_draw_debug(ScrnInfoPtr scrn) { - I830Ptr pI830 = I830PTR(pScrn); - BoxPtr pbox; - int nbox, dxo, dyo, pix_xoff, pix_yoff; - int urb_vs_start, urb_vs_size; - int urb_gs_start, urb_gs_size; - int urb_clip_start, urb_clip_size; - int urb_sf_start, urb_sf_size; - int urb_cs_start, urb_cs_size; - struct brw_surface_state *dest_surf_state; - struct brw_surface_state *src_surf_state[6]; - struct brw_sampler_state *src_sampler_state[6]; - struct brw_vs_unit_state *vs_state; - struct brw_sf_unit_state *sf_state; - struct brw_wm_unit_state *wm_state; - struct brw_cc_unit_state *cc_state; - struct brw_cc_viewport *cc_viewport; - struct brw_instruction *sf_kernel; - struct brw_instruction *ps_kernel; - struct brw_instruction *sip_kernel; - float *vb; - float src_scale_x, src_scale_y; - uint32_t *binding_table; - Bool first_output = TRUE; - int dest_surf_offset, src_surf_offset[6], src_sampler_offset[6], vs_offset; - int sf_offset, wm_offset, cc_offset, vb_offset, cc_viewport_offset; - int wm_scratch_offset; - int sf_kernel_offset, ps_kernel_offset, sip_kernel_offset; - int binding_table_offset; - int next_offset, total_state_size; - int vb_size = (4 * 4) * 4; /* 4 DWORDS per vertex */ - char *state_base; - int state_base_offset; - int src_surf; - int n_src_surf; - uint32_t src_surf_format; - uint32_t src_surf_base[6]; - int src_width[6]; - int src_height[6]; - int src_pitch[6]; - int wm_binding_table_entries; - const uint32_t *ps_kernel_static; - int ps_kernel_static_size; +#if 0 + I830Ptr pI830 = I830PTR(scrn); +#endif #if 0 - ErrorF("BroadwaterDisplayVideoTextured: %dx%d (pitch %d)\n", width, height, - video_pitch); + ErrorF ("before EU_ATT 0x%08x%08x EU_ATT_DATA 0x%08x%08x\n", + INREG(BRW_EU_ATT_1), INREG(BRW_EU_ATT_0), + INREG(BRW_EU_ATT_DATA_1), INREG(BRW_EU_ATT_DATA_0)); + + OUTREG(BRW_VF_CTL, + BRW_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID | + BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX | + BRW_VF_CTL_SNAPSHOT_ENABLE); + OUTREG(BRW_VF_STRG_VAL, 0); #endif - /* enable debug */ - OUTREG (INST_PM, - (1 << (16 + 4)) | - (1 << 4)); #if 0 - ErrorF ("INST_PM 0x%08x\n", INREG(INST_PM)); + OUTREG(BRW_VS_CTL, + BRW_VS_CTL_SNAPSHOT_ALL_THREADS | + BRW_VS_CTL_SNAPSHOT_MUX_VALID_COUNT | + BRW_VS_CTL_THREAD_SNAPSHOT_ENABLE); + + OUTREG(BRW_VS_STRG_VAL, 0); +#endif + +#if WATCH_SF + OUTREG(BRW_SF_CTL, + BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT | + BRW_SF_CTL_SNAPSHOT_ALL_THREADS | + BRW_SF_CTL_THREAD_SNAPSHOT_ENABLE); + OUTREG(BRW_SF_STRG_VAL, 0); +#endif + +#if WATCH_WIZ + OUTREG(BRW_WIZ_CTL, + BRW_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE | + BRW_WIZ_CTL_SNAPSHOT_ALL_THREADS | + BRW_WIZ_CTL_SNAPSHOT_ENABLE); + OUTREG(BRW_WIZ_STRG_VAL, + (box_x1) | (box_y1 << 16)); #endif - src_surf_base[0] = pPriv->YBuf0offset; - src_surf_base[1] = pPriv->YBuf0offset; - src_surf_base[2] = pPriv->VBuf0offset; - src_surf_base[3] = pPriv->VBuf0offset; - src_surf_base[4] = pPriv->UBuf0offset; - src_surf_base[5] = pPriv->UBuf0offset; #if 0 - ErrorF ("base 0 0x%x base 1 0x%x base 2 0x%x\n", - src_surf_base[0], src_surf_base[1], src_surf_base[2]); + OUTREG(BRW_TS_CTL, + BRW_TS_CTL_SNAPSHOT_MESSAGE_ERROR | + BRW_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS | + BRW_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS | + BRW_TS_CTL_SNAPSHOT_ENABLE); #endif - - switch (id) { - case FOURCC_UYVY: - src_surf_format = BRW_SURFACEFORMAT_YCRCB_SWAPY; - n_src_surf = 1; - ps_kernel_static = &ps_kernel_packed_static[0][0]; - ps_kernel_static_size = sizeof (ps_kernel_packed_static); - src_width[0] = width; - src_height[0] = height; - src_pitch[0] = video_pitch; - break; - case FOURCC_YUY2: - src_surf_format = BRW_SURFACEFORMAT_YCRCB_NORMAL; - ps_kernel_static = &ps_kernel_packed_static[0][0]; - ps_kernel_static_size = sizeof (ps_kernel_packed_static); - src_width[0] = width; - src_height[0] = height; - src_pitch[0] = video_pitch; - n_src_surf = 1; - break; - case FOURCC_I420: - case FOURCC_YV12: - src_surf_format = BRW_SURFACEFORMAT_R8_UNORM; - ps_kernel_static = &ps_kernel_planar_static[0][0]; - ps_kernel_static_size = sizeof (ps_kernel_planar_static); - src_width[1] = src_width[0] = width; - src_width[1] = src_height[0] = height; - src_pitch[1] = src_pitch[0] = video_pitch * 2; - src_width[4] = src_width[5] = src_width[2] = src_width[3] = width / 2; - src_height[4] = src_height[5] = src_height[2] = src_height[3] = height / 2; - src_pitch[4] = src_pitch[5] = src_pitch[2] = src_pitch[3] = video_pitch; - n_src_surf = 6; - break; - default: - return; - } - wm_binding_table_entries = 1 + n_src_surf; +} - IntelEmitInvarientState(pScrn); - *pI830->last_3d = LAST_3D_VIDEO; - - next_offset = 0; - - /* Set up our layout of state in framebuffer. First the general state: */ - vs_offset = ALIGN(next_offset, 64); - next_offset = vs_offset + sizeof(*vs_state); - sf_offset = ALIGN(next_offset, 32); - next_offset = sf_offset + sizeof(*sf_state); - wm_offset = ALIGN(next_offset, 32); - next_offset = wm_offset + sizeof(*wm_state); - wm_scratch_offset = ALIGN(next_offset, 1024); - next_offset = wm_scratch_offset + 1024 * PS_MAX_THREADS; - cc_offset = ALIGN(next_offset, 32); - next_offset = cc_offset + sizeof(*cc_state); - - sf_kernel_offset = ALIGN(next_offset, 64); - next_offset = sf_kernel_offset + sizeof (sf_kernel_static); - ps_kernel_offset = ALIGN(next_offset, 64); - next_offset = ps_kernel_offset + ps_kernel_static_size; - sip_kernel_offset = ALIGN(next_offset, 64); - next_offset = sip_kernel_offset + sizeof (sip_kernel_static); - cc_viewport_offset = ALIGN(next_offset, 32); - next_offset = cc_viewport_offset + sizeof(*cc_viewport); - - for (src_surf = 0; src_surf < n_src_surf; src_surf++) { - src_sampler_offset[src_surf] = ALIGN(next_offset, 32); - next_offset = src_sampler_offset[src_surf] + sizeof(struct brw_sampler_state); +static void +i965_post_draw_debug(ScrnInfoPtr scrn) +{ +#if 0 + I830Ptr pI830 = I830PTR(scrn); +#endif + +#if 0 + for (j = 0; j < 100000; j++) { + ctl = INREG(BRW_VF_CTL); + if (ctl & BRW_VF_CTL_SNAPSHOT_COMPLETE) + break; } - - /* Align VB to native size of elements, for safety */ - vb_offset = ALIGN(next_offset, 8); - next_offset = vb_offset + vb_size; - /* And then the general state: */ - dest_surf_offset = ALIGN(next_offset, 32); - next_offset = dest_surf_offset + sizeof(*dest_surf_state); - - for (src_surf = 0; src_surf < n_src_surf; src_surf++) { - src_surf_offset[src_surf] = ALIGN(next_offset, 32); - next_offset = src_surf_offset[src_surf] + sizeof(struct brw_surface_state); + rdata = INREG(BRW_VF_RDATA); + OUTREG(BRW_VF_CTL, 0); + ErrorF ("VF_CTL: 0x%08x VF_RDATA: 0x%08x\n", ctl, rdata); +#endif + +#if 0 + for (j = 0; j < 1000000; j++) { + ctl = INREG(BRW_VS_CTL); + if (ctl & BRW_VS_CTL_SNAPSHOT_COMPLETE) + break; + } + + rdata = INREG(BRW_VS_RDATA); + for (k = 0; k <= 3; k++) { + OUTREG(BRW_VS_CTL, + BRW_VS_CTL_SNAPSHOT_COMPLETE | + (k << 8)); + rdata = INREG(BRW_VS_RDATA); + ErrorF ("VS_CTL: 0x%08x VS_RDATA(%d): 0x%08x\n", ctl, k, rdata); } - - binding_table_offset = ALIGN(next_offset, 32); - next_offset = binding_table_offset + (wm_binding_table_entries * 4); - /* Allocate an area in framebuffer for our state layout we just set up */ - total_state_size = next_offset; - assert (total_state_size < BRW_LINEAR_EXTRA); + OUTREG(BRW_VS_CTL, 0); +#endif - /* - * Use the extra space allocated at the end of the Xv buffer - */ - state_base_offset = pPriv->extra_offset; - state_base_offset = ALIGN(state_base_offset, 64); +#if WATCH_SF + for (j = 0; j < 1000000; j++) { + ctl = INREG(BRW_SF_CTL); + if (ctl & BRW_SF_CTL_SNAPSHOT_COMPLETE) + break; + } - state_base = (char *)(pI830->FbBase + state_base_offset); - /* Set up our pointers to state structures in framebuffer. It would - * probably be a good idea to fill these structures out in system memory - * and then dump them there, instead. - */ - vs_state = (void *)(state_base + vs_offset); - sf_state = (void *)(state_base + sf_offset); - wm_state = (void *)(state_base + wm_offset); - cc_state = (void *)(state_base + cc_offset); - sf_kernel = (void *)(state_base + sf_kernel_offset); - ps_kernel = (void *)(state_base + ps_kernel_offset); - sip_kernel = (void *)(state_base + sip_kernel_offset); - - cc_viewport = (void *)(state_base + cc_viewport_offset); - dest_surf_state = (void *)(state_base + dest_surf_offset); - - for (src_surf = 0; src_surf < n_src_surf; src_surf++) - { - src_surf_state[src_surf] = (void *)(state_base + src_surf_offset[src_surf]); - src_sampler_state[src_surf] = (void *)(state_base + src_sampler_offset[src_surf]); + for (k = 0; k <= 7; k++) { + OUTREG(BRW_SF_CTL, + BRW_SF_CTL_SNAPSHOT_COMPLETE | + (k << 8)); + rdata = INREG(BRW_SF_RDATA); + ErrorF("SF_CTL: 0x%08x SF_RDATA(%d): 0x%08x\n", ctl, k, rdata); } - binding_table = (void *)(state_base + binding_table_offset); - vb = (void *)(state_base + vb_offset); + + OUTREG(BRW_SF_CTL, 0); +#endif + +#if WATCH_WIZ + for (j = 0; j < 100000; j++) { + ctl = INREG(BRW_WIZ_CTL); + if (ctl & BRW_WIZ_CTL_SNAPSHOT_COMPLETE) + break; + } + + rdata = INREG(BRW_WIZ_RDATA); + OUTREG(BRW_WIZ_CTL, 0); + ErrorF("WIZ_CTL: 0x%08x WIZ_RDATA: 0x%08x\n", ctl, rdata); +#endif #if 0 - ErrorF("vs: 0x%08x\n", state_base_offset + vs_offset); - ErrorF("wm: 0x%08x\n", state_base_offset + wm_offset); - ErrorF("sf: 0x%08x\n", state_base_offset + sf_offset); - ErrorF("cc: 0x%08x\n", state_base_offset + cc_offset); - ErrorF("sf kernel: 0x%08x\n", state_base_offset + sf_kernel_offset); - ErrorF("ps kernel: 0x%08x\n", state_base_offset + ps_kernel_offset); - ErrorF("sip kernel: 0x%08x\n", state_base_offset + sip_kernel_offset); - ErrorF("cc_vp: 0x%08x\n", state_base_offset + cc_viewport_offset); - ErrorF("src sampler: 0x%08x\n", state_base_offset + src_sampler_offset); - ErrorF("vb: 0x%08x\n", state_base_offset + vb_offset); - ErrorF("dst surf: 0x%08x\n", state_base_offset + dest_surf_offset); - ErrorF("src surf: 0x%08x\n", state_base_offset + src_surf_offset); - ErrorF("binding table: 0x%08x\n", state_base_offset + binding_table_offset); + for (j = 0; j < 100000; j++) { + ctl = INREG(BRW_TS_CTL); + if (ctl & BRW_TS_CTL_SNAPSHOT_COMPLETE) + break; + } + + rdata = INREG(BRW_TS_RDATA); + OUTREG(BRW_TS_CTL, 0); + ErrorF("TS_CTL: 0x%08x TS_RDATA: 0x%08x\n", ctl, rdata); + + ErrorF("after EU_ATT 0x%08x%08x EU_ATT_DATA 0x%08x%08x\n", + INREG(BRW_EU_ATT_1), INREG(BRW_EU_ATT_0), + INREG(BRW_EU_ATT_DATA_1), INREG(BRW_EU_ATT_DATA_0)); #endif - /* For 3D, the VS must have 8, 12, 16, 24, or 32 VUEs allocated to it. - * A VUE consists of a 256-bit vertex header followed by the vertex data, - * which in our case is 4 floats (128 bits), thus a single 512-bit URB - * entry. - */ +#if 0 + for (j = 0; j < 256; j++) { + OUTREG(BRW_TD_CTL, j << BRW_TD_CTL_MUX_SHIFT); + rdata = INREG(BRW_TD_RDATA); + ErrorF ("TD_RDATA(%d): 0x%08x\n", j, rdata); + } +#endif +} + +/* For 3D, the VS must have 8, 12, 16, 24, or 32 VUEs allocated to it. + * A VUE consists of a 256-bit vertex header followed by the vertex data, + * which in our case is 4 floats (128 bits), thus a single 512-bit URB + * entry. + */ #define URB_VS_ENTRIES 8 #define URB_VS_ENTRY_SIZE 1 @@ -377,59 +315,49 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, #define URB_CLIP_ENTRIES 0 #define URB_CLIP_ENTRY_SIZE 0 - /* The SF kernel we use outputs only 4 256-bit registers, leading to an - * entry size of 2 512-bit URBs. We don't need to have many entries to - * output as we're generally working on large rectangles and don't care - * about having WM threads running on different rectangles simultaneously. - */ +/* The SF kernel we use outputs only 4 256-bit registers, leading to an + * entry size of 2 512-bit URBs. We don't need to have many entries to + * output as we're generally working on large rectangles and don't care + * about having WM threads running on different rectangles simultaneously. + */ #define URB_SF_ENTRIES 1 #define URB_SF_ENTRY_SIZE 2 #define URB_CS_ENTRIES 0 #define URB_CS_ENTRY_SIZE 0 - urb_vs_start = 0; - urb_vs_size = URB_VS_ENTRIES * URB_VS_ENTRY_SIZE; - urb_gs_start = urb_vs_start + urb_vs_size; - urb_gs_size = URB_GS_ENTRIES * URB_GS_ENTRY_SIZE; - urb_clip_start = urb_gs_start + urb_gs_size; - urb_clip_size = URB_CLIP_ENTRIES * URB_CLIP_ENTRY_SIZE; - urb_sf_start = urb_clip_start + urb_clip_size; - urb_sf_size = URB_SF_ENTRIES * URB_SF_ENTRY_SIZE; - urb_cs_start = urb_sf_start + urb_sf_size; - urb_cs_size = URB_CS_ENTRIES * URB_CS_ENTRY_SIZE; - - /* We'll be poking the state buffers that could be in use by the 3d - * hardware here, but we should have synced the 3D engine already in - * I830PutImage. - */ - - memset (cc_viewport, 0, sizeof (*cc_viewport)); - cc_viewport->min_depth = -1.e35; - cc_viewport->max_depth = 1.e35; +static int +intel_alloc_and_map(I830Ptr i830, char *name, int size, + drm_intel_bo **bop, void *virtualp) +{ + drm_intel_bo *bo; + + bo = drm_intel_bo_alloc(i830->bufmgr, name, size, 4096); + if (!bo) + return -1; + if (drm_intel_bo_map(bo, TRUE) != 0) { + drm_intel_bo_unreference(bo); + return -1; + } + *bop = bo; + *(void **) virtualp = bo->virtual; + memset (bo->virtual, 0, size); + return 0; +} - /* Color calculator state */ - memset(cc_state, 0, sizeof(*cc_state)); - cc_state->cc0.stencil_enable = 0; /* disable stencil */ - cc_state->cc2.depth_test = 0; /* disable depth test */ - cc_state->cc2.logicop_enable = 1; /* enable logic op */ - cc_state->cc3.ia_blend_enable = 1; /* blend alpha just like colors */ - cc_state->cc3.blend_enable = 0; /* disable color blend */ - cc_state->cc3.alpha_test = 0; /* disable alpha test */ - cc_state->cc4.cc_viewport_state_offset = (state_base_offset + - cc_viewport_offset) >> 5; - cc_state->cc5.dither_enable = 0; /* disable dither */ - cc_state->cc5.logicop_func = 0xc; /* WHITE */ - cc_state->cc5.statistics_enable = 1; - cc_state->cc5.ia_blend_function = BRW_BLENDFUNCTION_ADD; - cc_state->cc5.ia_src_blend_factor = BRW_BLENDFACTOR_ONE; - cc_state->cc5.ia_dest_blend_factor = BRW_BLENDFACTOR_ONE; +static drm_intel_bo * +i965_create_dst_surface_state(ScrnInfoPtr scrn, + PixmapPtr pixmap) +{ + I830Ptr pI830 = I830PTR(scrn); + struct brw_surface_state *dest_surf_state; + drm_intel_bo *pixmap_bo = i830_get_pixmap_bo(pixmap); + drm_intel_bo *surf_bo; - /* Upload system kernel */ - memcpy (sip_kernel, sip_kernel_static, sizeof (sip_kernel_static)); + if (intel_alloc_and_map(pI830, "textured video surface state", 4096, + &surf_bo, &dest_surf_state) != 0) + return NULL; - /* Set up the state buffer for the destination surface */ - memset(dest_surf_state, 0, sizeof(*dest_surf_state)); dest_surf_state->ss0.surface_type = BRW_SURFACE_2D; dest_surf_state->ss0.data_return_format = BRW_SURFACERETURNFORMAT_FLOAT32; if (pI830->cpp == 2) { @@ -447,76 +375,187 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, dest_surf_state->ss0.mipmap_layout_mode = 0; dest_surf_state->ss0.render_cache_read_mode = 0; - dest_surf_state->ss1.base_addr = intel_get_pixmap_offset(pPixmap); - dest_surf_state->ss2.height = pScrn->virtualY - 1; - dest_surf_state->ss2.width = pScrn->virtualX - 1; + if (pixmap_bo != NULL) + dest_surf_state->ss1.base_addr = + intel_emit_reloc(surf_bo, offsetof(struct brw_surface_state, ss1), + pixmap_bo, 0, + I915_GEM_DOMAIN_SAMPLER, 0); + else + dest_surf_state->ss1.base_addr = intel_get_pixmap_offset(pixmap); + + dest_surf_state->ss2.height = scrn->virtualY - 1; + dest_surf_state->ss2.width = scrn->virtualX - 1; dest_surf_state->ss2.mip_count = 0; dest_surf_state->ss2.render_target_rotation = 0; - dest_surf_state->ss3.pitch = intel_get_pixmap_pitch(pPixmap) - 1; - dest_surf_state->ss3.tiled_surface = i830_pixmap_tiled(pPixmap); + dest_surf_state->ss3.pitch = intel_get_pixmap_pitch(pixmap) - 1; + dest_surf_state->ss3.tiled_surface = i830_pixmap_tiled(pixmap); dest_surf_state->ss3.tile_walk = 0; /* TileX */ - for (src_surf = 0; src_surf < n_src_surf; src_surf++) - { - /* Set up the source surface state buffer */ - memset(src_surf_state[src_surf], 0, sizeof(struct brw_surface_state)); - src_surf_state[src_surf]->ss0.surface_type = BRW_SURFACE_2D; - src_surf_state[src_surf]->ss0.surface_format = src_surf_format; - src_surf_state[src_surf]->ss0.writedisable_alpha = 0; - src_surf_state[src_surf]->ss0.writedisable_red = 0; - src_surf_state[src_surf]->ss0.writedisable_green = 0; - src_surf_state[src_surf]->ss0.writedisable_blue = 0; - src_surf_state[src_surf]->ss0.color_blend = 1; - src_surf_state[src_surf]->ss0.vert_line_stride = 0; - src_surf_state[src_surf]->ss0.vert_line_stride_ofs = 0; - src_surf_state[src_surf]->ss0.mipmap_layout_mode = 0; - src_surf_state[src_surf]->ss0.render_cache_read_mode = 0; - - src_surf_state[src_surf]->ss1.base_addr = src_surf_base[src_surf]; - src_surf_state[src_surf]->ss2.width = src_width[src_surf] - 1; - src_surf_state[src_surf]->ss2.height = src_height[src_surf] - 1; - src_surf_state[src_surf]->ss2.mip_count = 0; - src_surf_state[src_surf]->ss2.render_target_rotation = 0; - src_surf_state[src_surf]->ss3.pitch = src_pitch[src_surf] - 1; + drm_intel_bo_unmap(surf_bo); + return surf_bo; +} + +static drm_intel_bo * +i965_create_src_surface_state(ScrnInfoPtr scrn, + drm_intel_bo *src_bo, + uint32_t src_offset, + int src_width, + int src_height, + int src_pitch, + uint32_t src_surf_format) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *surface_bo; + struct brw_surface_state *src_surf_state; + + if (intel_alloc_and_map(pI830, "textured video surface state", 4096, + &surface_bo, &src_surf_state) != 0) + return NULL; + + /* Set up the source surface state buffer */ + src_surf_state->ss0.surface_type = BRW_SURFACE_2D; + src_surf_state->ss0.surface_format = src_surf_format; + src_surf_state->ss0.writedisable_alpha = 0; + src_surf_state->ss0.writedisable_red = 0; + src_surf_state->ss0.writedisable_green = 0; + src_surf_state->ss0.writedisable_blue = 0; + src_surf_state->ss0.color_blend = 1; + src_surf_state->ss0.vert_line_stride = 0; + src_surf_state->ss0.vert_line_stride_ofs = 0; + src_surf_state->ss0.mipmap_layout_mode = 0; + src_surf_state->ss0.render_cache_read_mode = 0; + + src_surf_state->ss2.width = src_width - 1; + src_surf_state->ss2.height = src_height - 1; + src_surf_state->ss2.mip_count = 0; + src_surf_state->ss2.render_target_rotation = 0; + src_surf_state->ss3.pitch = src_pitch - 1; + + if (src_bo) { + src_surf_state->ss1.base_addr = + intel_emit_reloc(surface_bo, + offsetof(struct brw_surface_state, ss1), + src_bo, src_offset, + I915_GEM_DOMAIN_SAMPLER, 0); + } else { + src_surf_state->ss1.base_addr = src_offset; } - /* FIXME: account for tiling if we ever do it */ - /* Set up a binding table for our two surfaces. Only the PS will use it */ - /* XXX: are these offset from the right place? */ - binding_table[0] = state_base_offset + dest_surf_offset; - - for (src_surf = 0; src_surf < n_src_surf; src_surf++) - binding_table[1 + src_surf] = state_base_offset + src_surf_offset[src_surf]; + drm_intel_bo_unmap(surface_bo); + return surface_bo; +} - /* Set up the packed YUV source sampler. Doesn't do colorspace conversion. - */ - for (src_surf = 0; src_surf < n_src_surf; src_surf++) - { - memset(src_sampler_state[src_surf], 0, sizeof(struct brw_sampler_state)); - src_sampler_state[src_surf]->ss0.min_filter = BRW_MAPFILTER_LINEAR; - src_sampler_state[src_surf]->ss0.mag_filter = BRW_MAPFILTER_LINEAR; - src_sampler_state[src_surf]->ss1.r_wrap_mode = BRW_TEXCOORDMODE_CLAMP; - src_sampler_state[src_surf]->ss1.s_wrap_mode = BRW_TEXCOORDMODE_CLAMP; - src_sampler_state[src_surf]->ss1.t_wrap_mode = BRW_TEXCOORDMODE_CLAMP; - } +static drm_intel_bo * +i965_create_binding_table(ScrnInfoPtr scrn, drm_intel_bo **surf_bos, int n_surf) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *bind_bo; + uint32_t *binding_table; + int i; + + /* Set up a binding table for our surfaces. Only the PS will use it */ + + if (intel_alloc_and_map(pI830, "textured video binding table", 4096, + &bind_bo, &binding_table) != 0) + return NULL; + + for (i = 0; i < n_surf; i++) + binding_table[i] = intel_emit_reloc(bind_bo, i * sizeof(uint32_t), + surf_bos[i], 0, + I915_GEM_DOMAIN_INSTRUCTION, 0); + + drm_intel_bo_unmap(bind_bo); + return bind_bo; +} + +static drm_intel_bo * +i965_create_sampler_state(ScrnInfoPtr scrn) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *sampler_bo; + struct brw_sampler_state *sampler_state; + + if (intel_alloc_and_map(pI830, "textured video sampler state", 4096, + &sampler_bo, &sampler_state) != 0) + return NULL; + + sampler_state->ss0.min_filter = BRW_MAPFILTER_LINEAR; + sampler_state->ss0.mag_filter = BRW_MAPFILTER_LINEAR; + sampler_state->ss1.r_wrap_mode = BRW_TEXCOORDMODE_CLAMP; + sampler_state->ss1.s_wrap_mode = BRW_TEXCOORDMODE_CLAMP; + sampler_state->ss1.t_wrap_mode = BRW_TEXCOORDMODE_CLAMP; + + drm_intel_bo_unmap(sampler_bo); + return sampler_bo; +} + +static drm_intel_bo * +i965_create_vs_state(ScrnInfoPtr scrn) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *vs_bo; + struct brw_vs_unit_state *vs_state; + + if (intel_alloc_and_map(pI830, "textured video vs state", 4096, + &vs_bo, &vs_state) != 0) + return NULL; /* Set up the vertex shader to be disabled (passthrough) */ - memset(vs_state, 0, sizeof(*vs_state)); vs_state->thread4.nr_urb_entries = URB_VS_ENTRIES; vs_state->thread4.urb_entry_allocation_size = URB_VS_ENTRY_SIZE - 1; vs_state->vs6.vs_enable = 0; vs_state->vs6.vert_cache_disable = 1; + drm_intel_bo_unmap(vs_bo); + return vs_bo; +} + +static drm_intel_bo * +i965_create_program(ScrnInfoPtr scrn, const uint32_t *program, + unsigned int program_size) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *prog_bo; + + prog_bo = drm_intel_bo_alloc(pI830->bufmgr, "textured video program", + program_size, 4096); + if (!prog_bo) + return NULL; + + drm_intel_bo_subdata(prog_bo, 0, program_size, program); + + return prog_bo; +} + +static drm_intel_bo * +i965_create_sf_state(ScrnInfoPtr scrn) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *sf_bo, *kernel_bo; + struct brw_sf_unit_state *sf_state; + + kernel_bo = i965_create_program(scrn, &sf_kernel_static[0][0], + sizeof(sf_kernel_static)); + + if (!kernel_bo) + return NULL; + + if (intel_alloc_and_map(pI830, "textured video sf state", 4096, + &sf_bo, &sf_state) != 0) + { + drm_intel_bo_unreference(kernel_bo); + return NULL; + } + /* Set up the SF kernel to do coord interp: for each attribute, * calculate dA/dx and dA/dy. Hand these interpolation coefficients * back to SF which then hands pixels off to WM. */ - - memcpy (sf_kernel, sf_kernel_static, sizeof (sf_kernel_static)); - memset(sf_state, 0, sizeof(*sf_state)); - sf_state->thread0.kernel_start_pointer = - (state_base_offset + sf_kernel_offset) >> 6; sf_state->thread0.grf_reg_count = BRW_GRF_BLOCKS(SF_KERNEL_NUM_GRF); + sf_state->thread0.kernel_start_pointer = + intel_emit_reloc(sf_bo, offsetof(struct brw_sf_unit_state, thread0), + kernel_bo, sf_state->thread0.grf_reg_count << 1, + I915_GEM_DOMAIN_INSTRUCTION, 0) >> 6; sf_state->sf1.single_program_flow = 1; /* XXX */ sf_state->sf1.binding_table_entry_count = 0; sf_state->sf1.thread_priority = 0; @@ -543,18 +582,47 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, sf_state->sf6.dest_org_vbias = 0x8; sf_state->sf6.dest_org_hbias = 0x8; - memcpy (ps_kernel, ps_kernel_static, ps_kernel_static_size); - memset (wm_state, 0, sizeof (*wm_state)); - wm_state->thread0.kernel_start_pointer = - (state_base_offset + ps_kernel_offset) >> 6; + drm_intel_bo_unmap(sf_bo); + return sf_bo; +} + +static drm_intel_bo * +i965_create_wm_state(ScrnInfoPtr scrn, drm_intel_bo *sampler_bo, Bool is_packed) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *wm_bo, *kernel_bo; + struct brw_wm_unit_state *wm_state; + + if (is_packed) { + kernel_bo = i965_create_program(scrn, &ps_kernel_packed_static[0][0], + sizeof(ps_kernel_packed_static)); + } else { + kernel_bo = i965_create_program(scrn, &ps_kernel_planar_static[0][0], + sizeof(ps_kernel_planar_static)); + } + if (!kernel_bo) + return NULL; + + if (intel_alloc_and_map(pI830, "textured video wm state", sizeof (*wm_state), + &wm_bo, &wm_state)) { + drm_intel_bo_unreference(kernel_bo); + return NULL; + } + wm_state->thread0.grf_reg_count = BRW_GRF_BLOCKS(PS_KERNEL_NUM_GRF); + wm_state->thread0.kernel_start_pointer = + intel_emit_reloc(wm_bo, offsetof(struct brw_wm_unit_state, thread0), + kernel_bo, wm_state->thread0.grf_reg_count << 1, + I915_GEM_DOMAIN_INSTRUCTION, 0) >> 6; wm_state->thread1.single_program_flow = 1; /* XXX */ - wm_state->thread1.binding_table_entry_count = 1 + n_src_surf; + if (is_packed) + wm_state->thread1.binding_table_entry_count = 2; + else + wm_state->thread1.binding_table_entry_count = 7; /* Though we never use the scratch space in our WM kernel, it has to be * set, and the minimum allocation is 1024 bytes. */ - wm_state->thread2.scratch_space_base_pointer = (state_base_offset + - wm_scratch_offset) >> 10; + wm_state->thread2.scratch_space_base_pointer = 0; wm_state->thread2.per_thread_scratch_space = 0; /* 1024 bytes */ wm_state->thread3.dispatch_grf_start_reg = 3; /* XXX */ wm_state->thread3.const_urb_entry_read_length = 0; @@ -562,8 +630,10 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, wm_state->thread3.urb_entry_read_length = 1; /* XXX */ wm_state->thread3.urb_entry_read_offset = 0; /* XXX */ wm_state->wm4.stats_enable = 1; - wm_state->wm4.sampler_state_pointer = (state_base_offset + - src_sampler_offset[0]) >> 5; + wm_state->wm4.sampler_state_pointer = + intel_emit_reloc(wm_bo, offsetof(struct brw_wm_unit_state, wm4), + sampler_bo, 0, + I915_GEM_DOMAIN_INSTRUCTION, 0) >> 5; wm_state->wm4.sampler_count = 1; /* 1-4 samplers used */ wm_state->wm5.max_threads = PS_MAX_THREADS - 1; wm_state->wm5.thread_dispatch_enable = 1; @@ -571,160 +641,413 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, wm_state->wm5.enable_8_pix = 0; wm_state->wm5.early_depth_test = 1; - { - BEGIN_BATCH(2); - OUT_BATCH(MI_FLUSH | - MI_STATE_INSTRUCTION_CACHE_FLUSH | - BRW_MI_GLOBAL_SNAPSHOT_RESET); - OUT_BATCH(MI_NOOP); - ADVANCE_BATCH(); + drm_intel_bo_unreference(kernel_bo); + + drm_intel_bo_unmap(wm_bo); + return wm_bo; +} + +static drm_intel_bo * +i965_create_cc_vp_state(ScrnInfoPtr scrn) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *cc_vp_bo; + struct brw_cc_viewport *cc_viewport; + + if (intel_alloc_and_map(pI830, "textured video cc viewport", 4096, + &cc_vp_bo, &cc_viewport) != 0) + return NULL; + + cc_viewport->min_depth = -1.e35; + cc_viewport->max_depth = 1.e35; + + drm_intel_bo_unmap(cc_vp_bo); + return cc_vp_bo; +} + +static drm_intel_bo * +i965_create_cc_state(ScrnInfoPtr scrn) +{ + I830Ptr pI830 = I830PTR(scrn); + drm_intel_bo *cc_bo, *cc_vp_bo; + struct brw_cc_unit_state *cc_state; + + cc_vp_bo = i965_create_cc_vp_state(scrn); + if (!cc_vp_bo) + return NULL; + + if (intel_alloc_and_map(pI830, "textured video cc state", sizeof(*cc_state), + &cc_bo, &cc_state) != 0) { + drm_intel_bo_unreference(cc_vp_bo); + return NULL; } + /* Color calculator state */ + memset(cc_state, 0, sizeof(*cc_state)); + cc_state->cc0.stencil_enable = 0; /* disable stencil */ + cc_state->cc2.depth_test = 0; /* disable depth test */ + cc_state->cc2.logicop_enable = 1; /* enable logic op */ + cc_state->cc3.ia_blend_enable = 1; /* blend alpha just like colors */ + cc_state->cc3.blend_enable = 0; /* disable color blend */ + cc_state->cc3.alpha_test = 0; /* disable alpha test */ + cc_state->cc4.cc_viewport_state_offset = + intel_emit_reloc(cc_bo, offsetof(struct brw_cc_unit_state, cc4), + cc_vp_bo, 0, + I915_GEM_DOMAIN_INSTRUCTION, 0) >> 5; + cc_state->cc5.dither_enable = 0; /* disable dither */ + cc_state->cc5.logicop_func = 0xc; /* WHITE */ + cc_state->cc5.statistics_enable = 1; + cc_state->cc5.ia_blend_function = BRW_BLENDFUNCTION_ADD; + cc_state->cc5.ia_src_blend_factor = BRW_BLENDFACTOR_ONE; + cc_state->cc5.ia_dest_blend_factor = BRW_BLENDFACTOR_ONE; + + drm_intel_bo_unmap(cc_bo); + + drm_intel_bo_unreference(cc_vp_bo); + return cc_bo; +} + +static void +i965_emit_video_setup(ScrnInfoPtr pScrn, drm_intel_bo *bind_bo, int n_src_surf) +{ + I830Ptr pI830 = I830PTR(pScrn); + int urb_vs_start, urb_vs_size; + int urb_gs_start, urb_gs_size; + int urb_clip_start, urb_clip_size; + int urb_sf_start, urb_sf_size; + int urb_cs_start, urb_cs_size; + + IntelEmitInvarientState(pScrn); + pI830->last_3d = LAST_3D_VIDEO; + + urb_vs_start = 0; + urb_vs_size = URB_VS_ENTRIES * URB_VS_ENTRY_SIZE; + urb_gs_start = urb_vs_start + urb_vs_size; + urb_gs_size = URB_GS_ENTRIES * URB_GS_ENTRY_SIZE; + urb_clip_start = urb_gs_start + urb_gs_size; + urb_clip_size = URB_CLIP_ENTRIES * URB_CLIP_ENTRY_SIZE; + urb_sf_start = urb_clip_start + urb_clip_size; + urb_sf_size = URB_SF_ENTRIES * URB_SF_ENTRY_SIZE; + urb_cs_start = urb_sf_start + urb_sf_size; + urb_cs_size = URB_CS_ENTRIES * URB_CS_ENTRY_SIZE; + + BEGIN_BATCH(2); + OUT_BATCH(MI_FLUSH | + MI_STATE_INSTRUCTION_CACHE_FLUSH | + BRW_MI_GLOBAL_SNAPSHOT_RESET); + OUT_BATCH(MI_NOOP); + ADVANCE_BATCH(); + /* brw_debug (pScrn, "before base address modify"); */ - { - BEGIN_BATCH(12); - /* Match Mesa driver setup */ - if (IS_GM45(pI830) || IS_G4X(pI830)) - OUT_BATCH(NEW_PIPELINE_SELECT | PIPELINE_SELECT_3D); - else - OUT_BATCH(BRW_PIPELINE_SELECT | PIPELINE_SELECT_3D); - - /* Mesa does this. Who knows... */ - OUT_BATCH(BRW_CS_URB_STATE | 0); - OUT_BATCH((0 << 4) | /* URB Entry Allocation Size */ - (0 << 0)); /* Number of URB Entries */ - - /* Zero out the two base address registers so all offsets are - * absolute - */ - OUT_BATCH(BRW_STATE_BASE_ADDRESS | 4); - OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* Generate state base address */ - OUT_BATCH(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); - /* media object state max addr, disabled */ - OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY); - - /* Set system instruction pointer */ - OUT_BATCH(BRW_STATE_SIP | 0); - /* system instruction pointer */ - OUT_BATCH(state_base_offset + sip_kernel_offset); + BEGIN_BATCH(12); + /* Match Mesa driver setup */ + if (IS_G4X(pI830)) + OUT_BATCH(NEW_PIPELINE_SELECT | PIPELINE_SELECT_3D); + else + OUT_BATCH(BRW_PIPELINE_SELECT | PIPELINE_SELECT_3D); + + /* Mesa does this. Who knows... */ + OUT_BATCH(BRW_CS_URB_STATE | 0); + OUT_BATCH((0 << 4) | /* URB Entry Allocation Size */ + (0 << 0)); /* Number of URB Entries */ + + /* Zero out the two base address registers so all offsets are + * absolute + */ + OUT_BATCH(BRW_STATE_BASE_ADDRESS | 4); + OUT_BATCH(0 | BASE_ADDRESS_MODIFY); /* Generate state base address */ + OUT_BATCH(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); + /* media object state max addr, disabled */ + OUT_BATCH(0x10000000 | BASE_ADDRESS_MODIFY); + + /* Set system instruction pointer */ + OUT_BATCH(BRW_STATE_SIP | 0); + /* system instruction pointer */ + OUT_RELOC(pI830->video.gen4_sip_kernel_bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + + OUT_BATCH(MI_NOOP); + ADVANCE_BATCH(); - OUT_BATCH(MI_NOOP); - ADVANCE_BATCH(); + /* brw_debug (pScrn, "after base address modify"); */ + + BEGIN_BATCH(38); + /* Enable VF statistics */ + OUT_BATCH(BRW_3DSTATE_VF_STATISTICS | 1); + + /* Pipe control */ + OUT_BATCH(BRW_PIPE_CONTROL | + BRW_PIPE_CONTROL_NOWRITE | + BRW_PIPE_CONTROL_IS_FLUSH | + 2); + OUT_BATCH(0); /* Destination address */ + OUT_BATCH(0); /* Immediate data low DW */ + OUT_BATCH(0); /* Immediate data high DW */ + + /* Binding table pointers */ + OUT_BATCH(BRW_3DSTATE_BINDING_TABLE_POINTERS | 4); + OUT_BATCH(0); /* vs */ + OUT_BATCH(0); /* gs */ + OUT_BATCH(0); /* clip */ + OUT_BATCH(0); /* sf */ + /* Only the PS uses the binding table */ + OUT_RELOC(bind_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + + /* Blend constant color (magenta is fun) */ + OUT_BATCH(BRW_3DSTATE_CONSTANT_COLOR | 3); + OUT_BATCH(float_to_uint (1.0)); + OUT_BATCH(float_to_uint (0.0)); + OUT_BATCH(float_to_uint (1.0)); + OUT_BATCH(float_to_uint (1.0)); + + /* The drawing rectangle clipping is always on. Set it to values that + * shouldn't do any clipping. + */ + OUT_BATCH(BRW_3DSTATE_DRAWING_RECTANGLE | 2); /* XXX 3 for BLC or CTG */ + OUT_BATCH(0x00000000); /* ymin, xmin */ + OUT_BATCH((pScrn->virtualX - 1) | + (pScrn->virtualY - 1) << 16); /* ymax, xmax */ + OUT_BATCH(0x00000000); /* yorigin, xorigin */ + + /* skip the depth buffer */ + /* skip the polygon stipple */ + /* skip the polygon stipple offset */ + /* skip the line stipple */ + + /* Set the pointers to the 3d pipeline state */ + OUT_BATCH(BRW_3DSTATE_PIPELINED_POINTERS | 5); + OUT_RELOC(pI830->video.gen4_vs_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + /* disable GS, resulting in passthrough */ + OUT_BATCH(BRW_GS_DISABLE); + /* disable CLIP, resulting in passthrough */ + OUT_BATCH(BRW_CLIP_DISABLE); + OUT_RELOC(pI830->video.gen4_sf_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + if (n_src_surf == 1) + OUT_RELOC(pI830->video.gen4_wm_packed_bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + else + OUT_RELOC(pI830->video.gen4_wm_planar_bo, + I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + OUT_RELOC(pI830->video.gen4_cc_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + + /* URB fence */ + OUT_BATCH(BRW_URB_FENCE | + UF0_CS_REALLOC | + UF0_SF_REALLOC | + UF0_CLIP_REALLOC | + UF0_GS_REALLOC | + UF0_VS_REALLOC | + 1); + OUT_BATCH(((urb_clip_start + urb_clip_size) << UF1_CLIP_FENCE_SHIFT) | + ((urb_gs_start + urb_gs_size) << UF1_GS_FENCE_SHIFT) | + ((urb_vs_start + urb_vs_size) << UF1_VS_FENCE_SHIFT)); + OUT_BATCH(((urb_cs_start + urb_cs_size) << UF2_CS_FENCE_SHIFT) | + ((urb_sf_start + urb_sf_size) << UF2_SF_FENCE_SHIFT)); + + /* Constant buffer state */ + OUT_BATCH(BRW_CS_URB_STATE | 0); + OUT_BATCH(((URB_CS_ENTRY_SIZE - 1) << 4) | + (URB_CS_ENTRIES << 0)); + + /* Set up our vertex elements, sourced from the single vertex buffer. */ + OUT_BATCH(BRW_3DSTATE_VERTEX_ELEMENTS | 3); + /* offset 0: X,Y -> {X, Y, 1.0, 1.0} */ + OUT_BATCH((0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) | + VE0_VALID | + (BRW_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) | + (0 << VE0_OFFSET_SHIFT)); + OUT_BATCH((BRW_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) | + (BRW_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) | + (BRW_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) | + (BRW_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) | + (0 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT)); + /* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */ + OUT_BATCH((0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) | + VE0_VALID | + (BRW_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) | + (8 << VE0_OFFSET_SHIFT)); + OUT_BATCH((BRW_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) | + (BRW_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) | + (BRW_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) | + (BRW_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) | + (4 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT)); + + OUT_BATCH(MI_NOOP); /* pad to quadword */ + ADVANCE_BATCH(); +} + +void +I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, + RegionPtr dstRegion, + short width, short height, int video_pitch, + int x1, int y1, int x2, int y2, + short src_w, short src_h, + short drw_w, short drw_h, + PixmapPtr pPixmap) +{ + I830Ptr pI830 = I830PTR(pScrn); + BoxPtr pbox; + int nbox, dxo, dyo, pix_xoff, pix_yoff; + float src_scale_x, src_scale_y; + int src_surf, i; + int n_src_surf; + uint32_t src_surf_format; + uint32_t src_surf_base[6]; + int src_width[6]; + int src_height[6]; + int src_pitch[6]; + drm_intel_bo *bind_bo, *surf_bos[7]; + +#if 0 + ErrorF("BroadwaterDisplayVideoTextured: %dx%d (pitch %d)\n", width, height, + video_pitch); +#endif + +#if 0 + /* enable debug */ + OUTREG (INST_PM, + (1 << (16 + 4)) | + (1 << 4)); + ErrorF ("INST_PM 0x%08x\n", INREG(INST_PM)); +#endif + + src_surf_base[0] = pPriv->YBuf0offset; + src_surf_base[1] = pPriv->YBuf0offset; + src_surf_base[2] = pPriv->VBuf0offset; + src_surf_base[3] = pPriv->VBuf0offset; + src_surf_base[4] = pPriv->UBuf0offset; + src_surf_base[5] = pPriv->UBuf0offset; +#if 0 + ErrorF ("base 0 0x%x base 1 0x%x base 2 0x%x\n", + src_surf_base[0], src_surf_base[1], src_surf_base[2]); +#endif + + switch (id) { + case FOURCC_UYVY: + src_surf_format = BRW_SURFACEFORMAT_YCRCB_SWAPY; + n_src_surf = 1; + src_width[0] = width; + src_height[0] = height; + src_pitch[0] = video_pitch; + break; + case FOURCC_YUY2: + src_surf_format = BRW_SURFACEFORMAT_YCRCB_NORMAL; + src_width[0] = width; + src_height[0] = height; + src_pitch[0] = video_pitch; + n_src_surf = 1; + break; +#ifdef INTEL_XVMC + case FOURCC_XVMC: +#endif + case FOURCC_I420: + case FOURCC_YV12: + src_surf_format = BRW_SURFACEFORMAT_R8_UNORM; + src_width[1] = src_width[0] = width; + src_height[1] = src_height[0] = height; + src_pitch[1] = src_pitch[0] = video_pitch * 2; + src_width[4] = src_width[5] = src_width[2] = src_width[3] = width / 2; + src_height[4] = src_height[5] = src_height[2] = src_height[3] = height / 2; + src_pitch[4] = src_pitch[5] = src_pitch[2] = src_pitch[3] = video_pitch; + n_src_surf = 6; + break; + default: + return; + } + +#if 0 + ErrorF("dst surf: 0x%08x\n", state_base_offset + dest_surf_offset); + ErrorF("src surf: 0x%08x\n", state_base_offset + src_surf_offset); +#endif + + /* We'll be poking the state buffers that could be in use by the 3d + * hardware here, but we should have synced the 3D engine already in + * I830PutImage. + */ + + /* Upload kernels */ + surf_bos[0] = i965_create_dst_surface_state(pScrn, pPixmap); + if (!surf_bos[0]) + return; + + for (src_surf = 0; src_surf < n_src_surf; src_surf++) { + drm_intel_bo *surf_bo = + i965_create_src_surface_state(pScrn, + pPriv->buf, + src_surf_base[src_surf], + src_width[src_surf], + src_height[src_surf], + src_pitch[src_surf], + src_surf_format); + if (!surf_bo) { + int q; + for(q = 0; q < src_surf + 1; q++) + drm_intel_bo_unreference(surf_bos[q]); + return; + } + surf_bos[src_surf + 1] = surf_bo; + } + bind_bo = i965_create_binding_table(pScrn, surf_bos, n_src_surf + 1); + for (i = 0; i < n_src_surf + 1; i++) { + drm_intel_bo_unreference(surf_bos[i]); + surf_bos[i] = NULL; } + if (!bind_bo) + return; - /* brw_debug (pScrn, "after base address modify"); */ + if (pI830->video.gen4_sampler_bo == NULL) + pI830->video.gen4_sampler_bo = i965_create_sampler_state(pScrn); + if (pI830->video.gen4_sip_kernel_bo == NULL) { + pI830->video.gen4_sip_kernel_bo = + i965_create_program(pScrn, &sip_kernel_static[0][0], + sizeof(sip_kernel_static)); + if (!pI830->video.gen4_sip_kernel_bo) { + drm_intel_bo_unreference(bind_bo); + return; + } + } - { - BEGIN_BATCH(42); - /* Enable VF statistics */ - OUT_BATCH(BRW_3DSTATE_VF_STATISTICS | 1); - - /* Pipe control */ - OUT_BATCH(BRW_PIPE_CONTROL | - BRW_PIPE_CONTROL_NOWRITE | - BRW_PIPE_CONTROL_IS_FLUSH | - 2); - OUT_BATCH(0); /* Destination address */ - OUT_BATCH(0); /* Immediate data low DW */ - OUT_BATCH(0); /* Immediate data high DW */ - - /* Binding table pointers */ - OUT_BATCH(BRW_3DSTATE_BINDING_TABLE_POINTERS | 4); - OUT_BATCH(0); /* vs */ - OUT_BATCH(0); /* gs */ - OUT_BATCH(0); /* clip */ - OUT_BATCH(0); /* sf */ - /* Only the PS uses the binding table */ - OUT_BATCH(state_base_offset + binding_table_offset); /* ps */ - - /* Blend constant color (magenta is fun) */ - OUT_BATCH(BRW_3DSTATE_CONSTANT_COLOR | 3); - OUT_BATCH(float_to_uint (1.0)); - OUT_BATCH(float_to_uint (0.0)); - OUT_BATCH(float_to_uint (1.0)); - OUT_BATCH(float_to_uint (1.0)); - - /* The drawing rectangle clipping is always on. Set it to values that - * shouldn't do any clipping. - */ - OUT_BATCH(BRW_3DSTATE_DRAWING_RECTANGLE | 2); /* XXX 3 for BLC or CTG */ - OUT_BATCH(0x00000000); /* ymin, xmin */ - OUT_BATCH((pScrn->virtualX - 1) | - (pScrn->virtualY - 1) << 16); /* ymax, xmax */ - OUT_BATCH(0x00000000); /* yorigin, xorigin */ - - /* skip the depth buffer */ - /* skip the polygon stipple */ - /* skip the polygon stipple offset */ - /* skip the line stipple */ - - /* Set the pointers to the 3d pipeline state */ - OUT_BATCH(BRW_3DSTATE_PIPELINED_POINTERS | 5); - OUT_BATCH(state_base_offset + vs_offset); /* 32 byte aligned */ - /* disable GS, resulting in passthrough */ - OUT_BATCH(BRW_GS_DISABLE); - /* disable CLIP, resulting in passthrough */ - OUT_BATCH(BRW_CLIP_DISABLE); - OUT_BATCH(state_base_offset + sf_offset); /* 32 byte aligned */ - OUT_BATCH(state_base_offset + wm_offset); /* 32 byte aligned */ - OUT_BATCH(state_base_offset + cc_offset); /* 64 byte aligned */ - - /* URB fence */ - OUT_BATCH(BRW_URB_FENCE | - UF0_CS_REALLOC | - UF0_SF_REALLOC | - UF0_CLIP_REALLOC | - UF0_GS_REALLOC | - UF0_VS_REALLOC | - 1); - OUT_BATCH(((urb_clip_start + urb_clip_size) << UF1_CLIP_FENCE_SHIFT) | - ((urb_gs_start + urb_gs_size) << UF1_GS_FENCE_SHIFT) | - ((urb_vs_start + urb_vs_size) << UF1_VS_FENCE_SHIFT)); - OUT_BATCH(((urb_cs_start + urb_cs_size) << UF2_CS_FENCE_SHIFT) | - ((urb_sf_start + urb_sf_size) << UF2_SF_FENCE_SHIFT)); - - /* Constant buffer state */ - OUT_BATCH(BRW_CS_URB_STATE | 0); - OUT_BATCH(((URB_CS_ENTRY_SIZE - 1) << 4) | - (URB_CS_ENTRIES << 0)); - - /* Set up the pointer to our vertex buffer */ - OUT_BATCH(BRW_3DSTATE_VERTEX_BUFFERS | 2); - /* four 32-bit floats per vertex */ - OUT_BATCH((0 << VB0_BUFFER_INDEX_SHIFT) | - VB0_VERTEXDATA | - ((4 * 4) << VB0_BUFFER_PITCH_SHIFT)); - OUT_BATCH(state_base_offset + vb_offset); - OUT_BATCH(3); /* four corners to our rectangle */ - - /* Set up our vertex elements, sourced from the single vertex buffer. */ - OUT_BATCH(BRW_3DSTATE_VERTEX_ELEMENTS | 3); - /* offset 0: X,Y -> {X, Y, 1.0, 1.0} */ - OUT_BATCH((0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) | - VE0_VALID | - (BRW_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) | - (0 << VE0_OFFSET_SHIFT)); - OUT_BATCH((BRW_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) | - (BRW_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) | - (BRW_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) | - (BRW_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) | - (0 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT)); - /* offset 8: S0, T0 -> {S0, T0, 1.0, 1.0} */ - OUT_BATCH((0 << VE0_VERTEX_BUFFER_INDEX_SHIFT) | - VE0_VALID | - (BRW_SURFACEFORMAT_R32G32_FLOAT << VE0_FORMAT_SHIFT) | - (8 << VE0_OFFSET_SHIFT)); - OUT_BATCH((BRW_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_0_SHIFT) | - (BRW_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) | - (BRW_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) | - (BRW_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT) | - (4 << VE1_DESTINATION_ELEMENT_OFFSET_SHIFT)); - - OUT_BATCH(MI_NOOP); /* pad to quadword */ - ADVANCE_BATCH(); + if (pI830->video.gen4_vs_bo == NULL) { + pI830->video.gen4_vs_bo = i965_create_vs_state(pScrn); + if (!pI830->video.gen4_vs_bo) { + drm_intel_bo_unreference(bind_bo); + return; + } + } + if (pI830->video.gen4_sf_bo == NULL) { + pI830->video.gen4_sf_bo = i965_create_sf_state(pScrn); + if (!pI830->video.gen4_sf_bo) { + drm_intel_bo_unreference(bind_bo); + return; + } + } + if (pI830->video.gen4_wm_packed_bo == NULL) { + pI830->video.gen4_wm_packed_bo = + i965_create_wm_state(pScrn, pI830->video.gen4_sampler_bo, TRUE); + if (!pI830->video.gen4_wm_packed_bo) { + drm_intel_bo_unreference(bind_bo); + return; + } + } + + if (pI830->video.gen4_wm_planar_bo == NULL) { + pI830->video.gen4_wm_planar_bo = + i965_create_wm_state(pScrn, pI830->video.gen4_sampler_bo, FALSE); + if (!pI830->video.gen4_wm_planar_bo) { + drm_intel_bo_unreference(bind_bo); + return; + } + } + + if (pI830->video.gen4_cc_bo == NULL) { + pI830->video.gen4_cc_bo = i965_create_cc_state(pScrn); + if (!pI830->video.gen4_cc_bo) { + drm_intel_bo_unreference(bind_bo); + return; + } } /* Set up the offset for translating from the given region (in screen @@ -753,16 +1076,28 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, int box_x2 = pbox->x2; int box_y2 = pbox->y2; int i; - - if (!first_output) { - /* Since we use the same little vertex buffer over and over, sync - * for subsequent rectangles. - */ - i830WaitSync(pScrn); - } + drm_intel_bo *vb_bo; + float *vb; + drm_intel_bo *bo_table[] = { + NULL, /* vb_bo */ + pI830->batch_bo, + bind_bo, + pI830->video.gen4_sampler_bo, + pI830->video.gen4_sip_kernel_bo, + pI830->video.gen4_vs_bo, + pI830->video.gen4_sf_bo, + pI830->video.gen4_wm_packed_bo, + pI830->video.gen4_wm_planar_bo, + pI830->video.gen4_cc_bo, + }; pbox++; + if (intel_alloc_and_map(pI830, "textured video vb", 4096, + &vb_bo, &vb) != 0) + break; + bo_table[0] = vb_bo; + i = 0; vb[i++] = (box_x2 - dxo) * src_scale_x; vb[i++] = (box_y2 - dyo) * src_scale_y; @@ -779,53 +1114,33 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, vb[i++] = (float) box_x1 + pix_xoff; vb[i++] = (float) box_y1 + pix_yoff; -#if 0 - ErrorF ("before EU_ATT 0x%08x%08x EU_ATT_DATA 0x%08x%08x\n", - INREG(BRW_EU_ATT_1), INREG(BRW_EU_ATT_0), - INREG(BRW_EU_ATT_DATA_1), INREG(BRW_EU_ATT_DATA_0)); - - OUTREG(BRW_VF_CTL, - BRW_VF_CTL_SNAPSHOT_MUX_SELECT_THREADID | - BRW_VF_CTL_SNAPSHOT_TYPE_VERTEX_INDEX | - BRW_VF_CTL_SNAPSHOT_ENABLE); - OUTREG(BRW_VF_STRG_VAL, 0); -#endif + drm_intel_bo_unmap(vb_bo); -#if 0 - OUTREG(BRW_VS_CTL, - BRW_VS_CTL_SNAPSHOT_ALL_THREADS | - BRW_VS_CTL_SNAPSHOT_MUX_VALID_COUNT | - BRW_VS_CTL_THREAD_SNAPSHOT_ENABLE); + i965_pre_draw_debug(pScrn); - OUTREG(BRW_VS_STRG_VAL, 0); -#endif + /* If this command won't fit in the current batch, flush. + * Assume that it does after being flushed. + */ + if (drm_intel_bufmgr_check_aperture_space(bo_table, + ARRAY_SIZE(bo_table)) < 0) { + intel_batch_flush(pScrn, FALSE); + } -#if WATCH_SF - OUTREG(BRW_SF_CTL, - BRW_SF_CTL_SNAPSHOT_MUX_VERTEX_COUNT | - BRW_SF_CTL_SNAPSHOT_ALL_THREADS | - BRW_SF_CTL_THREAD_SNAPSHOT_ENABLE); - OUTREG(BRW_SF_STRG_VAL, 0); -#endif + intel_batch_start_atomic(pScrn, 100); -#if WATCH_WIZ - OUTREG(BRW_WIZ_CTL, - BRW_WIZ_CTL_SNAPSHOT_MUX_SUBSPAN_INSTANCE | - BRW_WIZ_CTL_SNAPSHOT_ALL_THREADS | - BRW_WIZ_CTL_SNAPSHOT_ENABLE); - OUTREG(BRW_WIZ_STRG_VAL, - (box_x1) | (box_y1 << 16)); -#endif + i965_emit_video_setup(pScrn, bind_bo, n_src_surf); -#if 0 - OUTREG(BRW_TS_CTL, - BRW_TS_CTL_SNAPSHOT_MESSAGE_ERROR | - BRW_TS_CTL_SNAPSHOT_ALL_CHILD_THREADS | - BRW_TS_CTL_SNAPSHOT_ALL_ROOT_THREADS | - BRW_TS_CTL_SNAPSHOT_ENABLE); -#endif + BEGIN_BATCH(12); + /* Set up the pointer to our vertex buffer */ + OUT_BATCH(BRW_3DSTATE_VERTEX_BUFFERS | 3); + /* four 32-bit floats per vertex */ + OUT_BATCH((0 << VB0_BUFFER_INDEX_SHIFT) | + VB0_VERTEXDATA | + ((4 * 4) << VB0_BUFFER_PITCH_SHIFT)); + OUT_RELOC(vb_bo, I915_GEM_DOMAIN_VERTEX, 0, 0); + OUT_BATCH(3); /* four corners to our rectangle */ + OUT_BATCH(0); /* reserved */ - BEGIN_BATCH(6); OUT_BATCH(BRW_3DPRIMITIVE | BRW_3DPRIMITIVE_VERTEX_SEQUENTIAL | (_3DPRIM_RECTLIST << BRW_3DPRIMITIVE_TOPOLOGY_SHIFT) | @@ -836,97 +1151,45 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id, OUT_BATCH(1); /* single instance */ OUT_BATCH(0); /* start instance location */ OUT_BATCH(0); /* index buffer offset, ignored */ + OUT_BATCH(MI_NOOP); ADVANCE_BATCH(); -#if 0 - for (j = 0; j < 100000; j++) { - ctl = INREG(BRW_VF_CTL); - if (ctl & BRW_VF_CTL_SNAPSHOT_COMPLETE) - break; - } - - rdata = INREG(BRW_VF_RDATA); - OUTREG(BRW_VF_CTL, 0); - ErrorF ("VF_CTL: 0x%08x VF_RDATA: 0x%08x\n", ctl, rdata); -#endif + intel_batch_end_atomic(pScrn); -#if 0 - for (j = 0; j < 1000000; j++) { - ctl = INREG(BRW_VS_CTL); - if (ctl & BRW_VS_CTL_SNAPSHOT_COMPLETE) - break; - } + drm_intel_bo_unreference(vb_bo); - rdata = INREG(BRW_VS_RDATA); - for (k = 0; k <= 3; k++) { - OUTREG(BRW_VS_CTL, - BRW_VS_CTL_SNAPSHOT_COMPLETE | - (k << 8)); - rdata = INREG(BRW_VS_RDATA); - ErrorF ("VS_CTL: 0x%08x VS_RDATA(%d): 0x%08x\n", ctl, k, rdata); - } - - OUTREG(BRW_VS_CTL, 0); -#endif - -#if WATCH_SF - for (j = 0; j < 1000000; j++) { - ctl = INREG(BRW_SF_CTL); - if (ctl & BRW_SF_CTL_SNAPSHOT_COMPLETE) - break; - } - - for (k = 0; k <= 7; k++) { - OUTREG(BRW_SF_CTL, - BRW_SF_CTL_SNAPSHOT_COMPLETE | - (k << 8)); - rdata = INREG(BRW_SF_RDATA); - ErrorF("SF_CTL: 0x%08x SF_RDATA(%d): 0x%08x\n", ctl, k, rdata); - } - - OUTREG(BRW_SF_CTL, 0); -#endif - -#if WATCH_WIZ - for (j = 0; j < 100000; j++) { - ctl = INREG(BRW_WIZ_CTL); - if (ctl & BRW_WIZ_CTL_SNAPSHOT_COMPLETE) - break; - } - - rdata = INREG(BRW_WIZ_RDATA); - OUTREG(BRW_WIZ_CTL, 0); - ErrorF("WIZ_CTL: 0x%08x WIZ_RDATA: 0x%08x\n", ctl, rdata); -#endif - -#if 0 - for (j = 0; j < 100000; j++) { - ctl = INREG(BRW_TS_CTL); - if (ctl & BRW_TS_CTL_SNAPSHOT_COMPLETE) - break; - } - - rdata = INREG(BRW_TS_RDATA); - OUTREG(BRW_TS_CTL, 0); - ErrorF("TS_CTL: 0x%08x TS_RDATA: 0x%08x\n", ctl, rdata); + i965_post_draw_debug(pScrn); + } - ErrorF("after EU_ATT 0x%08x%08x EU_ATT_DATA 0x%08x%08x\n", - INREG(BRW_EU_ATT_1), INREG(BRW_EU_ATT_0), - INREG(BRW_EU_ATT_DATA_1), INREG(BRW_EU_ATT_DATA_0)); -#endif + i830MarkSync(pScrn); -#if 0 - for (j = 0; j < 256; j++) { - OUTREG(BRW_TD_CTL, j << BRW_TD_CTL_MUX_SHIFT); - rdata = INREG(BRW_TD_RDATA); - ErrorF ("TD_RDATA(%d): 0x%08x\n", j, rdata); - } -#endif - first_output = FALSE; - i830MarkSync(pScrn); - } + /* release reference once we're finished */ + drm_intel_bo_unreference(bind_bo); #if WATCH_STATS i830_dump_error_state(pScrn); #endif } + +void +i965_free_video(ScrnInfoPtr scrn) +{ + I830Ptr pI830 = I830PTR(scrn); + + drm_intel_bo_unreference(pI830->video.gen4_vs_bo); + pI830->video.gen4_vs_bo = NULL; + drm_intel_bo_unreference(pI830->video.gen4_sf_bo); + pI830->video.gen4_sf_bo = NULL; + drm_intel_bo_unreference(pI830->video.gen4_cc_bo); + pI830->video.gen4_cc_bo = NULL; + drm_intel_bo_unreference(pI830->video.gen4_wm_packed_bo); + pI830->video.gen4_wm_packed_bo = NULL; + drm_intel_bo_unreference(pI830->video.gen4_wm_planar_bo); + pI830->video.gen4_wm_planar_bo = NULL; + drm_intel_bo_unreference(pI830->video.gen4_cc_vp_bo); + pI830->video.gen4_cc_vp_bo = NULL; + drm_intel_bo_unreference(pI830->video.gen4_sampler_bo); + pI830->video.gen4_sampler_bo = NULL; + drm_intel_bo_unreference(pI830->video.gen4_sip_kernel_bo); + pI830->video.gen4_sip_kernel_bo = NULL; +} diff --git a/driver/xf86-video-intel/src/ivch/Makefile.in b/driver/xf86-video-intel/src/ivch/Makefile.in index fb7d336d3..029b93b64 100644 --- a/driver/xf86-video-intel/src/ivch/Makefile.in +++ b/driver/xf86-video-intel/src/ivch/Makefile.in @@ -108,6 +108,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -119,6 +123,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -163,6 +168,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -170,6 +177,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -181,15 +190,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -206,6 +209,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -213,18 +219,22 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ diff --git a/driver/xf86-video-intel/src/reg_dumper/Makefile.am b/driver/xf86-video-intel/src/reg_dumper/Makefile.am index d49a59b1e..b04395a77 100644 --- a/driver/xf86-video-intel/src/reg_dumper/Makefile.am +++ b/driver/xf86-video-intel/src/reg_dumper/Makefile.am @@ -1,4 +1,9 @@ -noinst_PROGRAMS = intel_reg_dumper intel_idle intel_stepping intel_hotplug +noinst_PROGRAMS = intel_reg_dumper \ + intel_gtt \ + intel_idle \ + intel_stepping \ + intel_statuspage \ + intel_hotplug intel_reg_dumper_SOURCES = \ main.c \ @@ -6,6 +11,11 @@ intel_reg_dumper_SOURCES = \ xprintf.c \ ../i830_debug.c +intel_gtt_SOURCES = \ + gtt.c \ + reg_dumper.h \ + util.c + intel_idle_SOURCES = \ idle.c \ reg_dumper.h \ @@ -21,10 +31,17 @@ intel_hotplug_SOURCES = \ intel_stepping_SOURCES = \ stepping.c +intel_statuspage_SOURCES = \ + statuspage.c \ + reg_dumper.h \ + util.c + intel_hotplug_LDADD = $(PCIACCESS_LIBS) intel_reg_dumper_LDADD = $(PCIACCESS_LIBS) +intel_gtt_LDADD = $(PCIACCESS_LIBS) intel_idle_LDADD = $(PCIACCESS_LIBS) intel_stepping_LDADD = $(PCIACCESS_LIBS) +intel_statuspage_LDADD = $(PCIACCESS_LIBS) AM_CFLAGS = $(PCIACCESS_CFLAGS) $(WARN_CFLAGS) \ -I$(srcdir)/.. -DREG_DUMPER diff --git a/driver/xf86-video-intel/src/reg_dumper/Makefile.in b/driver/xf86-video-intel/src/reg_dumper/Makefile.in index 29fad1800..e1d2d20ec 100644 --- a/driver/xf86-video-intel/src/reg_dumper/Makefile.in +++ b/driver/xf86-video-intel/src/reg_dumper/Makefile.in @@ -36,8 +36,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -noinst_PROGRAMS = intel_reg_dumper$(EXEEXT) intel_idle$(EXEEXT) \ - intel_stepping$(EXEEXT) intel_hotplug$(EXEEXT) +noinst_PROGRAMS = intel_reg_dumper$(EXEEXT) intel_gtt$(EXEEXT) \ + intel_idle$(EXEEXT) intel_stepping$(EXEEXT) \ + intel_statuspage$(EXEEXT) intel_hotplug$(EXEEXT) subdir = src/reg_dumper DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -49,10 +50,13 @@ mkinstalldirs = $(SHELL) $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = PROGRAMS = $(noinst_PROGRAMS) +am_intel_gtt_OBJECTS = gtt.$(OBJEXT) util.$(OBJEXT) +intel_gtt_OBJECTS = $(am_intel_gtt_OBJECTS) +am__DEPENDENCIES_1 = +intel_gtt_DEPENDENCIES = $(am__DEPENDENCIES_1) am_intel_hotplug_OBJECTS = hotplug.$(OBJEXT) xprintf.$(OBJEXT) \ i830_debug.$(OBJEXT) intel_hotplug_OBJECTS = $(am_intel_hotplug_OBJECTS) -am__DEPENDENCIES_1 = intel_hotplug_DEPENDENCIES = $(am__DEPENDENCIES_1) am_intel_idle_OBJECTS = idle.$(OBJEXT) xprintf.$(OBJEXT) \ i830_debug.$(OBJEXT) @@ -62,6 +66,9 @@ am_intel_reg_dumper_OBJECTS = main.$(OBJEXT) xprintf.$(OBJEXT) \ i830_debug.$(OBJEXT) intel_reg_dumper_OBJECTS = $(am_intel_reg_dumper_OBJECTS) intel_reg_dumper_DEPENDENCIES = $(am__DEPENDENCIES_1) +am_intel_statuspage_OBJECTS = statuspage.$(OBJEXT) util.$(OBJEXT) +intel_statuspage_OBJECTS = $(am_intel_statuspage_OBJECTS) +intel_statuspage_DEPENDENCIES = $(am__DEPENDENCIES_1) am_intel_stepping_OBJECTS = stepping.$(OBJEXT) intel_stepping_OBJECTS = $(am_intel_stepping_OBJECTS) intel_stepping_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -73,10 +80,12 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(intel_hotplug_SOURCES) $(intel_idle_SOURCES) \ - $(intel_reg_dumper_SOURCES) $(intel_stepping_SOURCES) -DIST_SOURCES = $(intel_hotplug_SOURCES) $(intel_idle_SOURCES) \ - $(intel_reg_dumper_SOURCES) $(intel_stepping_SOURCES) +SOURCES = $(intel_gtt_SOURCES) $(intel_hotplug_SOURCES) \ + $(intel_idle_SOURCES) $(intel_reg_dumper_SOURCES) \ + $(intel_statuspage_SOURCES) $(intel_stepping_SOURCES) +DIST_SOURCES = $(intel_gtt_SOURCES) $(intel_hotplug_SOURCES) \ + $(intel_idle_SOURCES) $(intel_reg_dumper_SOURCES) \ + $(intel_statuspage_SOURCES) $(intel_stepping_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -117,6 +126,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -128,6 +141,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -172,6 +186,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -179,6 +195,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -190,15 +208,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -215,6 +227,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -222,18 +237,22 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ @@ -244,6 +263,11 @@ intel_reg_dumper_SOURCES = \ xprintf.c \ ../i830_debug.c +intel_gtt_SOURCES = \ + gtt.c \ + reg_dumper.h \ + util.c + intel_idle_SOURCES = \ idle.c \ reg_dumper.h \ @@ -259,10 +283,17 @@ intel_hotplug_SOURCES = \ intel_stepping_SOURCES = \ stepping.c +intel_statuspage_SOURCES = \ + statuspage.c \ + reg_dumper.h \ + util.c + intel_hotplug_LDADD = $(PCIACCESS_LIBS) intel_reg_dumper_LDADD = $(PCIACCESS_LIBS) +intel_gtt_LDADD = $(PCIACCESS_LIBS) intel_idle_LDADD = $(PCIACCESS_LIBS) intel_stepping_LDADD = $(PCIACCESS_LIBS) +intel_statuspage_LDADD = $(PCIACCESS_LIBS) AM_CFLAGS = $(PCIACCESS_CFLAGS) $(WARN_CFLAGS) \ -I$(srcdir)/.. -DREG_DUMPER @@ -306,6 +337,9 @@ clean-noinstPROGRAMS: echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done +intel_gtt$(EXEEXT): $(intel_gtt_OBJECTS) $(intel_gtt_DEPENDENCIES) + @rm -f intel_gtt$(EXEEXT) + $(LINK) $(intel_gtt_LDFLAGS) $(intel_gtt_OBJECTS) $(intel_gtt_LDADD) $(LIBS) intel_hotplug$(EXEEXT): $(intel_hotplug_OBJECTS) $(intel_hotplug_DEPENDENCIES) @rm -f intel_hotplug$(EXEEXT) $(LINK) $(intel_hotplug_LDFLAGS) $(intel_hotplug_OBJECTS) $(intel_hotplug_LDADD) $(LIBS) @@ -315,6 +349,9 @@ intel_idle$(EXEEXT): $(intel_idle_OBJECTS) $(intel_idle_DEPENDENCIES) intel_reg_dumper$(EXEEXT): $(intel_reg_dumper_OBJECTS) $(intel_reg_dumper_DEPENDENCIES) @rm -f intel_reg_dumper$(EXEEXT) $(LINK) $(intel_reg_dumper_LDFLAGS) $(intel_reg_dumper_OBJECTS) $(intel_reg_dumper_LDADD) $(LIBS) +intel_statuspage$(EXEEXT): $(intel_statuspage_OBJECTS) $(intel_statuspage_DEPENDENCIES) + @rm -f intel_statuspage$(EXEEXT) + $(LINK) $(intel_statuspage_LDFLAGS) $(intel_statuspage_OBJECTS) $(intel_statuspage_LDADD) $(LIBS) intel_stepping$(EXEEXT): $(intel_stepping_OBJECTS) $(intel_stepping_DEPENDENCIES) @rm -f intel_stepping$(EXEEXT) $(LINK) $(intel_stepping_LDFLAGS) $(intel_stepping_OBJECTS) $(intel_stepping_LDADD) $(LIBS) @@ -325,11 +362,14 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hotplug.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i830_debug.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idle.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statuspage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stepping.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xprintf.Po@am__quote@ .c.o: diff --git a/driver/xf86-video-intel/src/reg_dumper/gtt.c b/driver/xf86-video-intel/src/reg_dumper/gtt.c new file mode 100644 index 000000000..ead5935be --- /dev/null +++ b/driver/xf86-video-intel/src/reg_dumper/gtt.c @@ -0,0 +1,118 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Authors: + * Eric Anholt <eric@anholt.net> + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <pciaccess.h> +#include <err.h> +#include <unistd.h> + +#include "reg_dumper.h" +#include "../i810_reg.h" + +#define INGTT(offset) (*(volatile uint32_t *)(gtt + (offset) / (KB(4) / 4))) + +int main(int argc, char **argv) +{ + I830Rec i830; + I830Ptr pI830 = &i830; + int start, aper_size; + unsigned char *gtt; + + intel_i830rec_init(pI830); + + if (!IS_I9XX(pI830)) { + printf("Unsupported chipset for gtt dumper\n"); + exit(1); + } + + if (IS_G4X(pI830)) + gtt = (unsigned char *)(pI830->mmio + MB(2)); + else if (IS_I965G(pI830)) + gtt = (unsigned char *)(pI830->mmio + KB(512)); + else { + /* 915/945 chips has GTT range in bar 3*/ + int err = 0; + err = pci_device_map_range (pI830->pci_dev, + pI830->pci_dev->regions[3].base_addr, + pI830->pci_dev->regions[3].size, + PCI_DEV_MAP_FLAG_WRITABLE, + (void **)>t); + if (err != 0) { + fprintf(stderr, "mapping GTT bar failed\n"); + exit(1); + } + } + + aper_size = pI830->pci_dev->regions[2].size; + + for (start = 0; start < aper_size; start += KB(4)) { + uint32_t start_pte = INGTT(start); + uint32_t end; + int constant_length = 0; + int linear_length = 0; + + /* Check if it's a linear sequence */ + for (end = start + KB(4); end < aper_size; end += KB(4)) { + uint32_t end_pte = INGTT(end); + if (end_pte == start_pte + (end - start)) + linear_length++; + else + break; + } + if (linear_length > 0) { + printf("0x%08x - 0x%08x: linear from " + "0x%08x to 0x%08x\n", + start, end - KB(4), + start_pte, start_pte + (end - start) - KB(4)); + start = end - KB(4); + continue; + } + + /* Check if it's a constant sequence */ + for (end = start + KB(4); end < aper_size; end += KB(4)) { + uint32_t end_pte = INGTT(end); + if (end_pte == start_pte) + constant_length++; + else + break; + } + if (constant_length > 0) { + printf("0x%08x - 0x%08x: constant 0x%08x\n", + start, end - KB(4), + start_pte); + start = end - KB(4); + continue; + } + + printf("0x%08x: 0x%08x\n", start, start_pte); + } + + return 0; +} diff --git a/driver/xf86-video-intel/src/reg_dumper/idle.c b/driver/xf86-video-intel/src/reg_dumper/idle.c index 46a2fd5cd..8d60c0ca1 100644 --- a/driver/xf86-video-intel/src/reg_dumper/idle.c +++ b/driver/xf86-video-intel/src/reg_dumper/idle.c @@ -39,15 +39,16 @@ struct idle_flags { uint32_t instdone_flag; char *name; + int ignore; unsigned int count; }; struct idle_flags i915_idle_flags[] = { - {IDCT_DONE, "IDCT"}, - {IQ_DONE, "IQ"}, - {PR_DONE, "PR"}, - {VLD_DONE, "VLD"}, - {IP_DONE, "IP"}, + {IDCT_DONE, "IDCT", 1}, + {IQ_DONE, "IQ", 1}, + {PR_DONE, "PR", 1}, + {VLD_DONE, "VLD", 1}, + {IP_DONE, "IP", 1}, {FBC_DONE, "FBC"}, {BINNER_DONE, "BINNER"}, {SF_DONE, "SF"}, @@ -66,8 +67,8 @@ struct idle_flags i915_idle_flags[] = { {PS_DONE, "PS"}, {CC_DONE, "CC"}, {MAP_FILTER_DONE, "map filter"}, - {MAP_L2_IDLE, "map L2"}, - + {MAP_L2_IDLE, "map L2", 1}, + {0x80000038, "reserved bits", 1}, {0, "total"}, {0, "other"}, }; @@ -103,10 +104,11 @@ setup_other_flags(I830Ptr pI830, for (i = 0; i < idle_flag_count - 2; i++) { other_idle_flags &= ~idle_flags[i].instdone_flag; - total_idle_flags |= idle_flags[i].instdone_flag; + if (!idle_flags[i].ignore) + total_idle_flags |= idle_flags[i].instdone_flag; } - idle_flags[i - 1].instdone_flag = total_idle_flags; - idle_flags[i].instdone_flag = other_idle_flags; + idle_flags[idle_flag_count - 2].instdone_flag = total_idle_flags; + idle_flags[idle_flag_count - 1].instdone_flag = other_idle_flags; } int main(int argc, char **argv) @@ -193,7 +195,11 @@ int main(int argc, char **argv) } for (j = 0; j < idle_flag_count; j++) { - printf("%25s: %3d\n", idle_flags[j].name, idle_flags[j].count); + if (!idle_flags[j].ignore) + printf("%25s: %3d\n", idle_flags[j].name, idle_flags[j].count); + else + printf("%25s: %3d (unreliable)\n", + idle_flags[j].name, idle_flags[j].count); idle_flags[j].count = 0; } printf("\n"); diff --git a/driver/xf86-video-intel/src/reg_dumper/main.c b/driver/xf86-video-intel/src/reg_dumper/main.c index 46542e7a3..5c8ef9ede 100644 --- a/driver/xf86-video-intel/src/reg_dumper/main.c +++ b/driver/xf86-video-intel/src/reg_dumper/main.c @@ -34,13 +34,6 @@ #include "reg_dumper.h" -#ifdef __OpenBSD__ -#define DEV_APERTURE "/dev/mem" -int devMemFd = -1; -#include <errno.h> -#include <fcntl.h> -#endif - int main(int argc, char **argv) { struct pci_device *dev; @@ -55,15 +48,6 @@ int main(int argc, char **argv) exit(1); } -#ifdef __OpenBSD__ - devMemFd = open(DEV_APERTURE, O_RDWR); - if (devMemFd < 0) { - fprintf(stderr, "Could not open aperture driver: %s\n", strerror(errno)); - exit(1); - } - pci_system_init_dev_mem(devMemFd); -#endif - /* Grab the graphics card */ dev = pci_device_find_by_slot(0, 0, 2, 0); if (dev == NULL) diff --git a/driver/xf86-video-intel/src/reg_dumper/reg_dumper.h b/driver/xf86-video-intel/src/reg_dumper/reg_dumper.h index 9a723b9b1..9f24d5cc1 100644 --- a/driver/xf86-video-intel/src/reg_dumper/reg_dumper.h +++ b/driver/xf86-video-intel/src/reg_dumper/reg_dumper.h @@ -52,6 +52,7 @@ struct pci_info_rec { typedef struct _i830 { /* Fields in common with the real pI830 */ struct pci_info_rec *PciInfo; + Bool use_drm_mode; /* Fields used for setting up reg_dumper */ struct pci_device *pci_dev; @@ -88,3 +89,4 @@ typedef struct _scrn { char *XNFprintf(const char *format, ...); void xf86DrvMsg(int scrnIndex, int severity, const char *format, ...); void i830DumpRegs(ScrnInfoPtr pScrn); +void intel_i830rec_init(I830Ptr pI830); diff --git a/driver/xf86-video-intel/src/reg_dumper/statuspage.c b/driver/xf86-video-intel/src/reg_dumper/statuspage.c new file mode 100644 index 000000000..d6106a5a6 --- /dev/null +++ b/driver/xf86-video-intel/src/reg_dumper/statuspage.c @@ -0,0 +1,81 @@ +/* + * Copyright © 2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Authors: + * Eric Anholt <eric@anholt.net> + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <sys/types.h> +#include <sys/mman.h> +#include <pciaccess.h> +#include <err.h> +#include <unistd.h> +#include <fcntl.h> + +#include "reg_dumper.h" +#include "../i810_reg.h" + +int main(int argc, char **argv) +{ + I830Rec i830; + I830Ptr pI830 = &i830; + int devmem; + uint32_t hws_offset; + volatile uint32_t *hws; + + intel_i830rec_init(pI830); + + if (HWS_NEED_GFX(pI830)) + errx(1, "status page in graphics virtual unsupported.\n"); + + hws_offset = INREG(HWS_PGA); + + devmem = open("/dev/mem", O_RDWR, 0); + if (devmem == -1) + err(1, "Couldn't open /dev/mem"); + + hws = mmap(NULL, 4096, PROT_READ, MAP_SHARED, devmem, hws_offset); + if (hws == MAP_FAILED) + err(1, "Couldn't map /dev/mem at 0x%08x", hws_offset); + + close(devmem); + + for (;;) { + int i; + + printf("\n"); + + for (i = 0; i < 64; i += 4) { + printf("0x%04x: 0x%08x 0x%08x 0x%08x 0x%08x\n", i * 4, + hws[i], hws[i + 1], hws[i + 2], hws[i + 3]); + } + + sleep(1); + } + + return 0; +} diff --git a/driver/xf86-video-intel/src/reg_dumper/util.c b/driver/xf86-video-intel/src/reg_dumper/util.c new file mode 100644 index 000000000..6dd1e4879 --- /dev/null +++ b/driver/xf86-video-intel/src/reg_dumper/util.c @@ -0,0 +1,86 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Authors: + * Eric Anholt <eric@anholt.net> + * + */ + +/** @file util.c + * + * Utility functions for the various tools in the reg_dumper directory. + */ + +#include <err.h> +#include <pciaccess.h> + +#include "reg_dumper.h" + +/** + * Sets up the pI830 for use by common.h-style macros, particularly + * INREG/OUTERG. + */ +void intel_i830rec_init(I830Ptr pI830) +{ + struct pci_device *dev; + int err, mmio_bar; + void *mmio; + + err = pci_system_init(); + if (err != 0) { + fprintf(stderr, "Couldn't initialize PCI system: %s\n", strerror(err)); + exit(1); + } + + /* Grab the graphics card */ + dev = pci_device_find_by_slot(0, 0, 2, 0); + if (dev == NULL) + errx(1, "Couldn't find graphics card"); + + err = pci_device_probe(dev); + if (err != 0) { + fprintf(stderr, "Couldn't probe graphics card: %s\n", strerror(err)); + exit(1); + } + + if (dev->vendor_id != 0x8086) + errx(1, "Graphics card is non-intel"); + + pI830->PciInfo = &pI830->pci_info_rec; + pI830->PciInfo->chipType = dev->device_id; + + pI830->pci_dev = dev; + + mmio_bar = IS_I9XX(pI830) ? 0 : 1; + + err = pci_device_map_range (dev, + dev->regions[mmio_bar].base_addr, + dev->regions[mmio_bar].size, + PCI_DEV_MAP_FLAG_WRITABLE, + &mmio); + + if (err != 0) { + fprintf(stderr, "Couldn't map MMIO region: %s\n", strerror(err)); + exit(1); + } + pI830->mmio = mmio; +} diff --git a/driver/xf86-video-intel/src/scripts/clock-graph.5c b/driver/xf86-video-intel/src/scripts/clock-graph.5c new file mode 100644 index 000000000..324febfac --- /dev/null +++ b/driver/xf86-video-intel/src/scripts/clock-graph.5c @@ -0,0 +1,174 @@ +autoload Cairo; +import Cairo; +library "examples/sort.5c"; +import Sort; + +int width = 1000, height = 200; +int min_vco = 1400000000; +int max_vco = 2800000000; +int min = 0xffffffff; +int max = 0; + +int max_clocks = 2000; +int[4][max_clocks] clocks; +int[4][max_clocks] vcos; +int[4] clock_count = {0...}; + +int[4] p2vals = {5,10,7,14}; + +cairo_t cr = Cairo::new(width, height); + +void calc_p2(int p2i) +{ + int p2 = p2vals[p2i]; + int min_p, max_p; + + clocks[p2i] = (int [max_clocks]){0...}; + + if (p2 == 7 || p2 == 14) { + /* LVDS */ + min_p = 7; + max_p = 98; + } else { + /* SDVO/DAC */ + min_p = 5; + max_p = 80; + } + + for (int m1 = 10; m1 <= 22; m1++) { + for (int m2 = 5; m2 <= 9; m2++) { + for (int n = 1; n <= 5; n++) { + for (int p1 = 1; p1 <= 8; p1++) { + int ref = 96000000; + int m = 5 * (m1 + 2) + (m2 + 2); + int p = p1 * p2; + int vco = floor(ref * m / (n + 2)); + int clock = floor(vco / p); + + if (p < min_p || p > max_p) + continue; + if (m < 70 || m > 120) + continue; + if (m2 > m1) + continue; /* won't happen */ + if (vco < min_vco || vco > max_vco) + continue; + +/* + printf("clock: %d (%d,%d), %d, " + "(%d,%d)\n", + floor(clock / 1000), + m1, m2, n, p1, p2); +*/ + + clocks[p2i][clock_count[p2i]] = clock; + vcos[p2i][clock_count[p2i]] = vco; + clock_count[p2i]++; + } + } + } + } +} + +bool sort_p2(poly a, poly b) +{ + return a > b; +} + +int min_rate = 25000 * 1000; +int max_rate = 200000 * 1000; + +real scale_x(real clock) +{ + int min_x = 75, max_x = width - 50; + + real frac = (clock - min_rate) / (max_rate - min_rate); + + return min_x + frac * (max_x - min_x); +} + +for (p2i = 0; p2i < dim(p2vals); p2i++) { + int p2 = p2vals[p2i]; + calc_p2(p2i); + real row_y1 = (p2i + 1) / (dim(p2vals) + 1) * height; + real row_y2 = p2i / (dim(p2vals) + 1) * height; + + /*qsort(&p2vals[p2i], sort_p2);*/ + + switch (p2) { + case 5: + set_source_rgb(cr, 1,0,0); + break; + case 10: + set_source_rgb(cr, 0,1,0); + break; + case 7: + set_source_rgb(cr, 0,0,1); + break; + case 14: + set_source_rgb(cr, 0,0,0); + break; + } + + /* draw the line for the clock */ + for (int i = 0; i < clock_count[p2i]; i++) { + int clock = clocks[p2i][i]; + real xpos; + + if (clock < min_rate || clock > max_rate) + continue; + + xpos = scale_x(clock); + move_to(cr, xpos, row_y1); + line_to(cr, xpos, row_y2); + stroke(cr); + } + + set_source_rgb(cr, 1, 1, 1); + /* add a mark for the vco value of the clocks at each location */ + for (int i = 0; i < clock_count[p2i]; i++) { + int clock = clocks[p2i][i]; + int vco = vcos[p2i][i]; + real mark_center; + + if (clock < min_rate || clock > max_rate) + continue; + + real xpos = scale_x(clock); + real vcofrac = (vco - min_vco) / (max_vco - min_vco); + real mark_height = (row_y1 + vcofrac * (row_y2 - row_y1)); + + move_to(cr, xpos, mark_height - 1); + line_to(cr, xpos, mark_height + 1); + stroke(cr); + } + + set_source_rgb(cr, 0, 0, 0); + string p2label = sprintf("p2 = %d", p2); + move_to(cr, 5, (p2i + .5) / (dim(p2vals) + 1) * height + 4); + show_text(cr, p2label); +} + +void label_clock(real clock) { + real center_x = scale_x(clock); + string label = sprintf("%d", floor((clock + 500) / 1000000)); + text_extents_t e = text_extents(cr, label); + real left_x = center_x - e.x_advance / 2; + save(cr); + move_to(cr, left_x, height - 20); + show_text(cr, label); + restore(cr); +} + +label_clock(min_rate); +label_clock(max_rate); +label_clock(140 * 1000 * 1000); +label_clock(115 * 1000 * 1000); +label_clock(100 * 1000 * 1000); +label_clock(82 * 1000 * 1000); + +string xlabel = "Clock in Mhz"; +text_extents_t e = text_extents(cr, xlabel); +move_to(cr, width / 2 - e.x_advance / 2, height - 5); +show_text(cr, xlabel); +sleep(10); diff --git a/driver/xf86-video-intel/src/scripts/clock.5c b/driver/xf86-video-intel/src/scripts/clock.5c new file mode 100644 index 000000000..c83c689a6 --- /dev/null +++ b/driver/xf86-video-intel/src/scripts/clock.5c @@ -0,0 +1,40 @@ +int p2 = 14; +int min_p, max_p; + +if (p2 == 7 || p2 == 14) { + /* LVDS */ + min_p = 7; + max_p = 98; +} else { + /* SDVO/DAC */ + min_p = 5; + max_p = 80; +} + +for (int m1 = 10; m1 <= 22; m1++) { + for (int m2 = 5; m2 <= 9; m2++) { + for (int n = 1; n <= 6; n++) { + for (int p1 = 1; p1 <= 8; p1++) { + int ref = 96000000; + int m = 5 * (m1 + 2) + (m2 + 2); + int p = p1 * p2; + int vco = floor(ref * m / (n + 2)); + int clock = floor(vco / p); + + if (p < min_p || p > max_p) + continue; + if (m < 70 || m > 120) + continue; + if (m2 > m1) + continue; /* won't happen */ + if (vco < 1400000000 || + vco > 2800000000) + continue; + + printf("clock: %d (%d,%d),%d,(%d,%d)\n", + floor(clock / 1000), + m1, m2, n, p1, p2); + } + } + } +} diff --git a/driver/xf86-video-intel/src/scripts/fix.5c b/driver/xf86-video-intel/src/scripts/fix.5c new file mode 100644 index 000000000..b758a433f --- /dev/null +++ b/driver/xf86-video-intel/src/scripts/fix.5c @@ -0,0 +1,14 @@ +/* + * Convert CSC fix point values to floats + */ + +real fixval (int fix) +{ + int exp = fix >> 9; + int mant = fix & ((1 << 9) - 1); + real ret; + if (exp == 0x7) + return 1.0; + ret = (2 ** -exp) * mant / (1 << 9); + return ret; +} diff --git a/driver/xf86-video-intel/src/scripts/tv.5c b/driver/xf86-video-intel/src/scripts/tv.5c new file mode 100644 index 000000000..b4a2ba612 --- /dev/null +++ b/driver/xf86-video-intel/src/scripts/tv.5c @@ -0,0 +1,128 @@ +/* + * tv.5c + * + * Compute tv encoder subcarrier dda constants + * + * The TV encoder subcarrier must be set precisely to the + * required frequency or the cumulative phase errors will be + * quite visible in the output. To accomplish this, the TV encoder + * has a complex circuit that takes a fixed clock, generated by the PLL + * and generates a precise subcarrier clock from that using the following + * formula: + * + * subcarrier = pixel_clock * (S1 + (S2 + (S3/Z3)) / Z2) / 4096 + * + * Careful selection of the constants will provide the necessarily + * precise clock. + * + * In the code below, S1 is represented by dda1, S2/Z2 by dda2 and S3/Z3 + * by dda3. + */ + +typedef struct { + int step; + int size; +} term_t; + +/* + * Find the approximation closest, but no larger than 'v', where + * 0 <= v < 1, and the result denominator must be less than 30000. + */ +term_t approx (rational v) +{ + rational best_dist = 1.0; + term_t best; + + for (int den = 20000; den < 30000; den++) + { + int num = floor (v * den); + term_t approx = { step = num, size = den }; + rational dist = v - approx.step/approx.size; + if (dist >= 0 && dist < best_dist) + { + best_dist = dist; + best = approx; + } + } + return best; +} + +typedef struct { + rational subcarrier; + rational pixel; + rational result; + term_t dda1; + term_t dda2; + term_t dda3; +} dda; + +/* + * Compute the dda constants for the given pixel clock and + * desired subcarrier frequency + */ + +dda find_dda (rational pixel, rational subcarrier) +{ + dda d; + + d.subcarrier = subcarrier; + d.pixel = pixel; + + rational dda1 = subcarrier / pixel * 4096; + d.dda1 = (term_t) { step = floor (dda1), size = 4096 }; + + rational dda2 = dda1 - d.dda1.step; + d.dda2 = approx (dda2); + + rational dda3 = dda2 * d.dda2.size - d.dda2.step; + d.dda3 = approx (dda3); + + /* Compute the resulting pixel clock to compare */ + d.result = d.pixel * (d.dda1.step + + (d.dda2.step + d.dda3.step/d.dda3.size) / + d.dda2.size) / d.dda1.size; + return d; +} + +/* + * Print out the computed constants + */ +void print_dda (dda d) +{ + printf ("\t/* desired %9.7f actual %9.7f clock %g */\n", + d.subcarrier, d.result, d.pixel); + printf ("\t.dda1_inc\t= %6d,\n", d.dda1.step); + printf ("\t.dda2_inc\t= %6d,\t.dda2_size\t= %6d,\n", + d.dda2.step, d.dda2.step != 0 ? d.dda2.size : 0); + printf ("\t.dda3_inc\t= %6d,\t.dda3_size\t= %6d,\n", + d.dda3.step, d.dda3.step != 0 ? d.dda3.size : 0); +} + +/* + * These are all of the required subcarrier frequencies + */ +rational[] subcarriers = { + /* these are the values we use; for some reason, this generates + * a more stable image (at least for NTSC) */ + 3.580, 4.434, 3.582, 3.576, 4.430, + + /* these are the values pulled out of the various specs */ + 3.579545, 4.433618, 3.582056, 3.575611, 4.433618 +}; + +/* + * We fix the pixel clock to a value which the hardware can + * generate exactly + */ +rational pixel = 107.520; + +void main () +{ + for (int i = 0; i < dim(subcarriers); i++) + { + dda d = find_dda (pixel, subcarriers[i]); + print_dda (d); + } +} + +main (); diff --git a/driver/xf86-video-intel/src/sil164/Makefile.in b/driver/xf86-video-intel/src/sil164/Makefile.in index 6601f01d4..a925ab606 100644 --- a/driver/xf86-video-intel/src/sil164/Makefile.in +++ b/driver/xf86-video-intel/src/sil164/Makefile.in @@ -108,6 +108,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -119,6 +123,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -163,6 +168,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -170,6 +177,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -181,15 +190,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -206,6 +209,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -213,18 +219,22 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ diff --git a/driver/xf86-video-intel/src/tfp410/Makefile.in b/driver/xf86-video-intel/src/tfp410/Makefile.in index 5e7438e9a..041e7d8cd 100644 --- a/driver/xf86-video-intel/src/tfp410/Makefile.in +++ b/driver/xf86-video-intel/src/tfp410/Makefile.in @@ -108,6 +108,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -119,6 +123,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -163,6 +168,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -170,6 +177,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -181,15 +190,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -206,6 +209,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -213,18 +219,22 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ diff --git a/driver/xf86-video-intel/src/xvmc/I810XvMC.c b/driver/xf86-video-intel/src/xvmc/I810XvMC.c index ce5395acc..10606de4c 100644 --- a/driver/xf86-video-intel/src/xvmc/I810XvMC.c +++ b/driver/xf86-video-intel/src/xvmc/I810XvMC.c @@ -126,7 +126,7 @@ void i810_free_privContext(i810XvMCContext *pI810XvMC) { // returned by XvMCListSurfaceTypes. // Returns: Status ***************************************************************************/ -Status XvMCCreateContext(Display *display, XvPortID port, +_X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, int surface_type_id, int width, int height, int flags, XvMCContext *context) { i810XvMCContext *pI810XvMC; @@ -373,7 +373,7 @@ Status XvMCCreateContext(Display *display, XvPortID port, // // Returns: Status ***************************************************************************/ -Status XvMCDestroyContext(Display *display, XvMCContext *context) { +_X_EXPORT Status XvMCDestroyContext(Display *display, XvMCContext *context) { i810XvMCContext *pI810XvMC; if(context == NULL) { @@ -422,7 +422,7 @@ Status XvMCDestroyContext(Display *display, XvMCContext *context) { /*************************************************************************** // Function: XvMCCreateSurface ***************************************************************************/ -Status XvMCCreateSurface( Display *display, XvMCContext *context, +_X_EXPORT Status XvMCCreateSurface( Display *display, XvMCContext *context, XvMCSurface *surface) { i810XvMCContext *pI810XvMC; i810XvMCSurface *pI810Surface; @@ -589,7 +589,7 @@ Status XvMCCreateSurface( Display *display, XvMCContext *context, /*************************************************************************** // Function: XvMCDestroySurface ***************************************************************************/ -Status XvMCDestroySurface(Display *display, XvMCSurface *surface) { +_X_EXPORT Status XvMCDestroySurface(Display *display, XvMCSurface *surface) { i810XvMCSurface *pI810Surface; i810XvMCContext *pI810XvMC; @@ -618,7 +618,7 @@ Status XvMCDestroySurface(Display *display, XvMCSurface *surface) { /*************************************************************************** // Function: XvMCCreateBlocks ***************************************************************************/ -Status XvMCCreateBlocks(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCCreateBlocks(Display *display, XvMCContext *context, unsigned int num_blocks, XvMCBlockArray *block) { @@ -642,7 +642,7 @@ Status XvMCCreateBlocks(Display *display, XvMCContext *context, /*************************************************************************** // Function: XvMCDestroyBlocks ***************************************************************************/ -Status XvMCDestroyBlocks(Display *display, XvMCBlockArray *block) { +_X_EXPORT Status XvMCDestroyBlocks(Display *display, XvMCBlockArray *block) { if(display == NULL) { return BadValue; } @@ -657,7 +657,7 @@ Status XvMCDestroyBlocks(Display *display, XvMCBlockArray *block) { /*************************************************************************** // Function: XvMCCreateMacroBlocks ***************************************************************************/ -Status XvMCCreateMacroBlocks(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCCreateMacroBlocks(Display *display, XvMCContext *context, unsigned int num_blocks, XvMCMacroBlockArray *blocks) { @@ -682,7 +682,7 @@ Status XvMCCreateMacroBlocks(Display *display, XvMCContext *context, /*************************************************************************** // Function: XvMCDestroyMacroBlocks ***************************************************************************/ -Status XvMCDestroyMacroBlocks(Display *display, XvMCMacroBlockArray *block) { +_X_EXPORT Status XvMCDestroyMacroBlocks(Display *display, XvMCMacroBlockArray *block) { if((display == NULL) || (block == NULL)) { return BadValue; } @@ -2409,7 +2409,7 @@ static __inline__ void renderDualPrimeinFrameDCT0(uint **datay,uint **datau, // U and V surfaces. ***************************************************************************/ #define UV_QUEUE 14 -Status XvMCRenderSurface(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCRenderSurface(Display *display, XvMCContext *context, unsigned int picture_structure, XvMCSurface *target_surface, XvMCSurface *past_surface, @@ -2818,7 +2818,7 @@ Status XvMCRenderSurface(Display *display, XvMCContext *context, // possible to catch up before we have to check on its progress. This // makes it unlikely that we have to wait on the last flip. ***************************************************************************/ -Status XvMCPutSurface(Display *display,XvMCSurface *surface, +_X_EXPORT Status XvMCPutSurface(Display *display,XvMCSurface *surface, Drawable draw, short srcx, short srcy, unsigned short srcw, unsigned short srch, short destx, short desty, @@ -3258,7 +3258,7 @@ Status XvMCPutSurface(Display *display,XvMCSurface *surface, // Info: // Returns: Status ***************************************************************************/ -Status XvMCSyncSurface(Display *display,XvMCSurface *surface) { +_X_EXPORT Status XvMCSyncSurface(Display *display,XvMCSurface *surface) { Status ret; int stat=0; /* @@ -3284,7 +3284,7 @@ Status XvMCSyncSurface(Display *display,XvMCSurface *surface) { // render. There is little gain to be had with 4k buffers. // Returns: Status ***************************************************************************/ -Status XvMCFlushSurface(Display * display, XvMCSurface *surface) { +_X_EXPORT Status XvMCFlushSurface(Display * display, XvMCSurface *surface) { return Success; } @@ -3300,7 +3300,7 @@ Status XvMCFlushSurface(Display * display, XvMCSurface *surface) { // XVMC_DISPLAYING - The surface is currently being displayed or a // display is pending. ***************************************************************************/ -Status XvMCGetSurfaceStatus(Display *display, XvMCSurface *surface, +_X_EXPORT Status XvMCGetSurfaceStatus(Display *display, XvMCSurface *surface, int *stat) { i810XvMCSurface *privSurface; i810XvMCContext *pI810XvMC; @@ -3376,7 +3376,7 @@ Status XvMCGetSurfaceStatus(Display *display, XvMCSurface *surface, // // Returns: Status ***************************************************************************/ -Status XvMCHideSurface(Display *display, XvMCSurface *surface) { +_X_EXPORT Status XvMCHideSurface(Display *display, XvMCSurface *surface) { i810XvMCSurface *pI810Surface; i810XvMCContext *pI810XvMC; int ss, xx; @@ -3473,7 +3473,7 @@ Status XvMCHideSurface(Display *display, XvMCSurface *surface) { // // Returns: Status ***************************************************************************/ -Status XvMCCreateSubpicture(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCCreateSubpicture(Display *display, XvMCContext *context, XvMCSubpicture *subpicture, unsigned short width, unsigned short height, int xvimage_id) { @@ -3603,7 +3603,7 @@ Status XvMCCreateSubpicture(Display *display, XvMCContext *context, // // Returns: Status ***************************************************************************/ -Status XvMCClearSubpicture(Display *display, XvMCSubpicture *subpicture, +_X_EXPORT Status XvMCClearSubpicture(Display *display, XvMCSubpicture *subpicture, short x, short y, unsigned short width, unsigned short height, unsigned int color) { @@ -3658,7 +3658,7 @@ Status XvMCClearSubpicture(Display *display, XvMCSubpicture *subpicture, // // Returns: Status ***************************************************************************/ -Status XvMCCompositeSubpicture(Display *display, XvMCSubpicture *subpicture, +_X_EXPORT Status XvMCCompositeSubpicture(Display *display, XvMCSubpicture *subpicture, XvImage *image, short srcx, short srcy, unsigned short width, unsigned short height, @@ -3722,7 +3722,7 @@ Status XvMCCompositeSubpicture(Display *display, XvMCSubpicture *subpicture, // // Returns: Status ***************************************************************************/ -Status XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture) { +_X_EXPORT Status XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture) { i810XvMCSubpicture *pI810Subpicture; i810XvMCContext *pI810XvMC; @@ -3766,7 +3766,7 @@ Status XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture) { // Returns: Status ***************************************************************************/ -Status XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, +_X_EXPORT Status XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, unsigned char *palette) { i810XvMCSubpicture *privSubpicture; int i,j; @@ -3811,7 +3811,7 @@ Status XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, // // Returns: Status ***************************************************************************/ -Status XvMCBlendSubpicture(Display *display, XvMCSurface *target_surface, +_X_EXPORT Status XvMCBlendSubpicture(Display *display, XvMCSurface *target_surface, XvMCSubpicture *subpicture, short subx, short suby, unsigned short subw, unsigned short subh, @@ -3849,7 +3849,7 @@ Status XvMCBlendSubpicture(Display *display, XvMCSurface *target_surface, // // Returns: Status ***************************************************************************/ -Status XvMCBlendSubpicture2(Display *display, +_X_EXPORT Status XvMCBlendSubpicture2(Display *display, XvMCSurface *source_surface, XvMCSurface *target_surface, XvMCSubpicture *subpicture, @@ -4227,7 +4227,7 @@ Status XvMCBlendSubpicture2(Display *display, // // Returns: Status ***************************************************************************/ -Status XvMCSyncSubpicture(Display *display, XvMCSubpicture *subpicture) { +_X_EXPORT Status XvMCSyncSubpicture(Display *display, XvMCSubpicture *subpicture) { Status ret; int stat=0; do { @@ -4250,7 +4250,7 @@ Status XvMCSyncSubpicture(Display *display, XvMCSubpicture *subpicture) { // Returns: Status // NOTES: i810 always dispatches commands so flush is a no-op ***************************************************************************/ -Status XvMCFlushSubpicture(Display *display, XvMCSubpicture *subpicture) { +_X_EXPORT Status XvMCFlushSubpicture(Display *display, XvMCSubpicture *subpicture) { if(display == NULL) { return BadValue; } @@ -4280,7 +4280,7 @@ Status XvMCFlushSubpicture(Display *display, XvMCSubpicture *subpicture) { // never actually displaying, only a copy of it is displaying. We only // have to worry about the rendering case. ***************************************************************************/ -Status XvMCGetSubpictureStatus(Display *display, XvMCSubpicture *subpicture, +_X_EXPORT Status XvMCGetSubpictureStatus(Display *display, XvMCSubpicture *subpicture, int *stat) { i810XvMCSubpicture *privSubpicture; @@ -4341,7 +4341,7 @@ static XvAttribute I810_XVMC_ATTRIBUTES[] = { // XV_CONTRAST // XV_SATURATION ***************************************************************************/ -XvAttribute *XvMCQueryAttributes(Display *display, XvMCContext *context, +_X_EXPORT XvAttribute *XvMCQueryAttributes(Display *display, XvMCContext *context, int *number) { i810XvMCContext *pI810XvMC; XvAttribute *attributes; @@ -4397,7 +4397,7 @@ XvAttribute *XvMCQueryAttributes(Display *display, XvMCContext *context, // XV_CONTRAST // XV_SATURATION ***************************************************************************/ -Status XvMCSetAttribute(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCSetAttribute(Display *display, XvMCContext *context, Atom attribute, int value) { i810XvMCContext *pI810XvMC; @@ -4468,7 +4468,7 @@ Status XvMCSetAttribute(Display *display, XvMCContext *context, // XV_CONTRAST // XV_SATURATION ***************************************************************************/ -Status XvMCGetAttribute(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCGetAttribute(Display *display, XvMCContext *context, Atom attribute, int *value) { i810XvMCContext *pI810XvMC; diff --git a/driver/xf86-video-intel/src/xvmc/Makefile.am b/driver/xf86-video-intel/src/xvmc/Makefile.am index 345160fb6..a376eb7f5 100644 --- a/driver/xf86-video-intel/src/xvmc/Makefile.am +++ b/driver/xf86-video-intel/src/xvmc/Makefile.am @@ -1,28 +1,126 @@ if XVMC lib_LTLIBRARIES=libI810XvMC.la libIntelXvMC.la +endif libI810XvMC_la_SOURCES = I810XvMC.c \ I810XvMC.h -libI810XvMC_la_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRI_CFLAGS@ \ +libI810XvMC_la_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ \ -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0 libI810XvMC_la_LDFLAGS = -version-number 1:0:0 -libI810XvMC_la_LIBADD = @DRI_LIBS@ +libI810XvMC_la_LIBADD = @DRI_LIBS@ @DRM_LIBS@ @XVMCLIB_LIBS@ libIntelXvMC_la_SOURCES = intel_xvmc.c \ - intel_xvmc.h \ - intel_xvmc_dump.c \ - i915_structs.h \ - i915_program.h \ - i915_xvmc.c \ - i915_xvmc.h \ - intel_batchbuffer.c \ - intel_batchbuffer.h \ - xf86dri.c \ - xf86dri.h \ - xf86dristr.h - -libIntelXvMC_la_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ @XVMCLIB_CFLAGS@ -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0 + intel_xvmc.h \ + intel_xvmc_dump.c \ + i915_structs.h \ + i915_program.h \ + i915_xvmc.c \ + i915_xvmc.h \ + i965_xvmc.c \ + i965_xvmc.h \ + intel_batchbuffer.c \ + intel_batchbuffer.h \ + xf86dri.c \ + xf86dri.h \ + xf86dristr.h + +libIntelXvMC_la_CFLAGS = @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ \ + @XVMCLIB_CFLAGS@ -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0 libIntelXvMC_la_LDFLAGS = -version-number 1:0:0 -libIntelXvMC_la_LIBADD = @DRI_LIBS@ +libIntelXvMC_la_LIBADD = @DRI_LIBS@ @DRM_LIBS@ @XVMCLIB_LIBS@ @XEXT_LIBS@ -lpthread + +INTEL_G4A = \ + dual_prime_igd.g4a \ + field_backward_igd.g4a \ + field_f_b_igd.g4a \ + field_forward_igd.g4a \ + frame_backward_igd.g4a \ + frame_f_b_igd.g4a \ + frame_forward_igd.g4a \ + dual_prime.g4a \ + field_backward.g4a \ + field_f_b.g4a \ + field_forward.g4a \ + frame_backward.g4a \ + frame_f_b.g4a \ + frame_forward.g4a \ + ipicture.g4a \ + null.g4a + +INTEL_G4I = \ + addidct.g4i \ + block_clear.g4i \ + read_frame_x0y0_y.g4i \ + read_frame_x0y1_y.g4i \ + read_frame_x1y0_y.g4i \ + read_frame_x1y1_y.g4i \ + read_frame_x0y0_uv.g4i \ + read_frame_x0y1_uv.g4i \ + read_frame_x1y0_uv.g4i \ + read_frame_x1y1_uv.g4i \ + read_frame_x0y0_y_igd.g4i \ + read_frame_x0y1_y_igd.g4i \ + read_frame_x1y0_y_igd.g4i \ + read_frame_x1y1_y_igd.g4i \ + read_frame_x0y0_uv_igd.g4i \ + read_frame_x0y1_uv_igd.g4i \ + read_frame_x1y0_uv_igd.g4i \ + read_frame_x1y1_uv_igd.g4i \ + motion_frame_y.g4i \ + motion_frame_uv.g4i \ + read_field_x0y0_y.g4i \ + read_field_x0y1_y.g4i \ + read_field_x1y0_y.g4i \ + read_field_x1y1_y.g4i \ + read_field_x0y0_uv.g4i \ + read_field_x0y1_uv.g4i \ + read_field_x1y0_uv.g4i \ + read_field_x1y1_uv.g4i \ + read_field_x0y0_y_igd.g4i \ + read_field_x0y1_y_igd.g4i \ + read_field_x1y0_y_igd.g4i \ + read_field_x1y1_y_igd.g4i \ + read_field_x0y0_uv_igd.g4i \ + read_field_x0y1_uv_igd.g4i \ + read_field_x1y0_uv_igd.g4i \ + read_field_x1y1_uv_igd.g4i \ + motion_field_y.g4i \ + motion_field_uv.g4i + +INTEL_G4B = \ + dual_prime.g4b \ + field_backward.g4b \ + field_f_b.g4b \ + field_forward.g4b \ + frame_backward.g4b \ + frame_f_b.g4b \ + frame_forward.g4b \ + dual_prime_igd.g4b \ + field_backward_igd.g4b \ + field_f_b_igd.g4b \ + field_forward_igd.g4b \ + frame_backward_igd.g4b \ + frame_f_b_igd.g4b \ + frame_forward_igd.g4b \ + ipicture.g4b \ + null.g4b + +EXTRA_DIST = \ + $(INTEL_G4A) \ + $(INTEL_G4I) \ + $(INTEL_G4B) + +if HAVE_GEN4ASM + +SUFFIXES = .g4a .g4b +.g4a.g4b: + m4 $*.g4a > $*.g4m && intel-gen4asm -o $@ $*.g4m && rm $*.g4m + +$(INTEL_G4B): $(INTEL_G4I) + +BUILT_SOURCES= $(INTEL_G4B) + +clean-local: + -rm -f $(INTEL_G4B) endif diff --git a/driver/xf86-video-intel/src/xvmc/Makefile.in b/driver/xf86-video-intel/src/xvmc/Makefile.in index 94e92510c..52b2737ca 100644 --- a/driver/xf86-video-intel/src/xvmc/Makefile.in +++ b/driver/xf86-video-intel/src/xvmc/Makefile.in @@ -56,20 +56,15 @@ am__installdirs = "$(DESTDIR)$(libdir)" libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) libI810XvMC_la_DEPENDENCIES = -am__libI810XvMC_la_SOURCES_DIST = I810XvMC.c I810XvMC.h -@XVMC_TRUE@am_libI810XvMC_la_OBJECTS = libI810XvMC_la-I810XvMC.lo +am_libI810XvMC_la_OBJECTS = libI810XvMC_la-I810XvMC.lo libI810XvMC_la_OBJECTS = $(am_libI810XvMC_la_OBJECTS) @XVMC_TRUE@am_libI810XvMC_la_rpath = -rpath $(libdir) libIntelXvMC_la_DEPENDENCIES = -am__libIntelXvMC_la_SOURCES_DIST = intel_xvmc.c intel_xvmc.h \ - intel_xvmc_dump.c i915_structs.h i915_program.h i915_xvmc.c \ - i915_xvmc.h intel_batchbuffer.c intel_batchbuffer.h xf86dri.c \ - xf86dri.h xf86dristr.h -@XVMC_TRUE@am_libIntelXvMC_la_OBJECTS = libIntelXvMC_la-intel_xvmc.lo \ -@XVMC_TRUE@ libIntelXvMC_la-intel_xvmc_dump.lo \ -@XVMC_TRUE@ libIntelXvMC_la-i915_xvmc.lo \ -@XVMC_TRUE@ libIntelXvMC_la-intel_batchbuffer.lo \ -@XVMC_TRUE@ libIntelXvMC_la-xf86dri.lo +am_libIntelXvMC_la_OBJECTS = libIntelXvMC_la-intel_xvmc.lo \ + libIntelXvMC_la-intel_xvmc_dump.lo \ + libIntelXvMC_la-i915_xvmc.lo libIntelXvMC_la-i965_xvmc.lo \ + libIntelXvMC_la-intel_batchbuffer.lo \ + libIntelXvMC_la-xf86dri.lo libIntelXvMC_la_OBJECTS = $(am_libIntelXvMC_la_OBJECTS) @XVMC_TRUE@am_libIntelXvMC_la_rpath = -rpath $(libdir) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) @@ -81,8 +76,7 @@ CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(libI810XvMC_la_SOURCES) $(libIntelXvMC_la_SOURCES) -DIST_SOURCES = $(am__libI810XvMC_la_SOURCES_DIST) \ - $(am__libIntelXvMC_la_SOURCES_DIST) +DIST_SOURCES = $(libI810XvMC_la_SOURCES) $(libIntelXvMC_la_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -123,6 +117,10 @@ DRI_CFLAGS = @DRI_CFLAGS@ DRI_FALSE = @DRI_FALSE@ DRI_LIBS = @DRI_LIBS@ DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ DSYMUTIL = @DSYMUTIL@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -134,6 +132,7 @@ F77 = @F77@ FFLAGS = @FFLAGS@ FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ INSTALL_DATA = @INSTALL_DATA@ @@ -178,6 +177,8 @@ PKG_CONFIG = @PKG_CONFIG@ PS2PDF = @PS2PDF@ RANLIB = @RANLIB@ SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -185,6 +186,8 @@ VERSION = @VERSION@ VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ XMODES_CFLAGS = @XMODES_CFLAGS@ XMODES_FALSE = @XMODES_FALSE@ XMODES_TRUE = @XMODES_TRUE@ @@ -196,15 +199,9 @@ XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ XVMCLIB_LIBS = @XVMCLIB_LIBS@ XVMC_FALSE = @XVMC_FALSE@ XVMC_TRUE = @XVMC_TRUE@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_NMEDIT = @ac_ct_NMEDIT@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ @@ -221,6 +218,9 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ gen4asm = @gen4asm@ host = @host@ @@ -228,51 +228,143 @@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ moduledir = @moduledir@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ @XVMC_TRUE@lib_LTLIBRARIES = libI810XvMC.la libIntelXvMC.la -@XVMC_TRUE@libI810XvMC_la_SOURCES = I810XvMC.c \ -@XVMC_TRUE@ I810XvMC.h - -@XVMC_TRUE@libI810XvMC_la_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRI_CFLAGS@ \ -@XVMC_TRUE@ -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0 - -@XVMC_TRUE@libI810XvMC_la_LDFLAGS = -version-number 1:0:0 -@XVMC_TRUE@libI810XvMC_la_LIBADD = @DRI_LIBS@ -@XVMC_TRUE@libIntelXvMC_la_SOURCES = intel_xvmc.c \ -@XVMC_TRUE@ intel_xvmc.h \ -@XVMC_TRUE@ intel_xvmc_dump.c \ -@XVMC_TRUE@ i915_structs.h \ -@XVMC_TRUE@ i915_program.h \ -@XVMC_TRUE@ i915_xvmc.c \ -@XVMC_TRUE@ i915_xvmc.h \ -@XVMC_TRUE@ intel_batchbuffer.c \ -@XVMC_TRUE@ intel_batchbuffer.h \ -@XVMC_TRUE@ xf86dri.c \ -@XVMC_TRUE@ xf86dri.h \ -@XVMC_TRUE@ xf86dristr.h - -@XVMC_TRUE@libIntelXvMC_la_CFLAGS = @XORG_CFLAGS@ @DRI_CFLAGS@ @XVMCLIB_CFLAGS@ -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0 -@XVMC_TRUE@libIntelXvMC_la_LDFLAGS = -version-number 1:0:0 -@XVMC_TRUE@libIntelXvMC_la_LIBADD = @DRI_LIBS@ -all: all-am +libI810XvMC_la_SOURCES = I810XvMC.c \ + I810XvMC.h + +libI810XvMC_la_CFLAGS = @WARN_CFLAGS@ @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ \ + -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0 + +libI810XvMC_la_LDFLAGS = -version-number 1:0:0 +libI810XvMC_la_LIBADD = @DRI_LIBS@ @DRM_LIBS@ @XVMCLIB_LIBS@ +libIntelXvMC_la_SOURCES = intel_xvmc.c \ + intel_xvmc.h \ + intel_xvmc_dump.c \ + i915_structs.h \ + i915_program.h \ + i915_xvmc.c \ + i915_xvmc.h \ + i965_xvmc.c \ + i965_xvmc.h \ + intel_batchbuffer.c \ + intel_batchbuffer.h \ + xf86dri.c \ + xf86dri.h \ + xf86dristr.h + +libIntelXvMC_la_CFLAGS = @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ \ + @XVMCLIB_CFLAGS@ -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0 + +libIntelXvMC_la_LDFLAGS = -version-number 1:0:0 +libIntelXvMC_la_LIBADD = @DRI_LIBS@ @DRM_LIBS@ @XVMCLIB_LIBS@ @XEXT_LIBS@ -lpthread +INTEL_G4A = \ + dual_prime_igd.g4a \ + field_backward_igd.g4a \ + field_f_b_igd.g4a \ + field_forward_igd.g4a \ + frame_backward_igd.g4a \ + frame_f_b_igd.g4a \ + frame_forward_igd.g4a \ + dual_prime.g4a \ + field_backward.g4a \ + field_f_b.g4a \ + field_forward.g4a \ + frame_backward.g4a \ + frame_f_b.g4a \ + frame_forward.g4a \ + ipicture.g4a \ + null.g4a + +INTEL_G4I = \ + addidct.g4i \ + block_clear.g4i \ + read_frame_x0y0_y.g4i \ + read_frame_x0y1_y.g4i \ + read_frame_x1y0_y.g4i \ + read_frame_x1y1_y.g4i \ + read_frame_x0y0_uv.g4i \ + read_frame_x0y1_uv.g4i \ + read_frame_x1y0_uv.g4i \ + read_frame_x1y1_uv.g4i \ + read_frame_x0y0_y_igd.g4i \ + read_frame_x0y1_y_igd.g4i \ + read_frame_x1y0_y_igd.g4i \ + read_frame_x1y1_y_igd.g4i \ + read_frame_x0y0_uv_igd.g4i \ + read_frame_x0y1_uv_igd.g4i \ + read_frame_x1y0_uv_igd.g4i \ + read_frame_x1y1_uv_igd.g4i \ + motion_frame_y.g4i \ + motion_frame_uv.g4i \ + read_field_x0y0_y.g4i \ + read_field_x0y1_y.g4i \ + read_field_x1y0_y.g4i \ + read_field_x1y1_y.g4i \ + read_field_x0y0_uv.g4i \ + read_field_x0y1_uv.g4i \ + read_field_x1y0_uv.g4i \ + read_field_x1y1_uv.g4i \ + read_field_x0y0_y_igd.g4i \ + read_field_x0y1_y_igd.g4i \ + read_field_x1y0_y_igd.g4i \ + read_field_x1y1_y_igd.g4i \ + read_field_x0y0_uv_igd.g4i \ + read_field_x0y1_uv_igd.g4i \ + read_field_x1y0_uv_igd.g4i \ + read_field_x1y1_uv_igd.g4i \ + motion_field_y.g4i \ + motion_field_uv.g4i + +INTEL_G4B = \ + dual_prime.g4b \ + field_backward.g4b \ + field_f_b.g4b \ + field_forward.g4b \ + frame_backward.g4b \ + frame_f_b.g4b \ + frame_forward.g4b \ + dual_prime_igd.g4b \ + field_backward_igd.g4b \ + field_f_b_igd.g4b \ + field_forward_igd.g4b \ + frame_backward_igd.g4b \ + frame_f_b_igd.g4b \ + frame_forward_igd.g4b \ + ipicture.g4b \ + null.g4b + +EXTRA_DIST = \ + $(INTEL_G4A) \ + $(INTEL_G4I) \ + $(INTEL_G4B) + +@HAVE_GEN4ASM_TRUE@SUFFIXES = .g4a .g4b +@HAVE_GEN4ASM_TRUE@BUILT_SOURCES = $(INTEL_G4B) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: -.SUFFIXES: .c .lo .o .obj +.SUFFIXES: .g4a .g4b .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -342,6 +434,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libI810XvMC_la-I810XvMC.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIntelXvMC_la-i915_xvmc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIntelXvMC_la-i965_xvmc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIntelXvMC_la-intel_batchbuffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIntelXvMC_la-intel_xvmc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIntelXvMC_la-intel_xvmc_dump.Plo@am__quote@ @@ -396,6 +489,13 @@ libIntelXvMC_la-i915_xvmc.lo: i915_xvmc.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIntelXvMC_la_CFLAGS) $(CFLAGS) -c -o libIntelXvMC_la-i915_xvmc.lo `test -f 'i915_xvmc.c' || echo '$(srcdir)/'`i915_xvmc.c +libIntelXvMC_la-i965_xvmc.lo: i965_xvmc.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIntelXvMC_la_CFLAGS) $(CFLAGS) -MT libIntelXvMC_la-i965_xvmc.lo -MD -MP -MF "$(DEPDIR)/libIntelXvMC_la-i965_xvmc.Tpo" -c -o libIntelXvMC_la-i965_xvmc.lo `test -f 'i965_xvmc.c' || echo '$(srcdir)/'`i965_xvmc.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libIntelXvMC_la-i965_xvmc.Tpo" "$(DEPDIR)/libIntelXvMC_la-i965_xvmc.Plo"; else rm -f "$(DEPDIR)/libIntelXvMC_la-i965_xvmc.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='i965_xvmc.c' object='libIntelXvMC_la-i965_xvmc.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIntelXvMC_la_CFLAGS) $(CFLAGS) -c -o libIntelXvMC_la-i965_xvmc.lo `test -f 'i965_xvmc.c' || echo '$(srcdir)/'`i965_xvmc.c + libIntelXvMC_la-intel_batchbuffer.lo: intel_batchbuffer.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libIntelXvMC_la_CFLAGS) $(CFLAGS) -MT libIntelXvMC_la-intel_batchbuffer.lo -MD -MP -MF "$(DEPDIR)/libIntelXvMC_la-intel_batchbuffer.Tpo" -c -o libIntelXvMC_la-intel_batchbuffer.lo `test -f 'intel_batchbuffer.c' || echo '$(srcdir)/'`intel_batchbuffer.c; \ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/libIntelXvMC_la-intel_batchbuffer.Tpo" "$(DEPDIR)/libIntelXvMC_la-intel_batchbuffer.Plo"; else rm -f "$(DEPDIR)/libIntelXvMC_la-intel_batchbuffer.Tpo"; exit 1; fi @@ -496,13 +596,15 @@ distdir: $(DISTFILES) fi; \ done check-am: all-am -check: check-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done -install: install-am +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am @@ -526,9 +628,11 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +@HAVE_GEN4ASM_FALSE@clean-local: clean: clean-am -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ mostlyclean-am distclean: distclean-am @@ -578,7 +682,7 @@ ps-am: uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags distclean \ + clean-libLTLIBRARIES clean-libtool clean-local ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-exec \ @@ -590,6 +694,13 @@ uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES tags uninstall uninstall-am uninstall-info-am \ uninstall-libLTLIBRARIES +@HAVE_GEN4ASM_TRUE@.g4a.g4b: +@HAVE_GEN4ASM_TRUE@ m4 $*.g4a > $*.g4m && intel-gen4asm -o $@ $*.g4m && rm $*.g4m + +@HAVE_GEN4ASM_TRUE@$(INTEL_G4B): $(INTEL_G4I) + +@HAVE_GEN4ASM_TRUE@clean-local: +@HAVE_GEN4ASM_TRUE@ -rm -f $(INTEL_G4B) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/driver/xf86-video-intel/src/xvmc/addidct.g4i b/driver/xf86-video-intel/src/xvmc/addidct.g4i new file mode 100644 index 000000000..bd3d5fe56 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/addidct.g4i @@ -0,0 +1,152 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g1.0<1>UD g76.0<8,8,1>UD{align1}; +//mov (8) g2.0<1>UD g77.0<8,8,1>UD{align1}; + +mov (16) g44.1<2>UB 0W {align1}; +mov (16) g45.1<2>UB 0W {align1}; +mov (16) g46.1<2>UB 0W {align1}; +mov (16) g47.1<2>UB 0W {align1}; +mov (16) g48.1<2>UB 0W {align1}; +mov (16) g49.1<2>UB 0W {align1}; +mov (16) g50.1<2>UB 0W {align1}; +mov (16) g51.1<2>UB 0W {align1}; + +and.nz (1) null g1.30<1,1,1>UB 1UW {align1}; //dct_type +(f0) jmpi field_dct; +//jmpi field_dct; +add (16) g28.0<1>W g3.0<16,16,1>W g28.0<16,16,2>UB {align1}; +add (16) g29.0<1>W g4.0<16,16,1>W g29.0<16,16,2>UB {align1}; +add (16) g30.0<1>W g5.0<16,16,1>W g30.0<16,16,2>UB {align1}; +add (16) g31.0<1>W g6.0<16,16,1>W g31.0<16,16,2>UB {align1}; +add (16) g32.0<1>W g7.0<16,16,1>W g32.0<16,16,2>UB {align1}; +add (16) g33.0<1>W g8.0<16,16,1>W g33.0<16,16,2>UB {align1}; +add (16) g34.0<1>W g9.0<16,16,1>W g34.0<16,16,2>UB {align1}; +add (16) g35.0<1>W g10.0<16,16,1>W g35.0<16,16,2>UB {align1}; +add (16) g36.0<1>W g11.0<16,16,1>W g36.0<16,16,2>UB {align1}; +add (16) g37.0<1>W g12.0<16,16,1>W g37.0<16,16,2>UB {align1}; +add (16) g38.0<1>W g13.0<16,16,1>W g38.0<16,16,2>UB {align1}; +add (16) g39.0<1>W g14.0<16,16,1>W g39.0<16,16,2>UB {align1}; +add (16) g40.0<1>W g15.0<16,16,1>W g40.0<16,16,2>UB {align1}; +add (16) g41.0<1>W g16.0<16,16,1>W g41.0<16,16,2>UB {align1}; +add (16) g42.0<1>W g17.0<16,16,1>W g42.0<16,16,2>UB {align1}; +add (16) g43.0<1>W g18.0<16,16,1>W g43.0<16,16,2>UB {align1}; +jmpi write_back; + +field_dct: +add (16) g28.0<1>W g3.0<16,16,1>W g28.0<16,16,2>UB {align1}; +add (16) g29.0<1>W g11.0<16,16,1>W g29.0<16,16,2>UB {align1}; +add (16) g30.0<1>W g4.0<16,16,1>W g30.0<16,16,2>UB {align1}; +add (16) g31.0<1>W g12.0<16,16,1>W g31.0<16,16,2>UB {align1}; +add (16) g32.0<1>W g5.0<16,16,1>W g32.0<16,16,2>UB {align1}; +add (16) g33.0<1>W g13.0<16,16,1>W g33.0<16,16,2>UB {align1}; +add (16) g34.0<1>W g6.0<16,16,1>W g34.0<16,16,2>UB {align1}; +add (16) g35.0<1>W g14.0<16,16,1>W g35.0<16,16,2>UB {align1}; +add (16) g36.0<1>W g7.0<16,16,1>W g36.0<16,16,2>UB {align1}; +add (16) g37.0<1>W g15.0<16,16,1>W g37.0<16,16,2>UB {align1}; +add (16) g38.0<1>W g8.0<16,16,1>W g38.0<16,16,2>UB {align1}; +add (16) g39.0<1>W g16.0<16,16,1>W g39.0<16,16,2>UB {align1}; +add (16) g40.0<1>W g9.0<16,16,1>W g40.0<16,16,2>UB {align1}; +add (16) g41.0<1>W g17.0<16,16,1>W g41.0<16,16,2>UB {align1}; +add (16) g42.0<1>W g10.0<16,16,1>W g42.0<16,16,2>UB {align1}; +add (16) g43.0<1>W g18.0<16,16,1>W g43.0<16,16,2>UB {align1}; + +write_back: +mov (1) g1.8<1>UD 0x00F000FUD {align1}; +mov.sat (16) g28.0<2>UB g28.0<16,16,1>W {align1}; +mov.sat (16) g29.0<2>UB g29.0<16,16,1>W {align1}; +mov.sat (16) g30.0<2>UB g30.0<16,16,1>W {align1}; +mov.sat (16) g31.0<2>UB g31.0<16,16,1>W {align1}; +mov.sat (16) g32.0<2>UB g32.0<16,16,1>W {align1}; +mov.sat (16) g33.0<2>UB g33.0<16,16,1>W {align1}; +mov.sat (16) g34.0<2>UB g34.0<16,16,1>W {align1}; +mov.sat (16) g35.0<2>UB g35.0<16,16,1>W {align1}; +mov.sat (16) g36.0<2>UB g36.0<16,16,1>W {align1}; +mov.sat (16) g37.0<2>UB g37.0<16,16,1>W {align1}; +mov.sat (16) g38.0<2>UB g38.0<16,16,1>W {align1}; +mov.sat (16) g39.0<2>UB g39.0<16,16,1>W {align1}; +mov.sat (16) g40.0<2>UB g40.0<16,16,1>W {align1}; +mov.sat (16) g41.0<2>UB g41.0<16,16,1>W {align1}; +mov.sat (16) g42.0<2>UB g42.0<16,16,1>W {align1}; +mov.sat (16) g43.0<2>UB g43.0<16,16,1>W {align1}; + +mov (16) m1.0<1>UB g28.0<16,16,2>UB {align1}; +mov (16) m1.16<1>UB g29.0<16,16,2>UB {align1}; +mov (16) m2.0<1>UB g30.0<16,16,2>UB {align1}; +mov (16) m2.16<1>UB g31.0<16,16,2>UB {align1}; +mov (16) m3.0<1>UB g32.0<16,16,2>UB {align1}; +mov (16) m3.16<1>UB g33.0<16,16,2>UB {align1}; +mov (16) m4.0<1>UB g34.0<16,16,2>UB {align1}; +mov (16) m4.16<1>UB g35.0<16,16,2>UB {align1}; +mov (16) m5.0<1>UB g36.0<16,16,2>UB {align1}; +mov (16) m5.16<1>UB g37.0<16,16,2>UB {align1}; +mov (16) m6.0<1>UB g38.0<16,16,2>UB {align1}; +mov (16) m6.16<1>UB g39.0<16,16,2>UB {align1}; +mov (16) m7.0<1>UB g40.0<16,16,2>UB {align1}; +mov (16) m7.16<1>UB g41.0<16,16,2>UB {align1}; +mov (16) m8.0<1>UB g42.0<16,16,2>UB {align1}; +mov (16) m8.16<1>UB g43.0<16,16,2>UB {align1}; +send (16) 0 acc0<1>UW g1<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1}; + +//U +mov (1) g1.8<1>UD 0x0070007UD { align1 }; +shr (2) g1.0<1>UD g1.0<2,2,1>UD 1D {align1}; +add (16) g44.0<1>UW g19.0<16,16,1>W g44.0<16,16,1>UW {align1}; +add (16) g45.0<1>UW g20.0<16,16,1>W g45.0<16,16,1>UW {align1}; +add (16) g46.0<1>UW g21.0<16,16,1>W g46.0<16,16,1>UW {align1}; +add (16) g47.0<1>UW g22.0<16,16,1>W g47.0<16,16,1>UW {align1}; +mov.sat (16) g44.0<2>UB g44.0<16,16,1>UW {align1}; +mov.sat (16) g45.0<2>UB g45.0<16,16,1>UW {align1}; +mov.sat (16) g46.0<2>UB g46.0<16,16,1>UW {align1}; +mov.sat (16) g47.0<2>UB g47.0<16,16,1>UW {align1}; + +mov (16) m1.0<1>UB g44.0<16,16,2>UB {align1}; +mov (16) m1.16<1>UB g45.0<16,16,2>UB {align1}; +mov (16) m2.0<1>UB g46.0<16,16,2>UB {align1}; +mov (16) m2.16<1>UB g47.0<16,16,2>UB {align1}; +send (16) 0 acc0<1>UW g1<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 }; + +//V +add (16) g48.0<1>UW g23.0<16,16,1>W g48.0<16,16,1>UW {align1}; +add (16) g49.0<1>UW g24.0<16,16,1>W g49.0<16,16,1>UW {align1}; +add (16) g50.0<1>UW g25.0<16,16,1>W g50.0<16,16,1>UW {align1}; +add (16) g51.0<1>UW g26.0<16,16,1>W g51.0<16,16,1>UW {align1}; +mov.sat (16) g48.0<2>UB g48.0<16,16,1>UW {align1}; +mov.sat (16) g49.0<2>UB g49.0<16,16,1>UW {align1}; +mov.sat (16) g50.0<2>UB g50.0<16,16,1>UW {align1}; +mov.sat (16) g51.0<2>UB g51.0<16,16,1>UW {align1}; + +mov (16) m1.0<1>UB g48.0<16,16,2>UB {align1}; +mov (16) m1.16<1>UB g49.0<16,16,2>UB {align1}; +mov (16) m2.0<1>UB g50.0<16,16,2>UB {align1}; +mov (16) m2.16<1>UB g51.0<16,16,2>UB {align1}; +send (16) 0 acc0<1>UW g1<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 }; + +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/backward.g4b b/driver/xf86-video-intel/src/xvmc/backward.g4b new file mode 100644 index 000000000..f1e9edd33 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/backward.g4b @@ -0,0 +1,1472 @@ + { 0x00200001, 0x20300021, 0x00450038, 0x00000000 }, + { 0x00600001, 0x20600021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450060, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00000040, 0x20201c21, 0x00210060, 0x00000008 }, + { 0x00000040, 0x20241c21, 0x00210064, 0x00000000 }, + { 0x80200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00000040, 0x20201c21, 0x00210060, 0x00000000 }, + { 0x00000040, 0x20241c21, 0x00210064, 0x00000008 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00200040, 0x20201c21, 0x00450060, 0x00000008 }, + { 0x80200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00200008, 0x20200c21, 0x00450060, 0x00000001 }, + { 0x0020000c, 0x20701ca5, 0x00450070, 0x00000001 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a008 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a008 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a008 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a008 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/block_clear.g4i b/driver/xf86-video-intel/src/xvmc/block_clear.g4i new file mode 100644 index 000000000..ce12f3b53 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/block_clear.g4i @@ -0,0 +1,140 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * + */ + +and.nz (1) null g2.0<1,1,1>UD 0x1UD{align1}; +(f0) jmpi direct_idct; +add (1) g2.8<1>UD g76.8<1,1,1>UD 0UD{align1}; +send (16) 0 g3.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g4.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g5.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g6.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g7.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g8.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g9.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g10.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g11.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g12.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g13.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g14.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g15.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g16.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g17.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g18.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g19.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g20.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g21.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g22.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g23<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g24.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g25.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g26.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +direct_idct: + +and.nz (1) null g76.12<1,1,1>UW 0x20UW {align1}; +(f0) jmpi next_block; +mov (8) g3.0<1>UW 0UW {align1}; +mov (8) g4.0<1>UW 0UW {align1}; +mov (8) g5.0<1>UW 0UW {align1}; +mov (8) g6.0<1>UW 0UW {align1}; +mov (8) g7.0<1>UW 0UW {align1}; +mov (8) g8.0<1>UW 0UW {align1}; +mov (8) g9.0<1>UW 0UW {align1}; +mov (8) g10.0<1>UW 0UW {align1}; +next_block: + +and.nz (1) null g1.12<1,1,1>UW 0x10UW {align1}; +(f0) jmpi next_field; +mov (8) g3.16<1>UW 0UW {align1}; +mov (8) g4.16<1>UW 0UW {align1}; +mov (8) g5.16<1>UW 0UW {align1}; +mov (8) g6.16<1>UW 0UW {align1}; +mov (8) g7.16<1>UW 0UW {align1}; +mov (8) g8.16<1>UW 0UW {align1}; +mov (8) g9.16<1>UW 0UW {align1}; +mov (8) g10.16<1>UW 0UW {align1}; +next_field: +and.nz (1) null g1.12<1,1,1>UW 0x8UW {align1}; +(f0) jmpi next_field; +mov (8) g11.0<1>UW 0UW {align1}; +mov (8) g12.0<1>UW 0UW {align1}; +mov (8) g13.0<1>UW 0UW {align1}; +mov (8) g14.0<1>UW 0UW {align1}; +mov (8) g15.0<1>UW 0UW {align1}; +mov (8) g16.0<1>UW 0UW {align1}; +mov (8) g17.0<1>UW 0UW {align1}; +mov (8) g18.0<1>UW 0UW {align1}; +next_field: +and.nz (1) null g1.12<1,1,1>UW 0x4UW {align1}; +(f0) jmpi next_field; +mov (8) g11.16<1>UW 0UW {align1}; +mov (8) g12.16<1>UW 0UW {align1}; +mov (8) g13.16<1>UW 0UW {align1}; +mov (8) g14.16<1>UW 0UW {align1}; +mov (8) g15.16<1>UW 0UW {align1}; +mov (8) g16.16<1>UW 0UW {align1}; +mov (8) g17.16<1>UW 0UW {align1}; +mov (8) g18.16<1>UW 0UW {align1}; +next_field: + +and.nz (1) null g1.12<1,1,1>UW 0x2UW {align1}; +(f0) jmpi next_field; +mov (16) g19.0<1>UW 0UW {align1}; +mov (16) g20.0<1>UW 0UW {align1}; +mov (16) g21.0<1>UW 0UW {align1}; +mov (16) g22.0<1>UW 0UW {align1}; +next_field: + +and.nz (1) null g1.12<1,1,1>UW 0x1UW {align1}; +(f0) jmpi next_field; +mov (16) g23.0<1>UW 0UW {align1}; +mov (16) g24.0<1>UW 0UW {align1}; +mov (16) g25.0<1>UW 0UW {align1}; +mov (16) g26.0<1>UW 0UW {align1}; +next_field: diff --git a/driver/xf86-video-intel/src/xvmc/dual_prime.g4a b/driver/xf86-video-intel/src/xvmc/dual_prime.g4a new file mode 100644 index 000000000..7066a75b6 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/dual_prime.g4a @@ -0,0 +1,223 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (8) g116.0<1>UD g1.0<8,8,1>UD {align1}; + +/* forward---Y---first vector*/ +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`4') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_y.g4i') +mov (8) g52.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g54.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g56.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g58.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g60.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g62.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g64.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g66.0<1>UD g103.0<8,8,1>UD {align1}; + +/*forward---Y---second vector*/ +asr (2) g115.14<1>W g1.22<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x4UD {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`4') +define(`mv1',`g1.22') +define(`mv2',`g1.24') +include(`motion_field_y.g4i') +mov (8) g53.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g55.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g57.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g59.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g61.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g63.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g65.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g67.0<1>UD g103.0<8,8,1>UD {align1}; + +/*forward---UV---first vector*/ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`5') +define(`surface_v',`6') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_uv.g4i') +mov (8) g68.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g69.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g70.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g71.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g72.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g73.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g74.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g75.0<1>UW g85.0<8,8,1>UW {align1}; + +/*forward---UV---second vector */ +asr (2) g115.14<1>W g1.22<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x4UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.24') +define(`mv2',`g1.26') +include(`motion_field_uv.g4i') +mov (8) g68.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g69.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g70.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g71.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g72.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g73.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g74.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g75.16<1>UW g85.0<8,8,1>UW {align1}; + +/*backward---Y---first vector */ +mov(8) g1.0<1>UD g116.0<8,8,1>UD {align1}; +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +mov(1) g1.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.18<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_y.g4i') +mov (8) g28.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g30.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g32.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g34.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g36.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g38.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g40.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g42.0<1>UD g103.0<8,8,1>UD {align1}; + +/*backward---Y---second vector */ +asr (2) g115.14<1>W g1.26<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g2.20<1,1,1>UD 0x8UD {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_y.g4i') + +avg.sat (16) g28.0<1>UW g52.0<16,16,1>UW g28.0<16,16,1>UW {align1}; +avg.sat (16) g29.0<1>UW g53.0<16,16,1>UW g96.0<16,16,1>UW {align1}; +avg.sat (16) g30.0<1>UW g54.0<16,16,1>UW g30.0<16,16,1>UW {align1}; +avg.sat (16) g31.0<1>UW g55.0<16,16,1>UW g97.0<16,16,1>UW {align1}; +avg.sat (16) g32.0<1>UW g56.0<16,16,1>UW g32.0<16,16,1>UW {align1}; +avg.sat (16) g33.0<1>UW g57.0<16,16,1>UW g98.0<16,16,1>UW {align1}; +avg.sat (16) g34.0<1>UW g58.0<16,16,1>UW g34.0<16,16,1>UW {align1}; +avg.sat (16) g35.0<1>UW g59.0<16,16,1>UW g99.0<16,16,1>UW {align1}; +avg.sat (16) g36.0<1>UW g60.0<16,16,1>UW g36.0<16,16,1>UW {align1}; +avg.sat (16) g37.0<1>UW g61.0<16,16,1>UW g100.0<16,16,1>UW {align1}; +avg.sat (16) g38.0<1>UW g62.0<16,16,1>UW g38.0<16,16,1>UW {align1}; +avg.sat (16) g39.0<1>UW g63.0<16,16,1>UW g101.0<16,16,1>UW {align1}; +avg.sat (16) g40.0<1>UW g64.0<16,16,1>UW g40.0<16,16,1>UW {align1}; +avg.sat (16) g41.0<1>UW g65.0<16,16,1>UW g102.0<16,16,1>UW {align1}; +avg.sat (16) g42.0<1>UW g66.0<16,16,1>UW g42.0<16,16,1>UW {align1}; +avg.sat (16) g43.0<1>UW g67.0<16,16,1>UW g103.0<16,16,1>UW {align1}; + +/*backward---UV---first vector */ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.18<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`8') +define(`surface_v',`9') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_uv.g4i') +mov (8) g44.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.0<1>UW g85.0<8,8,1>UW {align1}; + +/*backward---UV---second vector */ +asr (2) g115.14<1>W g1.26<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x8UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_uv.g4i') +mov (8) g44.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.16<1>UW g85.0<8,8,1>UW {align1}; + +avg.sat (16) g44.0<1>UW g68.0<16,16,1>UW g44.0<16,16,1>UW {align1}; +avg.sat (16) g45.0<1>UW g69.0<16,16,1>UW g45.0<16,16,1>UW {align1}; +avg.sat (16) g46.0<1>UW g70.0<16,16,1>UW g46.0<16,16,1>UW {align1}; +avg.sat (16) g47.0<1>UW g71.0<16,16,1>UW g47.0<16,16,1>UW {align1}; +avg.sat (16) g48.0<1>UW g72.0<16,16,1>UW g48.0<16,16,1>UW {align1}; +avg.sat (16) g49.0<1>UW g73.0<16,16,1>UW g49.0<16,16,1>UW {align1}; +avg.sat (16) g50.0<1>UW g74.0<16,16,1>UW g50.0<16,16,1>UW {align1}; +avg.sat (16) g51.0<1>UW g75.0<16,16,1>UW g51.0<16,16,1>UW {align1}; + +include(`addidct.g4i') + +//send (16) 0 acc0<1>UW g0<8,8,1>UW +// thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/dual_prime.g4b b/driver/xf86-video-intel/src/xvmc/dual_prime.g4b new file mode 100644 index 000000000..4a1eb4bef --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/dual_prime.g4b @@ -0,0 +1,2486 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x26800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x26c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x27000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x27400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x27800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x27c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x28000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x28400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20000e3c, 0x0021003f, 0x00000004 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x26a00021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x26e00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x27200021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x27600021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x27a00021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x27e00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x28200021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x28600021, 0x008d0ce0, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x28800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x28a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x28c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x28e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x29000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x29200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x29400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x29600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x28900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x28b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x28d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x28f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x29100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x29300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x29500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x29700129, 0x008d0aa0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0e80, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00000001, 0x20280061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x23800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20000c3c, 0x00210054, 0x00000008 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x80800042, 0x23802529, 0x00b10680, 0x00b10380 }, + { 0x80800042, 0x23a02529, 0x00b106a0, 0x00b10c00 }, + { 0x80800042, 0x23c02529, 0x00b106c0, 0x00b103c0 }, + { 0x80800042, 0x23e02529, 0x00b106e0, 0x00b10c20 }, + { 0x80800042, 0x24002529, 0x00b10700, 0x00b10400 }, + { 0x80800042, 0x24202529, 0x00b10720, 0x00b10c40 }, + { 0x80800042, 0x24402529, 0x00b10740, 0x00b10440 }, + { 0x80800042, 0x24602529, 0x00b10760, 0x00b10c60 }, + { 0x80800042, 0x24802529, 0x00b10780, 0x00b10480 }, + { 0x80800042, 0x24a02529, 0x00b107a0, 0x00b10c80 }, + { 0x80800042, 0x24c02529, 0x00b107c0, 0x00b104c0 }, + { 0x80800042, 0x24e02529, 0x00b107e0, 0x00b10ca0 }, + { 0x80800042, 0x25002529, 0x00b10800, 0x00b10500 }, + { 0x80800042, 0x25202529, 0x00b10820, 0x00b10cc0 }, + { 0x80800042, 0x25402529, 0x00b10840, 0x00b10540 }, + { 0x80800042, 0x25602529, 0x00b10860, 0x00b10ce0 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x25800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x25900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26700129, 0x008d0aa0, 0x00000000 }, + { 0x80800042, 0x25802529, 0x00b10880, 0x00b10580 }, + { 0x80800042, 0x25a02529, 0x00b108a0, 0x00b105a0 }, + { 0x80800042, 0x25c02529, 0x00b108c0, 0x00b105c0 }, + { 0x80800042, 0x25e02529, 0x00b108e0, 0x00b105e0 }, + { 0x80800042, 0x26002529, 0x00b10900, 0x00b10600 }, + { 0x80800042, 0x26202529, 0x00b10920, 0x00b10620 }, + { 0x80800042, 0x26402529, 0x00b10940, 0x00b10640 }, + { 0x80800042, 0x26602529, 0x00b10960, 0x00b10660 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/dual_prime_igd.g4a b/driver/xf86-video-intel/src/xvmc/dual_prime_igd.g4a new file mode 100644 index 000000000..e741244bf --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/dual_prime_igd.g4a @@ -0,0 +1,223 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (8) g116.0<1>UD g1.0<8,8,1>UD {align1}; + +/* forward---Y---first vector*/ +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`4') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_y_igd.g4i') +mov (8) g52.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g54.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g56.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g58.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g60.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g62.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g64.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g66.0<1>UD g103.0<8,8,1>UD {align1}; + +/*forward---Y---second vector*/ +asr (2) g115.14<1>W g1.22<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x4UD {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`4') +define(`mv1',`g1.22') +define(`mv2',`g1.24') +include(`motion_field_y_igd.g4i') +mov (8) g53.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g55.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g57.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g59.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g61.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g63.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g65.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g67.0<1>UD g103.0<8,8,1>UD {align1}; + +/*forward---UV---first vector*/ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`5') +define(`surface_v',`6') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_uv_igd.g4i') +mov (8) g68.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g69.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g70.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g71.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g72.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g73.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g74.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g75.0<1>UW g85.0<8,8,1>UW {align1}; + +/*forward---UV---second vector */ +asr (2) g115.14<1>W g1.22<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x4UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.24') +define(`mv2',`g1.26') +include(`motion_field_uv_igd.g4i') +mov (8) g68.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g69.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g70.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g71.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g72.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g73.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g74.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g75.16<1>UW g85.0<8,8,1>UW {align1}; + +/*backward---Y---first vector */ +mov(8) g1.0<1>UD g116.0<8,8,1>UD {align1}; +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +mov(1) g1.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.18<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_y_igd.g4i') +mov (8) g28.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g30.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g32.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g34.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g36.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g38.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g40.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g42.0<1>UD g103.0<8,8,1>UD {align1}; + +/*backward---Y---second vector */ +asr (2) g115.14<1>W g1.26<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g2.20<1,1,1>UD 0x8UD {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_y_igd.g4i') + +avg.sat (16) g28.0<1>UW g52.0<16,16,1>UW g28.0<16,16,1>UW {align1}; +avg.sat (16) g29.0<1>UW g53.0<16,16,1>UW g96.0<16,16,1>UW {align1}; +avg.sat (16) g30.0<1>UW g54.0<16,16,1>UW g30.0<16,16,1>UW {align1}; +avg.sat (16) g31.0<1>UW g55.0<16,16,1>UW g97.0<16,16,1>UW {align1}; +avg.sat (16) g32.0<1>UW g56.0<16,16,1>UW g32.0<16,16,1>UW {align1}; +avg.sat (16) g33.0<1>UW g57.0<16,16,1>UW g98.0<16,16,1>UW {align1}; +avg.sat (16) g34.0<1>UW g58.0<16,16,1>UW g34.0<16,16,1>UW {align1}; +avg.sat (16) g35.0<1>UW g59.0<16,16,1>UW g99.0<16,16,1>UW {align1}; +avg.sat (16) g36.0<1>UW g60.0<16,16,1>UW g36.0<16,16,1>UW {align1}; +avg.sat (16) g37.0<1>UW g61.0<16,16,1>UW g100.0<16,16,1>UW {align1}; +avg.sat (16) g38.0<1>UW g62.0<16,16,1>UW g38.0<16,16,1>UW {align1}; +avg.sat (16) g39.0<1>UW g63.0<16,16,1>UW g101.0<16,16,1>UW {align1}; +avg.sat (16) g40.0<1>UW g64.0<16,16,1>UW g40.0<16,16,1>UW {align1}; +avg.sat (16) g41.0<1>UW g65.0<16,16,1>UW g102.0<16,16,1>UW {align1}; +avg.sat (16) g42.0<1>UW g66.0<16,16,1>UW g42.0<16,16,1>UW {align1}; +avg.sat (16) g43.0<1>UW g67.0<16,16,1>UW g103.0<16,16,1>UW {align1}; + +/*backward---UV---first vector */ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.18<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`8') +define(`surface_v',`9') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_uv_igd.g4i') +mov (8) g44.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.0<1>UW g85.0<8,8,1>UW {align1}; + +/*backward---UV---second vector */ +asr (2) g115.14<1>W g1.26<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x8UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_uv_igd.g4i') +mov (8) g44.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.16<1>UW g85.0<8,8,1>UW {align1}; + +avg.sat (16) g44.0<1>UW g68.0<16,16,1>UW g44.0<16,16,1>UW {align1}; +avg.sat (16) g45.0<1>UW g69.0<16,16,1>UW g45.0<16,16,1>UW {align1}; +avg.sat (16) g46.0<1>UW g70.0<16,16,1>UW g46.0<16,16,1>UW {align1}; +avg.sat (16) g47.0<1>UW g71.0<16,16,1>UW g47.0<16,16,1>UW {align1}; +avg.sat (16) g48.0<1>UW g72.0<16,16,1>UW g48.0<16,16,1>UW {align1}; +avg.sat (16) g49.0<1>UW g73.0<16,16,1>UW g49.0<16,16,1>UW {align1}; +avg.sat (16) g50.0<1>UW g74.0<16,16,1>UW g50.0<16,16,1>UW {align1}; +avg.sat (16) g51.0<1>UW g75.0<16,16,1>UW g51.0<16,16,1>UW {align1}; + +include(`addidct.g4i') + +//send (16) 0 acc0<1>UW g0<8,8,1>UW +// thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/dual_prime_igd.g4b b/driver/xf86-video-intel/src/xvmc/dual_prime_igd.g4b new file mode 100644 index 000000000..6477d066e --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/dual_prime_igd.g4b @@ -0,0 +1,1142 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x26800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x26c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x27000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x27400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x27800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x27c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x28000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x28400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20000e3c, 0x0021003f, 0x00000004 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x26a00021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x26e00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x27200021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x27600021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x27a00021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x27e00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x28200021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x28600021, 0x008d0ce0, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x28800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x28a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x28c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x28e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x29000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x29200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x29400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x29600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x28900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x28b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x28d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x28f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x29100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x29300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x29500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x29700129, 0x008d0aa0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0e80, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00000001, 0x20280061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x23800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20000c3c, 0x00210054, 0x00000008 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x80800042, 0x23802529, 0x00b10680, 0x00b10380 }, + { 0x80800042, 0x23a02529, 0x00b106a0, 0x00b10c00 }, + { 0x80800042, 0x23c02529, 0x00b106c0, 0x00b103c0 }, + { 0x80800042, 0x23e02529, 0x00b106e0, 0x00b10c20 }, + { 0x80800042, 0x24002529, 0x00b10700, 0x00b10400 }, + { 0x80800042, 0x24202529, 0x00b10720, 0x00b10c40 }, + { 0x80800042, 0x24402529, 0x00b10740, 0x00b10440 }, + { 0x80800042, 0x24602529, 0x00b10760, 0x00b10c60 }, + { 0x80800042, 0x24802529, 0x00b10780, 0x00b10480 }, + { 0x80800042, 0x24a02529, 0x00b107a0, 0x00b10c80 }, + { 0x80800042, 0x24c02529, 0x00b107c0, 0x00b104c0 }, + { 0x80800042, 0x24e02529, 0x00b107e0, 0x00b10ca0 }, + { 0x80800042, 0x25002529, 0x00b10800, 0x00b10500 }, + { 0x80800042, 0x25202529, 0x00b10820, 0x00b10cc0 }, + { 0x80800042, 0x25402529, 0x00b10840, 0x00b10540 }, + { 0x80800042, 0x25602529, 0x00b10860, 0x00b10ce0 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x25800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x25900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26700129, 0x008d0aa0, 0x00000000 }, + { 0x80800042, 0x25802529, 0x00b10880, 0x00b10580 }, + { 0x80800042, 0x25a02529, 0x00b108a0, 0x00b105a0 }, + { 0x80800042, 0x25c02529, 0x00b108c0, 0x00b105c0 }, + { 0x80800042, 0x25e02529, 0x00b108e0, 0x00b105e0 }, + { 0x80800042, 0x26002529, 0x00b10900, 0x00b10600 }, + { 0x80800042, 0x26202529, 0x00b10920, 0x00b10620 }, + { 0x80800042, 0x26402529, 0x00b10940, 0x00b10640 }, + { 0x80800042, 0x26602529, 0x00b10960, 0x00b10660 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/f_b.g4b b/driver/xf86-video-intel/src/xvmc/f_b.g4b new file mode 100644 index 000000000..beace4df7 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/f_b.g4b @@ -0,0 +1,2886 @@ + { 0x00600001, 0x20600021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450060, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x20301ca5, 0x00450078, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450060, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x0021007c, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x21400231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x21400231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x21400231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x21400231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x00800001, 0x20c00229, 0x00b10080, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00b10090, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00b100a0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00b100b0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00b10140 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00b10150 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00b10160 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00b10170 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00000040, 0x20201c21, 0x00210060, 0x00000008 }, + { 0x00000040, 0x20241c21, 0x00210064, 0x00000000 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x20301ca5, 0x00450078, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x0021007c, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x21400231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x21400231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x21400231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x21400231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x00800001, 0x20c00229, 0x00b10080, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00b10090, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00b100a0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00b100b0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00b10140 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00b10150 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00b10160 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00b10170 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00000040, 0x20201c21, 0x00210060, 0x00000000 }, + { 0x00000040, 0x20241c21, 0x00210064, 0x00000008 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x20301ca5, 0x00450078, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x0021007c, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x21400231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x21400231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x21400231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x21400231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x00800001, 0x20c00229, 0x00b10080, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00b10090, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00b100a0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00b100b0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00b10140 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00b10150 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00b10160 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00b10170 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00200040, 0x20201c21, 0x00450060, 0x00000008 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x204014a5, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x20301ca5, 0x00450078, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x0021007c, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a007 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x21400231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x21400231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x21400231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x21400231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x00800001, 0x20c00229, 0x00b10080, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00b10090, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00b100a0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00b100b0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00b10140 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00b10150 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00b10160 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00b10170 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00200008, 0x20200c21, 0x00450060, 0x00000001 }, + { 0x0020000c, 0x20701ca5, 0x00450070, 0x00000001 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a005 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a005 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a005 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a005 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x20781ca5, 0x00450078, 0x00000001 }, + { 0x0020000c, 0x20301ca5, 0x00450078, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x0021007c, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a008 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a008 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a008 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a008 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x21400231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x21400231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x21400231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x21400231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x00800001, 0x20c00229, 0x00b10080, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00b10090, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00b100a0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00b100b0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00b10140 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00b10150 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00b10160 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00b10170 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x20301ca5, 0x00450078, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x0021007c, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210078, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x21400231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x21400231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x21400231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x21400231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x21400231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x21500231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21600231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21700231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x00800001, 0x20c00229, 0x00b10080, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00b10090, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00b100a0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00b100b0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00b10140 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00b10150 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00b10160 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00b10170 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/field_backward.g4a b/driver/xf86-video-intel/src/xvmc/field_backward.g4a new file mode 100644 index 000000000..8c721c62e --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_backward.g4a @@ -0,0 +1,124 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') + +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (8) g116.0<1>UD g1.0<8,8,1>UD {align1}; +/*Y buffer*/ +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +mov(1) g1.8<1>UD 0x007000fUD { align1 }; +/*first vector*/ +asr (2) g115.14<1>W g1.18<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. + +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_y.g4i') +mov (8) g28.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g30.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g32.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g34.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g36.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g38.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g40.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g42.0<1>UD g103.0<8,8,1>UD {align1}; +/*second vector*/ +asr (2) g115.14<1>W g1.26<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. + +and.nz (1) null g1.31<1,1,1>UB 0x8UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_y.g4i') +mov (8) g29.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g31.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g33.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g35.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g37.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g39.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g41.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g43.0<1>UD g103.0<8,8,1>UD {align1}; +/*U buffer, V buffer*/ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +/*first vector*/ +asr (2) g115.14<1>W g1.18<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; + +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`8') +define(`surface_v',`9') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_uv.g4i') +mov (8) g44.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.0<1>UW g85.0<8,8,1>UW {align1}; +/*second vector*/ +asr (2) g115.14<1>W g1.26<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; + +and.nz (1) null g1.31<1,1,1>UB 0x8UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_uv.g4i') +mov (8) g44.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.16<1>UW g85.0<8,8,1>UW {align1}; + +include(`addidct.g4i') +//send (16) 0 acc0<1>UW g0<8,8,1>UW +// thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/field_backward.g4b b/driver/xf86-video-intel/src/xvmc/field_backward.g4b new file mode 100644 index 000000000..cce7d454b --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_backward.g4b @@ -0,0 +1,1341 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00000001, 0x20280061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x23800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x23a00021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23e00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24200021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24600021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24a00021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24e00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25200021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25600021, 0x008d0ce0, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x25800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x25900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26700129, 0x008d0aa0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/field_backward_igd.g4a b/driver/xf86-video-intel/src/xvmc/field_backward_igd.g4a new file mode 100644 index 000000000..d01b8dc35 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_backward_igd.g4a @@ -0,0 +1,124 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') + +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (8) g116.0<1>UD g1.0<8,8,1>UD {align1}; +/*Y buffer*/ +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +mov(1) g1.8<1>UD 0x007000fUD { align1 }; +/*first vector*/ +asr (2) g115.14<1>W g1.18<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. + +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_y_igd.g4i') +mov (8) g28.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g30.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g32.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g34.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g36.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g38.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g40.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g42.0<1>UD g103.0<8,8,1>UD {align1}; +/*second vector*/ +asr (2) g115.14<1>W g1.26<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. + +and.nz (1) null g1.31<1,1,1>UB 0x8UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_y_igd.g4i') +mov (8) g29.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g31.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g33.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g35.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g37.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g39.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g41.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g43.0<1>UD g103.0<8,8,1>UD {align1}; +/*U buffer, V buffer*/ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +/*first vector*/ +asr (2) g115.14<1>W g1.18<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; + +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`8') +define(`surface_v',`9') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_uv_igd.g4i') +mov (8) g44.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.0<1>UW g85.0<8,8,1>UW {align1}; +/*second vector*/ +asr (2) g115.14<1>W g1.26<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; + +and.nz (1) null g1.31<1,1,1>UB 0x8UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_uv_igd.g4i') +mov (8) g44.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.16<1>UW g85.0<8,8,1>UW {align1}; + +include(`addidct.g4i') +//send (16) 0 acc0<1>UW g0<8,8,1>UW +// thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/field_backward_igd.g4b b/driver/xf86-video-intel/src/xvmc/field_backward_igd.g4b new file mode 100644 index 000000000..7382a8728 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_backward_igd.g4b @@ -0,0 +1,669 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00000001, 0x20280061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x23800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x23a00021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23e00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24200021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24600021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24a00021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24e00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25200021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25600021, 0x008d0ce0, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x25800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x25900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26700129, 0x008d0aa0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/field_f_b.g4a b/driver/xf86-video-intel/src/xvmc/field_f_b.g4a new file mode 100644 index 000000000..7066a75b6 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_f_b.g4a @@ -0,0 +1,223 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (8) g116.0<1>UD g1.0<8,8,1>UD {align1}; + +/* forward---Y---first vector*/ +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`4') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_y.g4i') +mov (8) g52.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g54.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g56.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g58.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g60.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g62.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g64.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g66.0<1>UD g103.0<8,8,1>UD {align1}; + +/*forward---Y---second vector*/ +asr (2) g115.14<1>W g1.22<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x4UD {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`4') +define(`mv1',`g1.22') +define(`mv2',`g1.24') +include(`motion_field_y.g4i') +mov (8) g53.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g55.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g57.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g59.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g61.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g63.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g65.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g67.0<1>UD g103.0<8,8,1>UD {align1}; + +/*forward---UV---first vector*/ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`5') +define(`surface_v',`6') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_uv.g4i') +mov (8) g68.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g69.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g70.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g71.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g72.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g73.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g74.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g75.0<1>UW g85.0<8,8,1>UW {align1}; + +/*forward---UV---second vector */ +asr (2) g115.14<1>W g1.22<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x4UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.24') +define(`mv2',`g1.26') +include(`motion_field_uv.g4i') +mov (8) g68.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g69.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g70.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g71.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g72.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g73.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g74.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g75.16<1>UW g85.0<8,8,1>UW {align1}; + +/*backward---Y---first vector */ +mov(8) g1.0<1>UD g116.0<8,8,1>UD {align1}; +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +mov(1) g1.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.18<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_y.g4i') +mov (8) g28.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g30.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g32.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g34.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g36.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g38.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g40.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g42.0<1>UD g103.0<8,8,1>UD {align1}; + +/*backward---Y---second vector */ +asr (2) g115.14<1>W g1.26<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g2.20<1,1,1>UD 0x8UD {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_y.g4i') + +avg.sat (16) g28.0<1>UW g52.0<16,16,1>UW g28.0<16,16,1>UW {align1}; +avg.sat (16) g29.0<1>UW g53.0<16,16,1>UW g96.0<16,16,1>UW {align1}; +avg.sat (16) g30.0<1>UW g54.0<16,16,1>UW g30.0<16,16,1>UW {align1}; +avg.sat (16) g31.0<1>UW g55.0<16,16,1>UW g97.0<16,16,1>UW {align1}; +avg.sat (16) g32.0<1>UW g56.0<16,16,1>UW g32.0<16,16,1>UW {align1}; +avg.sat (16) g33.0<1>UW g57.0<16,16,1>UW g98.0<16,16,1>UW {align1}; +avg.sat (16) g34.0<1>UW g58.0<16,16,1>UW g34.0<16,16,1>UW {align1}; +avg.sat (16) g35.0<1>UW g59.0<16,16,1>UW g99.0<16,16,1>UW {align1}; +avg.sat (16) g36.0<1>UW g60.0<16,16,1>UW g36.0<16,16,1>UW {align1}; +avg.sat (16) g37.0<1>UW g61.0<16,16,1>UW g100.0<16,16,1>UW {align1}; +avg.sat (16) g38.0<1>UW g62.0<16,16,1>UW g38.0<16,16,1>UW {align1}; +avg.sat (16) g39.0<1>UW g63.0<16,16,1>UW g101.0<16,16,1>UW {align1}; +avg.sat (16) g40.0<1>UW g64.0<16,16,1>UW g40.0<16,16,1>UW {align1}; +avg.sat (16) g41.0<1>UW g65.0<16,16,1>UW g102.0<16,16,1>UW {align1}; +avg.sat (16) g42.0<1>UW g66.0<16,16,1>UW g42.0<16,16,1>UW {align1}; +avg.sat (16) g43.0<1>UW g67.0<16,16,1>UW g103.0<16,16,1>UW {align1}; + +/*backward---UV---first vector */ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.18<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`8') +define(`surface_v',`9') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_uv.g4i') +mov (8) g44.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.0<1>UW g85.0<8,8,1>UW {align1}; + +/*backward---UV---second vector */ +asr (2) g115.14<1>W g1.26<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x8UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_uv.g4i') +mov (8) g44.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.16<1>UW g85.0<8,8,1>UW {align1}; + +avg.sat (16) g44.0<1>UW g68.0<16,16,1>UW g44.0<16,16,1>UW {align1}; +avg.sat (16) g45.0<1>UW g69.0<16,16,1>UW g45.0<16,16,1>UW {align1}; +avg.sat (16) g46.0<1>UW g70.0<16,16,1>UW g46.0<16,16,1>UW {align1}; +avg.sat (16) g47.0<1>UW g71.0<16,16,1>UW g47.0<16,16,1>UW {align1}; +avg.sat (16) g48.0<1>UW g72.0<16,16,1>UW g48.0<16,16,1>UW {align1}; +avg.sat (16) g49.0<1>UW g73.0<16,16,1>UW g49.0<16,16,1>UW {align1}; +avg.sat (16) g50.0<1>UW g74.0<16,16,1>UW g50.0<16,16,1>UW {align1}; +avg.sat (16) g51.0<1>UW g75.0<16,16,1>UW g51.0<16,16,1>UW {align1}; + +include(`addidct.g4i') + +//send (16) 0 acc0<1>UW g0<8,8,1>UW +// thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/field_f_b.g4b b/driver/xf86-video-intel/src/xvmc/field_f_b.g4b new file mode 100644 index 000000000..4a1eb4bef --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_f_b.g4b @@ -0,0 +1,2486 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x26800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x26c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x27000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x27400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x27800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x27c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x28000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x28400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20000e3c, 0x0021003f, 0x00000004 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x26a00021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x26e00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x27200021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x27600021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x27a00021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x27e00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x28200021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x28600021, 0x008d0ce0, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x28800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x28a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x28c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x28e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x29000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x29200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x29400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x29600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x28900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x28b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x28d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x28f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x29100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x29300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x29500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x29700129, 0x008d0aa0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0e80, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00000001, 0x20280061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x23800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20000c3c, 0x00210054, 0x00000008 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x80800042, 0x23802529, 0x00b10680, 0x00b10380 }, + { 0x80800042, 0x23a02529, 0x00b106a0, 0x00b10c00 }, + { 0x80800042, 0x23c02529, 0x00b106c0, 0x00b103c0 }, + { 0x80800042, 0x23e02529, 0x00b106e0, 0x00b10c20 }, + { 0x80800042, 0x24002529, 0x00b10700, 0x00b10400 }, + { 0x80800042, 0x24202529, 0x00b10720, 0x00b10c40 }, + { 0x80800042, 0x24402529, 0x00b10740, 0x00b10440 }, + { 0x80800042, 0x24602529, 0x00b10760, 0x00b10c60 }, + { 0x80800042, 0x24802529, 0x00b10780, 0x00b10480 }, + { 0x80800042, 0x24a02529, 0x00b107a0, 0x00b10c80 }, + { 0x80800042, 0x24c02529, 0x00b107c0, 0x00b104c0 }, + { 0x80800042, 0x24e02529, 0x00b107e0, 0x00b10ca0 }, + { 0x80800042, 0x25002529, 0x00b10800, 0x00b10500 }, + { 0x80800042, 0x25202529, 0x00b10820, 0x00b10cc0 }, + { 0x80800042, 0x25402529, 0x00b10840, 0x00b10540 }, + { 0x80800042, 0x25602529, 0x00b10860, 0x00b10ce0 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x25800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x25900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26700129, 0x008d0aa0, 0x00000000 }, + { 0x80800042, 0x25802529, 0x00b10880, 0x00b10580 }, + { 0x80800042, 0x25a02529, 0x00b108a0, 0x00b105a0 }, + { 0x80800042, 0x25c02529, 0x00b108c0, 0x00b105c0 }, + { 0x80800042, 0x25e02529, 0x00b108e0, 0x00b105e0 }, + { 0x80800042, 0x26002529, 0x00b10900, 0x00b10600 }, + { 0x80800042, 0x26202529, 0x00b10920, 0x00b10620 }, + { 0x80800042, 0x26402529, 0x00b10940, 0x00b10640 }, + { 0x80800042, 0x26602529, 0x00b10960, 0x00b10660 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/field_f_b_igd.g4a b/driver/xf86-video-intel/src/xvmc/field_f_b_igd.g4a new file mode 100644 index 000000000..e741244bf --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_f_b_igd.g4a @@ -0,0 +1,223 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (8) g116.0<1>UD g1.0<8,8,1>UD {align1}; + +/* forward---Y---first vector*/ +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`4') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_y_igd.g4i') +mov (8) g52.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g54.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g56.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g58.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g60.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g62.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g64.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g66.0<1>UD g103.0<8,8,1>UD {align1}; + +/*forward---Y---second vector*/ +asr (2) g115.14<1>W g1.22<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x4UD {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`4') +define(`mv1',`g1.22') +define(`mv2',`g1.24') +include(`motion_field_y_igd.g4i') +mov (8) g53.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g55.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g57.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g59.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g61.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g63.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g65.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g67.0<1>UD g103.0<8,8,1>UD {align1}; + +/*forward---UV---first vector*/ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`5') +define(`surface_v',`6') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_uv_igd.g4i') +mov (8) g68.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g69.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g70.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g71.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g72.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g73.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g74.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g75.0<1>UW g85.0<8,8,1>UW {align1}; + +/*forward---UV---second vector */ +asr (2) g115.14<1>W g1.22<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x4UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.24') +define(`mv2',`g1.26') +include(`motion_field_uv_igd.g4i') +mov (8) g68.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g69.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g70.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g71.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g72.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g73.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g74.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g75.16<1>UW g85.0<8,8,1>UW {align1}; + +/*backward---Y---first vector */ +mov(8) g1.0<1>UD g116.0<8,8,1>UD {align1}; +mov(1) g115.8<1>UD 0x007001fUD { align1 }; +mov(1) g1.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.18<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_y_igd.g4i') +mov (8) g28.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g30.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g32.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g34.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g36.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g38.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g40.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g42.0<1>UD g103.0<8,8,1>UD {align1}; + +/*backward---Y---second vector */ +asr (2) g115.14<1>W g1.26<2,2,1>W 1W {align1}; +add (2) g115.0<1>D g116.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov(1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +and.nz (1) null g2.20<1,1,1>UD 0x8UD {align1}; +(f0) add (1) g115.4<1>D g115.4<1,1,1>D 1D {align1}; +define(`surface',`7') +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_y_igd.g4i') + +avg.sat (16) g28.0<1>UW g52.0<16,16,1>UW g28.0<16,16,1>UW {align1}; +avg.sat (16) g29.0<1>UW g53.0<16,16,1>UW g96.0<16,16,1>UW {align1}; +avg.sat (16) g30.0<1>UW g54.0<16,16,1>UW g30.0<16,16,1>UW {align1}; +avg.sat (16) g31.0<1>UW g55.0<16,16,1>UW g97.0<16,16,1>UW {align1}; +avg.sat (16) g32.0<1>UW g56.0<16,16,1>UW g32.0<16,16,1>UW {align1}; +avg.sat (16) g33.0<1>UW g57.0<16,16,1>UW g98.0<16,16,1>UW {align1}; +avg.sat (16) g34.0<1>UW g58.0<16,16,1>UW g34.0<16,16,1>UW {align1}; +avg.sat (16) g35.0<1>UW g59.0<16,16,1>UW g99.0<16,16,1>UW {align1}; +avg.sat (16) g36.0<1>UW g60.0<16,16,1>UW g36.0<16,16,1>UW {align1}; +avg.sat (16) g37.0<1>UW g61.0<16,16,1>UW g100.0<16,16,1>UW {align1}; +avg.sat (16) g38.0<1>UW g62.0<16,16,1>UW g38.0<16,16,1>UW {align1}; +avg.sat (16) g39.0<1>UW g63.0<16,16,1>UW g101.0<16,16,1>UW {align1}; +avg.sat (16) g40.0<1>UW g64.0<16,16,1>UW g40.0<16,16,1>UW {align1}; +avg.sat (16) g41.0<1>UW g65.0<16,16,1>UW g102.0<16,16,1>UW {align1}; +avg.sat (16) g42.0<1>UW g66.0<16,16,1>UW g42.0<16,16,1>UW {align1}; +avg.sat (16) g43.0<1>UW g67.0<16,16,1>UW g103.0<16,16,1>UW {align1}; + +/*backward---UV---first vector */ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.18<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x2UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`8') +define(`surface_v',`9') +define(`mv1',`g1.18') +define(`mv2',`g1.20') +include(`motion_field_uv_igd.g4i') +mov (8) g44.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.0<1>UW g85.0<8,8,1>UW {align1}; + +/*backward---UV---second vector */ +asr (2) g115.14<1>W g1.26<2,2,1>W 2W {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +and.nz (1) null g1.31<1,1,1>UB 0x8UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.26') +define(`mv2',`g1.28') +include(`motion_field_uv_igd.g4i') +mov (8) g44.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.16<1>UW g85.0<8,8,1>UW {align1}; + +avg.sat (16) g44.0<1>UW g68.0<16,16,1>UW g44.0<16,16,1>UW {align1}; +avg.sat (16) g45.0<1>UW g69.0<16,16,1>UW g45.0<16,16,1>UW {align1}; +avg.sat (16) g46.0<1>UW g70.0<16,16,1>UW g46.0<16,16,1>UW {align1}; +avg.sat (16) g47.0<1>UW g71.0<16,16,1>UW g47.0<16,16,1>UW {align1}; +avg.sat (16) g48.0<1>UW g72.0<16,16,1>UW g48.0<16,16,1>UW {align1}; +avg.sat (16) g49.0<1>UW g73.0<16,16,1>UW g49.0<16,16,1>UW {align1}; +avg.sat (16) g50.0<1>UW g74.0<16,16,1>UW g50.0<16,16,1>UW {align1}; +avg.sat (16) g51.0<1>UW g75.0<16,16,1>UW g51.0<16,16,1>UW {align1}; + +include(`addidct.g4i') + +//send (16) 0 acc0<1>UW g0<8,8,1>UW +// thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/field_f_b_igd.g4b b/driver/xf86-video-intel/src/xvmc/field_f_b_igd.g4b new file mode 100644 index 000000000..6477d066e --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_f_b_igd.g4b @@ -0,0 +1,1142 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x26800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x26c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x27000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x27400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x27800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x27c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x28000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x28400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20000e3c, 0x0021003f, 0x00000004 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x26a00021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x26e00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x27200021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x27600021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x27a00021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x27e00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x28200021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x28600021, 0x008d0ce0, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x0045002e, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x28800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x28a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x28c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x28e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x29000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x29200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x29400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x29600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x00450036, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x28900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x28b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x28d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x28f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x29100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x29300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x29500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x29700129, 0x008d0aa0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0e80, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00000001, 0x20280061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x23800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00010001 }, + { 0x00200040, 0x2e6034a5, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20000c3c, 0x00210054, 0x00000008 }, + { 0x00010040, 0x2e641ca5, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a007 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a007 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a007 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x80800042, 0x23802529, 0x00b10680, 0x00b10380 }, + { 0x80800042, 0x23a02529, 0x00b106a0, 0x00b10c00 }, + { 0x80800042, 0x23c02529, 0x00b106c0, 0x00b103c0 }, + { 0x80800042, 0x23e02529, 0x00b106e0, 0x00b10c20 }, + { 0x80800042, 0x24002529, 0x00b10700, 0x00b10400 }, + { 0x80800042, 0x24202529, 0x00b10720, 0x00b10c40 }, + { 0x80800042, 0x24402529, 0x00b10740, 0x00b10440 }, + { 0x80800042, 0x24602529, 0x00b10760, 0x00b10c60 }, + { 0x80800042, 0x24802529, 0x00b10780, 0x00b10480 }, + { 0x80800042, 0x24a02529, 0x00b107a0, 0x00b10c80 }, + { 0x80800042, 0x24c02529, 0x00b107c0, 0x00b104c0 }, + { 0x80800042, 0x24e02529, 0x00b107e0, 0x00b10ca0 }, + { 0x80800042, 0x25002529, 0x00b10800, 0x00b10500 }, + { 0x80800042, 0x25202529, 0x00b10820, 0x00b10cc0 }, + { 0x80800042, 0x25402529, 0x00b10840, 0x00b10540 }, + { 0x80800042, 0x25602529, 0x00b10860, 0x00b10ce0 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e3dad, 0x00450032, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00020002 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210032, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x00210034, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x25800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e3dad, 0x0045003a, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00080008 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021003a, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x0021003c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a008 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a009 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a008 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a009 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x25900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26700129, 0x008d0aa0, 0x00000000 }, + { 0x80800042, 0x25802529, 0x00b10880, 0x00b10580 }, + { 0x80800042, 0x25a02529, 0x00b108a0, 0x00b105a0 }, + { 0x80800042, 0x25c02529, 0x00b108c0, 0x00b105c0 }, + { 0x80800042, 0x25e02529, 0x00b108e0, 0x00b105e0 }, + { 0x80800042, 0x26002529, 0x00b10900, 0x00b10600 }, + { 0x80800042, 0x26202529, 0x00b10920, 0x00b10620 }, + { 0x80800042, 0x26402529, 0x00b10940, 0x00b10640 }, + { 0x80800042, 0x26602529, 0x00b10960, 0x00b10660 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/field_forward.g4a b/driver/xf86-video-intel/src/xvmc/field_forward.g4a new file mode 100644 index 000000000..f5595ee19 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_forward.g4a @@ -0,0 +1,121 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (8) g116.0<1>UD g1.0<8,8,1>UD {align1}; +/*Y buffer*/ +mov(1) g1.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 1UW {align1}; +add (2) g115.0<1>UD g116.0<2,2,1>UD g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov (1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +/*first vector*/ +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface',`4') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_y.g4i') +mov (8) g28.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g30.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g32.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g34.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g36.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g38.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g40.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g42.0<1>UD g103.0<8,8,1>UD {align1}; +/*second vector*/ +asr (2) g115.14<1>W g1.22<2,2,1>W 1UW {align1}; +add (2) g115.0<1>UD g116.0<2,2,1>UD g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov (1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. + +and.nz (1) null g1.31<1,1,1>UB 0x4UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface',`4') +define(`mv1',`g1.22') +define(`mv2',`g1.24') +include(`motion_field_y.g4i') +mov (8) g29.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g31.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g33.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g35.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g37.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g39.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g41.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g43.0<1>UD g103.0<8,8,1>UD {align1}; +/*U buffer, V buffer*/ +/*first vector*/ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 2UW {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; + +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`5') +define(`surface_v',`6') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_uv.g4i') +mov (8) g44.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.0<1>UW g85.0<8,8,1>UW {align1}; +/*second vector*/ +asr (2) g115.14<1>W g1.22<2,2,1>W 2UW {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; + +and.nz (1) null g1.31<1,1,1>UB 0x4UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.22') +define(`mv2',`g1.24') +include(`motion_field_uv.g4i') +mov (8) g44.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.16<1>UW g85.0<8,8,1>UW {align1}; + +include(`addidct.g4i') +//send (16) 0 acc0<1>UW g0<8,8,1>UW +// thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/field_forward.g4b b/driver/xf86-video-intel/src/xvmc/field_forward.g4b new file mode 100644 index 000000000..3514c8686 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_forward.g4b @@ -0,0 +1,1340 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e2dad, 0x0045002e, 0x00010001 }, + { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x23800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e2dad, 0x00450036, 0x00010001 }, + { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000b1 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000007d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x00800040, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x00800040, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x00800040, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x00800040, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x00800040, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x00800040, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x00800040, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c2 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a02 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a42 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a82 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac2 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b02 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b42 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b82 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a02 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a42 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a82 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac2 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b02 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b42 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b82 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x00800040, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x00800040, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x00800040, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x00800040, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x00800040, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x00800040, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x00800040, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c3 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a03 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a43 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a83 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac3 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b03 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b43 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b83 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a03 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a43 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a83 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac3 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b03 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b43 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b83 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x00800040, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x00800040, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x00800040, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x00800040, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x00800040, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x00800040, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x00800040, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c4 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a04 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a44 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a84 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac4 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b04 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b44 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b84 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a04 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a44 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a84 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac4 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b04 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b44 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b84 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc4 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b109c2 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a02 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a42 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10a82 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10ac2 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b02 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b42 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10b82 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b109c3 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a03 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a43 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10a83 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10ac3 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b03 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b43 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10b83 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b109c4 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a04 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a44 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10a84 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10ac4 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b04 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b44 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10b84 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000068 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000035 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x2c004629, 0x00b109c1, 0x00b10a01 }, + { 0x80800042, 0x2c204629, 0x00b10a01, 0x00b10a41 }, + { 0x80800042, 0x2c404629, 0x00b10a41, 0x00b10a81 }, + { 0x80800042, 0x2c604629, 0x00b10a81, 0x00b10ac1 }, + { 0x80800042, 0x2c804629, 0x00b10ac1, 0x00b10b01 }, + { 0x80800042, 0x2ca04629, 0x00b10b01, 0x00b10b41 }, + { 0x80800042, 0x2cc04629, 0x00b10b41, 0x00b10b81 }, + { 0x80800042, 0x2ce04629, 0x00b10b81, 0x00b10bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x2c004629, 0x00b109c2, 0x00b10a02 }, + { 0x80800042, 0x2c204629, 0x00b10a02, 0x00b10a42 }, + { 0x80800042, 0x2c404629, 0x00b10a42, 0x00b10a82 }, + { 0x80800042, 0x2c604629, 0x00b10a82, 0x00b10ac2 }, + { 0x80800042, 0x2c804629, 0x00b10ac2, 0x00b10b02 }, + { 0x80800042, 0x2ca04629, 0x00b10b02, 0x00b10b42 }, + { 0x80800042, 0x2cc04629, 0x00b10b42, 0x00b10b82 }, + { 0x80800042, 0x2ce04629, 0x00b10b82, 0x00b10bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x2c004629, 0x00b109c3, 0x00b10a03 }, + { 0x80800042, 0x2c204629, 0x00b10a03, 0x00b10a43 }, + { 0x80800042, 0x2c404629, 0x00b10a43, 0x00b10a83 }, + { 0x80800042, 0x2c604629, 0x00b10a83, 0x00b10ac3 }, + { 0x80800042, 0x2c804629, 0x00b10ac3, 0x00b10b03 }, + { 0x80800042, 0x2ca04629, 0x00b10b03, 0x00b10b43 }, + { 0x80800042, 0x2cc04629, 0x00b10b43, 0x00b10b83 }, + { 0x80800042, 0x2ce04629, 0x00b10b83, 0x00b10bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x2c000229, 0x00b109c1, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a01, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a41, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a81, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac1, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b01, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b41, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b81, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x2c000229, 0x00b109c2, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a02, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a42, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a82, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac2, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b02, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b42, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b82, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x2c000229, 0x00b109c3, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a03, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a43, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a83, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac3, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b03, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b43, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b83, 0x00000000 }, + { 0x00600001, 0x23a00021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23e00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24200021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24600021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24a00021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24e00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25200021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25600021, 0x008d0ce0, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e2dad, 0x0045002e, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x25800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e2dad, 0x00450036, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210036, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000a2 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000076 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000019 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00800040, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x00800040, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x00800040, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x00800040, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae2 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b02 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b22 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae2 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b02 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b22 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b42 }, + { 0x00800040, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x00800040, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x00800040, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b62 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b82 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b82 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba2 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000031 }, + { 0x00800040, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x00800040, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x00800040, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x00800040, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae3 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b03 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b23 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae3 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b03 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b23 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b43 }, + { 0x00800040, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x00800040, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x00800040, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b63 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b83 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b83 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba3 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00800040, 0x29c04629, 0x00ad0ac3, 0x00ad0ae3 }, + { 0x00800040, 0x29e04629, 0x00ad0ae3, 0x00ad0b03 }, + { 0x00800040, 0x2a004629, 0x00ad0b03, 0x00ad0b23 }, + { 0x00800040, 0x2a204629, 0x00ad0b23, 0x00ad0b43 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae4 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b04 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b24 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae4 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b04 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b24 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b44 }, + { 0x00800040, 0x2a404629, 0x00ad0b63, 0x00ad0b83 }, + { 0x00800040, 0x2a604629, 0x00ad0b83, 0x00ad0ba3 }, + { 0x00800040, 0x2a804629, 0x00ad0ba3, 0x00ad0bc3 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc3, 0x00ad0be3 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b64 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b84 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc4 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b84 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba4 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc4 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be4 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000082 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ac2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0ae2 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b02 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b22 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b62 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0b82 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0ba2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0bc2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac4 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae4 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b04 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b24 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b64 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b84 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba4 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc4 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000058 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002d }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x80800042, 0x29c04629, 0x00ad0ac1, 0x00ad0ae1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae1, 0x00ad0b01 }, + { 0x80800042, 0x2a004629, 0x00ad0b01, 0x00ad0b21 }, + { 0x80800042, 0x2a204629, 0x00ad0b21, 0x00ad0b41 }, + { 0x80800042, 0x2a404629, 0x00ad0b61, 0x00ad0b81 }, + { 0x80800042, 0x2a604629, 0x00ad0b81, 0x00ad0ba1 }, + { 0x80800042, 0x2a804629, 0x00ad0ba1, 0x00ad0bc1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc1, 0x00ad0be1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x80800042, 0x29c04629, 0x00ad0ac2, 0x00ad0ae2 }, + { 0x80800042, 0x29e04629, 0x00ad0ae2, 0x00ad0b02 }, + { 0x80800042, 0x2a004629, 0x00ad0b02, 0x00ad0b22 }, + { 0x80800042, 0x2a204629, 0x00ad0b22, 0x00ad0b42 }, + { 0x80800042, 0x2a404629, 0x00ad0b62, 0x00ad0b82 }, + { 0x80800042, 0x2a604629, 0x00ad0b82, 0x00ad0ba2 }, + { 0x80800042, 0x2a804629, 0x00ad0ba2, 0x00ad0bc2 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc2, 0x00ad0be2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x80800042, 0x29c04629, 0x00ad0ac3, 0x00ad0ac3 }, + { 0x80800042, 0x29e04629, 0x00ad0ae3, 0x00ad0ae3 }, + { 0x80800042, 0x2a004629, 0x00ad0b03, 0x00ad0b03 }, + { 0x80800042, 0x2a204629, 0x00ad0b23, 0x00ad0b23 }, + { 0x80800042, 0x2a404629, 0x00ad0b63, 0x00ad0b63 }, + { 0x80800042, 0x2a604629, 0x00ad0b83, 0x00ad0b83 }, + { 0x80800042, 0x2a804629, 0x00ad0ba3, 0x00ad0ba3 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc3, 0x00ad0bc3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000029 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000005, 0x20580c21, 0x00210e60, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x29c00229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba1, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x29c00229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba2, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x29c00229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc3, 0x00000000 }, + { 0x00600001, 0x25900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26700129, 0x008d0aa0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/field_forward_igd.g4a b/driver/xf86-video-intel/src/xvmc/field_forward_igd.g4a new file mode 100644 index 000000000..fdd492510 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_forward_igd.g4a @@ -0,0 +1,121 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (8) g116.0<1>UD g1.0<8,8,1>UD {align1}; +/*Y buffer*/ +mov(1) g1.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 1UW {align1}; +add (2) g115.0<1>UD g116.0<2,2,1>UD g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov (1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. +/*first vector*/ +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface',`4') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_y_igd.g4i') +mov (8) g28.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g30.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g32.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g34.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g36.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g38.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g40.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g42.0<1>UD g103.0<8,8,1>UD {align1}; +/*second vector*/ +asr (2) g115.14<1>W g1.22<2,2,1>W 1UW {align1}; +add (2) g115.0<1>UD g116.0<2,2,1>UD g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; +mov (1) g115.8<1>UD 0x1fUD { align1 }; //read 1 line, 32 columns. + +and.nz (1) null g1.31<1,1,1>UB 0x4UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface',`4') +define(`mv1',`g1.22') +define(`mv2',`g1.24') +include(`motion_field_y_igd.g4i') +mov (8) g29.0<1>UD g96.0<8,8,1>UD {align1}; +mov (8) g31.0<1>UD g97.0<8,8,1>UD {align1}; +mov (8) g33.0<1>UD g98.0<8,8,1>UD {align1}; +mov (8) g35.0<1>UD g99.0<8,8,1>UD {align1}; +mov (8) g37.0<1>UD g100.0<8,8,1>UD {align1}; +mov (8) g39.0<1>UD g101.0<8,8,1>UD {align1}; +mov (8) g41.0<1>UD g102.0<8,8,1>UD {align1}; +mov (8) g43.0<1>UD g103.0<8,8,1>UD {align1}; +/*U buffer, V buffer*/ +/*first vector*/ +mov(1) g115.8<1>UD 0x007000fUD { align1 }; +asr (2) g115.14<1>W g1.14<2,2,1>W 2UW {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; + +and.nz (1) null g1.31<1,1,1>UB 0x1UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`surface_u',`5') +define(`surface_v',`6') +define(`mv1',`g1.14') +define(`mv2',`g1.16') +include(`motion_field_uv_igd.g4i') +mov (8) g44.0<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.0<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.0<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.0<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.0<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.0<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.0<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.0<1>UW g85.0<8,8,1>UW {align1}; +/*second vector*/ +asr (2) g115.14<1>W g1.22<2,2,1>W 2UW {align1}; +asr (2) g115.0<1>D g116.0<2,2,1>D 1D {align1}; +add (2) g115.0<1>D g115.0<2,2,1>D g115.14<2,2,1>W {align1}; +and (1) g115.4<1>UD g115.4<1,1,1>UD 0xFFFFFFFEUD {align1}; + +and.nz (1) null g1.31<1,1,1>UB 0x4UW {align1}; +(f0) add (1) g115.4<1>UD g115.4<1,1,1>UD 1UD {align1}; +define(`mv1',`g1.22') +define(`mv2',`g1.24') +include(`motion_field_uv_igd.g4i') +mov (8) g44.16<1>UW g78.0<8,8,1>UW {align1}; +mov (8) g45.16<1>UW g79.0<8,8,1>UW {align1}; +mov (8) g46.16<1>UW g80.0<8,8,1>UW {align1}; +mov (8) g47.16<1>UW g81.0<8,8,1>UW {align1}; +mov (8) g48.16<1>UW g82.0<8,8,1>UW {align1}; +mov (8) g49.16<1>UW g83.0<8,8,1>UW {align1}; +mov (8) g50.16<1>UW g84.0<8,8,1>UW {align1}; +mov (8) g51.16<1>UW g85.0<8,8,1>UW {align1}; + +include(`addidct.g4i') +//send (16) 0 acc0<1>UW g0<8,8,1>UW +// thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/field_forward_igd.g4b b/driver/xf86-video-intel/src/xvmc/field_forward_igd.g4b new file mode 100644 index 000000000..6d1dee5c8 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/field_forward_igd.g4b @@ -0,0 +1,668 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00600001, 0x2e800021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e2dad, 0x0045002e, 0x00010001 }, + { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x23800021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23c00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24000021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24400021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24800021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24c00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25000021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25400021, 0x008d0ce0, 0x00000000 }, + { 0x0020000c, 0x2e6e2dad, 0x00450036, 0x00010001 }, + { 0x00200040, 0x2e603421, 0x00450e80, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210036, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000045 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000002f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x00800040, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x00800040, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x00800040, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x00800040, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x00800040, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x00800040, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x00800040, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x00800040, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b109c1 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a01 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a41 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10a81 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10ac1 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b01 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b41 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10b81 }, + { 0x00800040, 0x2c004529, 0x00b10c00, 0x00b10a01 }, + { 0x00800040, 0x2c204529, 0x00b10c20, 0x00b10a41 }, + { 0x00800040, 0x2c404529, 0x00b10c40, 0x00b10a81 }, + { 0x00800040, 0x2c604529, 0x00b10c60, 0x00b10ac1 }, + { 0x00800040, 0x2c804529, 0x00b10c80, 0x00b10b01 }, + { 0x00800040, 0x2ca04529, 0x00b10ca0, 0x00b10b41 }, + { 0x00800040, 0x2cc04529, 0x00b10cc0, 0x00b10b81 }, + { 0x00800040, 0x2ce04529, 0x00b10ce0, 0x00b10bc1 }, + { 0x00800008, 0x2c002d29, 0x00b10c00, 0x00020002 }, + { 0x00800008, 0x2c202d29, 0x00b10c20, 0x00020002 }, + { 0x00800008, 0x2c402d29, 0x00b10c40, 0x00020002 }, + { 0x00800008, 0x2c602d29, 0x00b10c60, 0x00020002 }, + { 0x00800008, 0x2c802d29, 0x00b10c80, 0x00020002 }, + { 0x00800008, 0x2ca02d29, 0x00b10ca0, 0x00020002 }, + { 0x00800008, 0x2cc02d29, 0x00b10cc0, 0x00020002 }, + { 0x00800008, 0x2ce02d29, 0x00b10ce0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000040 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b109c1 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a01 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a41 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10a81 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10ac1 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b01 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b41 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10b81 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002c }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000017 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2bc01d29, 0x008d0e60, 0x0411a004 }, + { 0x80800042, 0x2c004629, 0x00b109c0, 0x00b10a00 }, + { 0x80800042, 0x2c204629, 0x00b10a00, 0x00b10a40 }, + { 0x80800042, 0x2c404629, 0x00b10a40, 0x00b10a80 }, + { 0x80800042, 0x2c604629, 0x00b10a80, 0x00b10ac0 }, + { 0x80800042, 0x2c804629, 0x00b10ac0, 0x00b10b00 }, + { 0x80800042, 0x2ca04629, 0x00b10b00, 0x00b10b40 }, + { 0x80800042, 0x2cc04629, 0x00b10b40, 0x00b10b80 }, + { 0x80800042, 0x2ce04629, 0x00b10b80, 0x00b10bc0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000013 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x29c01d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a001d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a401d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00800031, 0x2a801d29, 0x008d0e60, 0x0411a004 }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000002 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2ac01d29, 0x008d0e60, 0x0418a004 }, + { 0x00800001, 0x2c000229, 0x00b109c0, 0x00000000 }, + { 0x00800001, 0x2c200229, 0x00b10a00, 0x00000000 }, + { 0x00800001, 0x2c400229, 0x00b10a40, 0x00000000 }, + { 0x00800001, 0x2c600229, 0x00b10a80, 0x00000000 }, + { 0x00800001, 0x2c800229, 0x00b10ac0, 0x00000000 }, + { 0x00800001, 0x2ca00229, 0x00b10b00, 0x00000000 }, + { 0x00800001, 0x2cc00229, 0x00b10b40, 0x00000000 }, + { 0x00800001, 0x2ce00229, 0x00b10b80, 0x00000000 }, + { 0x00600001, 0x23a00021, 0x008d0c00, 0x00000000 }, + { 0x00600001, 0x23e00021, 0x008d0c20, 0x00000000 }, + { 0x00600001, 0x24200021, 0x008d0c40, 0x00000000 }, + { 0x00600001, 0x24600021, 0x008d0c60, 0x00000000 }, + { 0x00600001, 0x24a00021, 0x008d0c80, 0x00000000 }, + { 0x00600001, 0x24e00021, 0x008d0ca0, 0x00000000 }, + { 0x00600001, 0x25200021, 0x008d0cc0, 0x00000000 }, + { 0x00600001, 0x25600021, 0x008d0ce0, 0x00000000 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x0020000c, 0x2e6e2dad, 0x0045002e, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00010001 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x0021002e, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x00210030, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x25800129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25a00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25c00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25e00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26000129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26200129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26400129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26600129, 0x008d0aa0, 0x00000000 }, + { 0x0020000c, 0x2e6e2dad, 0x00450036, 0x00020002 }, + { 0x0020000c, 0x2e601ca5, 0x00450e80, 0x00000001 }, + { 0x00200040, 0x2e6034a5, 0x00450e60, 0x00450e6e }, + { 0x00000005, 0x2e640c21, 0x00210e64, 0xfffffffe }, + { 0x02000005, 0x20002e3c, 0x0021003f, 0x00040004 }, + { 0x00010040, 0x2e640c21, 0x00210e64, 0x00000001 }, + { 0x01000005, 0x20002d3c, 0x00210036, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000036 }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0001000f }, + { 0x00000040, 0x2e640c21, 0x00210e64, 0x00000008 }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x00800040, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x00800040, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x00800040, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x00800040, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ac1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0ae1 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b01 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b21 }, + { 0x00800040, 0x29c04529, 0x00ad09c0, 0x00ad0ae1 }, + { 0x00800040, 0x29e04529, 0x00ad09e0, 0x00ad0b01 }, + { 0x00800040, 0x2a004529, 0x00ad0a00, 0x00ad0b21 }, + { 0x00800040, 0x2a204529, 0x00ad0a20, 0x00ad0b41 }, + { 0x00800040, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x00800040, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x00800040, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x00800040, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b61 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0b81 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0ba1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0bc1 }, + { 0x00800040, 0x2a404529, 0x00ad0a40, 0x00ad0b81 }, + { 0x00800040, 0x2a604529, 0x00ad0a60, 0x00ad0ba1 }, + { 0x00800040, 0x2a804529, 0x00ad0a80, 0x00ad0bc1 }, + { 0x00800040, 0x2aa04529, 0x00ad0aa0, 0x00ad0be1 }, + { 0x80800008, 0x29c02d29, 0x00b109c0, 0x00020002 }, + { 0x80800008, 0x29e02d29, 0x00b109e0, 0x00020002 }, + { 0x80800008, 0x2a002d29, 0x00b10a00, 0x00020002 }, + { 0x80800008, 0x2a202d29, 0x00b10a20, 0x00020002 }, + { 0x80800008, 0x2a402d29, 0x00b10a40, 0x00020002 }, + { 0x80800008, 0x2a602d29, 0x00b10a60, 0x00020002 }, + { 0x80800008, 0x2a802d29, 0x00b10a80, 0x00020002 }, + { 0x80800008, 0x2aa02d29, 0x00b10aa0, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000028 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ac1 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0ae1 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b01 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b21 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b61 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0b81 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0ba1 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0bc1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001c }, + { 0x01000005, 0x20002d3c, 0x00210038, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000000f }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0000000f }, + { 0x00800031, 0x2b401d29, 0x00ad0e60, 0x0411a005 }, + { 0x00800031, 0x2be01d29, 0x00ad0e60, 0x0411a006 }, + { 0x80800042, 0x29c04629, 0x00ad0ac0, 0x00ad0ae0 }, + { 0x80800042, 0x29e04629, 0x00ad0ae0, 0x00ad0b00 }, + { 0x80800042, 0x2a004629, 0x00ad0b00, 0x00ad0b20 }, + { 0x80800042, 0x2a204629, 0x00ad0b20, 0x00ad0b40 }, + { 0x80800042, 0x2a404629, 0x00ad0b60, 0x00ad0b80 }, + { 0x80800042, 0x2a604629, 0x00ad0b80, 0x00ad0ba0 }, + { 0x80800042, 0x2a804629, 0x00ad0ba0, 0x00ad0bc0 }, + { 0x80800042, 0x2aa04629, 0x00ad0bc0, 0x00ad0be0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000b }, + { 0x00000001, 0x2e680061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x00ad0e60, 0x0414a005 }, + { 0x00800031, 0x2b601d29, 0x00ad0e60, 0x0414a006 }, + { 0x00800001, 0x29c00229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x29e00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x2a000229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x2a200229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x2a400229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x2a600229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x2a800229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2aa00229, 0x00ad0bc0, 0x00000000 }, + { 0x00600001, 0x25900129, 0x008d09c0, 0x00000000 }, + { 0x00600001, 0x25b00129, 0x008d09e0, 0x00000000 }, + { 0x00600001, 0x25d00129, 0x008d0a00, 0x00000000 }, + { 0x00600001, 0x25f00129, 0x008d0a20, 0x00000000 }, + { 0x00600001, 0x26100129, 0x008d0a40, 0x00000000 }, + { 0x00600001, 0x26300129, 0x008d0a60, 0x00000000 }, + { 0x00600001, 0x26500129, 0x008d0a80, 0x00000000 }, + { 0x00600001, 0x26700129, 0x008d0aa0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/forward.g4b b/driver/xf86-video-intel/src/xvmc/forward.g4b new file mode 100644 index 000000000..6c46c5081 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/forward.g4b @@ -0,0 +1,1471 @@ + { 0x00600001, 0x20600021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450060, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00000040, 0x20201c21, 0x00210060, 0x00000008 }, + { 0x00000040, 0x20241c21, 0x00210064, 0x00000000 }, + { 0x80200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00000040, 0x20201c21, 0x00210060, 0x00000000 }, + { 0x00000040, 0x20241c21, 0x00210064, 0x00000008 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00200040, 0x20201c21, 0x00450060, 0x00000008 }, + { 0x80200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a004 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00200008, 0x20200c21, 0x00450060, 0x00000001 }, + { 0x0020000c, 0x20701ca5, 0x00450070, 0x00000001 }, + { 0x0020000c, 0x20301ca5, 0x00450070, 0x00000001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a005 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a005 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a005 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a005 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00200040, 0x20401421, 0x00450020, 0x00450030 }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000088 }, + { 0x01000005, 0x20000c3c, 0x00210074, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000055 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0194 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f4 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800008, 0x40c02d31, 0x00b100c0, 0x00020002 }, + { 0x00800008, 0x40e02d31, 0x00b100e0, 0x00020002 }, + { 0x00800008, 0x41002d31, 0x00b10100, 0x00020002 }, + { 0x00800008, 0x41202d31, 0x00b10120, 0x00020002 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0181 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0182 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0183 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e3 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0184 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01a4 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01c4 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01e4 }, + { 0x00800008, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800008, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800008, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800008, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x01000005, 0x20000c3c, 0x00210070, 0x00000000 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000034 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0009000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0415a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20c00229, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e0, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0190 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b0 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d0 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f0 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x20c00229, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e1, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0191 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b1 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d1 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f1 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20c00229, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e2, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0192 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b2 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d2 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f2 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x20c00229, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20e00229, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x21000229, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x21200229, 0x00ad01e3, 0x00000000 }, + { 0x00800040, 0x20c04529, 0x00b100c0, 0x00ad0193 }, + { 0x00800040, 0x20e04529, 0x00b100e0, 0x00ad01b3 }, + { 0x00800040, 0x21004529, 0x00b10100, 0x00ad01d3 }, + { 0x00800040, 0x21204529, 0x00b10120, 0x00ad01f3 }, + { 0x00800040, 0x20c02d29, 0x00b100c0, 0x00010001 }, + { 0x00800040, 0x20e02d29, 0x00b100e0, 0x00010001 }, + { 0x00800040, 0x21002d29, 0x00b10100, 0x00010001 }, + { 0x00800040, 0x21202d29, 0x00b10120, 0x00010001 }, + { 0x80800008, 0x40c02d31, 0x00b100c0, 0x00010001 }, + { 0x80800008, 0x40e02d31, 0x00b100e0, 0x00010001 }, + { 0x80800008, 0x41002d31, 0x00b10100, 0x00010001 }, + { 0x80800008, 0x41202d31, 0x00b10120, 0x00010001 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x21801d29, 0x008d0040, 0x0414a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000005 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x20800231, 0x00ad0180, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c0, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000000e }, + { 0x00800001, 0x20800231, 0x00ad0181, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a1, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c1, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000009 }, + { 0x00800001, 0x20800231, 0x00ad0182, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a2, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c2, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x20800231, 0x00ad0183, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00ad01a3, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00ad01c3, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00ad01e3, 0x00000000 }, + { 0x00000001, 0x20480061, 0x00000000, 0x00070007 }, + { 0x01000005, 0x20000c3c, 0x0021006c, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000015 }, + { 0x00000040, 0x20440c21, 0x00210068, 0x00000000 }, + { 0x00800031, 0x20c01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x20e01d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21001d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000020 }, + { 0x00800031, 0x21201d21, 0x008d0040, 0x04110203 }, + { 0x00000040, 0x20680c21, 0x00210068, 0x00000080 }, + { 0x00800040, 0x20c045ad, 0x00b100c0, 0x00b10080 }, + { 0x00800040, 0x20e045ad, 0x00b100e0, 0x00b10090 }, + { 0x00800040, 0x210045ad, 0x00b10100, 0x00b100a0 }, + { 0x00800040, 0x212045ad, 0x00b10120, 0x00b100b0 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x00800001, 0x20800231, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900231, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20a00231, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20b00231, 0x00b20120, 0x00000000 }, + { 0x00802001, 0x20200022, 0x008d0080, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/frame_backward.g4a b/driver/xf86-video-intel/src/xvmc/frame_backward.g4a new file mode 100644 index 000000000..f669dac59 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_backward.g4a @@ -0,0 +1,69 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + +/* shader for backward predict mc +*/ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') + +mov (2) g1.14<1>UW g1.18<2,2,1>UW {align1}; +/* save payload */ +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +/* 8x8 media read/write payload */ +mov (1) g1.8<1>UD 0x0070007UD {align1}; +/* save payload, again */ +define(`dest', `g118') +define(`input_surface', `7') +define(`mv1', `g115.14') +define(`mv2', `g115.16') +/* Y */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g115.0<2,2,1>UD g1.14<2,2,1>W {align1}; +include(`motion_frame_y.g4i') +/* motion_vector = motion_vector >> 1 */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +shr (2) g1.0<1>UD g115.0<2,2,1>UD 1UD {align1}; +asr (2) g115.14<1>W g115.14<2,2,1>W 1W {align1}; +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g1.0<2,2,1>UD g1.14<2,2,1>W {align1}; +/* U */ +define(`input_surface1', `8') +define(`input_surface2', `9') +mov (1) g2.8<1>UD 0x007000fUD {align1}; +include(`motion_frame_uv.g4i') + +/* V */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +include(`addidct.g4i') + +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/frame_backward.g4b b/driver/xf86-video-intel/src/xvmc/frame_backward.g4b new file mode 100644 index 000000000..980ad62f6 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_backward.g4b @@ -0,0 +1,716 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00200001, 0x202e0129, 0x00450032, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450e60, 0x0045002e }, + { 0x01000005, 0x20000d3c, 0x00210e6e, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000012b }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000de }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000031 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a007 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x00800040, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x00800040, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x00800040, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x00800040, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x00800040, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x00800040, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x00800040, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x00800040, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x00800040, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x00800040, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x00800040, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x00800040, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x00800040, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x00800040, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x00800040, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c60 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c80 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca0 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc0 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce0 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d00 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d20 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d40 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d60 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d80 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da0 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc0 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de0 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e00 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e20 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f00 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000092 }, + { 0x00800040, 0x23804629, 0x00b10c41, 0x00b10c42 }, + { 0x00800040, 0x23a04629, 0x00b10c61, 0x00b10c62 }, + { 0x00800040, 0x23c04629, 0x00b10c81, 0x00b10c82 }, + { 0x00800040, 0x23e04629, 0x00b10ca1, 0x00b10ca2 }, + { 0x00800040, 0x24004629, 0x00b10cc1, 0x00b10cc2 }, + { 0x00800040, 0x24204629, 0x00b10ce1, 0x00b10ce2 }, + { 0x00800040, 0x24404629, 0x00b10d01, 0x00b10d02 }, + { 0x00800040, 0x24604629, 0x00b10d21, 0x00b10d22 }, + { 0x00800040, 0x24804629, 0x00b10d41, 0x00b10d42 }, + { 0x00800040, 0x24a04629, 0x00b10d61, 0x00b10d62 }, + { 0x00800040, 0x24c04629, 0x00b10d81, 0x00b10d82 }, + { 0x00800040, 0x24e04629, 0x00b10da1, 0x00b10da2 }, + { 0x00800040, 0x25004629, 0x00b10dc1, 0x00b10dc2 }, + { 0x00800040, 0x25204629, 0x00b10de1, 0x00b10de2 }, + { 0x00800040, 0x25404629, 0x00b10e01, 0x00b10e02 }, + { 0x00800040, 0x25604629, 0x00b10e21, 0x00b10e22 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c62 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c82 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca2 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc2 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce2 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d02 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d22 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d42 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d62 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d82 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da2 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc2 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de2 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e02 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e22 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f02 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 }, + { 0x00800040, 0x23804629, 0x00b10c42, 0x00b10c43 }, + { 0x00800040, 0x23a04629, 0x00b10c62, 0x00b10c63 }, + { 0x00800040, 0x23c04629, 0x00b10c82, 0x00b10c83 }, + { 0x00800040, 0x23e04629, 0x00b10ca2, 0x00b10ca3 }, + { 0x00800040, 0x24004629, 0x00b10cc2, 0x00b10cc3 }, + { 0x00800040, 0x24204629, 0x00b10ce2, 0x00b10ce3 }, + { 0x00800040, 0x24404629, 0x00b10d02, 0x00b10d03 }, + { 0x00800040, 0x24604629, 0x00b10d22, 0x00b10d23 }, + { 0x00800040, 0x24804629, 0x00b10d42, 0x00b10d43 }, + { 0x00800040, 0x24a04629, 0x00b10d62, 0x00b10d63 }, + { 0x00800040, 0x24c04629, 0x00b10d82, 0x00b10d83 }, + { 0x00800040, 0x24e04629, 0x00b10da2, 0x00b10da3 }, + { 0x00800040, 0x25004629, 0x00b10dc2, 0x00b10dc3 }, + { 0x00800040, 0x25204629, 0x00b10de2, 0x00b10de3 }, + { 0x00800040, 0x25404629, 0x00b10e02, 0x00b10e03 }, + { 0x00800040, 0x25604629, 0x00b10e22, 0x00b10e23 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c62 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c82 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca2 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc2 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce2 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d02 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d22 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d42 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d62 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d82 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da2 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc2 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de2 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e02 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e22 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f02 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c63 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c83 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca3 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc3 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce3 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d03 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d23 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d43 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d63 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d83 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da3 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc3 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de3 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e03 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e23 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f03 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00800040, 0x23804629, 0x00b10c43, 0x00b10c44 }, + { 0x00800040, 0x23a04629, 0x00b10c63, 0x00b10c64 }, + { 0x00800040, 0x23c04629, 0x00b10c83, 0x00b10c84 }, + { 0x00800040, 0x23e04629, 0x00b10ca3, 0x00b10ca4 }, + { 0x00800040, 0x24004629, 0x00b10cc3, 0x00b10cc4 }, + { 0x00800040, 0x24204629, 0x00b10ce3, 0x00b10ce4 }, + { 0x00800040, 0x24404629, 0x00b10d03, 0x00b10d04 }, + { 0x00800040, 0x24604629, 0x00b10d23, 0x00b10d24 }, + { 0x00800040, 0x24804629, 0x00b10d43, 0x00b10d44 }, + { 0x00800040, 0x24a04629, 0x00b10d63, 0x00b10d64 }, + { 0x00800040, 0x24c04629, 0x00b10d83, 0x00b10d84 }, + { 0x00800040, 0x24e04629, 0x00b10da3, 0x00b10da4 }, + { 0x00800040, 0x25004629, 0x00b10dc3, 0x00b10dc4 }, + { 0x00800040, 0x25204629, 0x00b10de3, 0x00b10de4 }, + { 0x00800040, 0x25404629, 0x00b10e03, 0x00b10e04 }, + { 0x00800040, 0x25604629, 0x00b10e23, 0x00b10e24 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c63 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c83 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca3 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc3 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce3 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d03 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d23 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d43 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d63 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d83 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da3 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc3 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de3 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e03 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e23 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f03 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c64 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c84 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca4 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc4 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce4 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d04 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d24 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d44 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d64 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d84 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da4 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc4 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de4 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e04 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e24 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f04 }, + { 0x80800008, 0x23802d29, 0x00b10380, 0x00020002 }, + { 0x80800008, 0x23a02d29, 0x00b103a0, 0x00020002 }, + { 0x80800008, 0x23c02d29, 0x00b103c0, 0x00020002 }, + { 0x80800008, 0x23e02d29, 0x00b103e0, 0x00020002 }, + { 0x80800008, 0x24002d29, 0x00b10400, 0x00020002 }, + { 0x80800008, 0x24202d29, 0x00b10420, 0x00020002 }, + { 0x80800008, 0x24402d29, 0x00b10440, 0x00020002 }, + { 0x80800008, 0x24602d29, 0x00b10460, 0x00020002 }, + { 0x80800008, 0x24802d29, 0x00b10480, 0x00020002 }, + { 0x80800008, 0x24a02d29, 0x00b104a0, 0x00020002 }, + { 0x80800008, 0x24c02d29, 0x00b104c0, 0x00020002 }, + { 0x80800008, 0x24e02d29, 0x00b104e0, 0x00020002 }, + { 0x80800008, 0x25002d29, 0x00b10500, 0x00020002 }, + { 0x80800008, 0x25202d29, 0x00b10520, 0x00020002 }, + { 0x80800008, 0x25402d29, 0x00b10540, 0x00020002 }, + { 0x80800008, 0x25602d29, 0x00b10560, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x000000e5 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20581c21, 0x00210058, 0x00000011 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x80800042, 0x23804629, 0x00b10c41, 0x00b10c42 }, + { 0x80800042, 0x23a04629, 0x00b10c61, 0x00b10c62 }, + { 0x80800042, 0x23c04629, 0x00b10c81, 0x00b10c82 }, + { 0x80800042, 0x23e04629, 0x00b10ca1, 0x00b10ca2 }, + { 0x80800042, 0x24004629, 0x00b10cc1, 0x00b10cc2 }, + { 0x80800042, 0x24204629, 0x00b10ce1, 0x00b10ce2 }, + { 0x80800042, 0x24404629, 0x00b10d01, 0x00b10d02 }, + { 0x80800042, 0x24604629, 0x00b10d21, 0x00b10d22 }, + { 0x80800042, 0x24804629, 0x00b10d41, 0x00b10d42 }, + { 0x80800042, 0x24a04629, 0x00b10d61, 0x00b10d62 }, + { 0x80800042, 0x24c04629, 0x00b10d81, 0x00b10d82 }, + { 0x80800042, 0x24e04629, 0x00b10da1, 0x00b10da2 }, + { 0x80800042, 0x25004629, 0x00b10dc1, 0x00b10dc2 }, + { 0x80800042, 0x25204629, 0x00b10de1, 0x00b10de2 }, + { 0x80800042, 0x25404629, 0x00b10e01, 0x00b10e02 }, + { 0x80800042, 0x25604629, 0x00b10e21, 0x00b10e22 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x80800042, 0x23804629, 0x00b10c42, 0x00b10c43 }, + { 0x80800042, 0x23a04629, 0x00b10c62, 0x00b10c63 }, + { 0x80800042, 0x23c04629, 0x00b10c82, 0x00b10c83 }, + { 0x80800042, 0x23e04629, 0x00b10ca2, 0x00b10ca3 }, + { 0x80800042, 0x24004629, 0x00b10cc2, 0x00b10cc3 }, + { 0x80800042, 0x24204629, 0x00b10ce2, 0x00b10ce3 }, + { 0x80800042, 0x24404629, 0x00b10d02, 0x00b10d03 }, + { 0x80800042, 0x24604629, 0x00b10d22, 0x00b10d23 }, + { 0x80800042, 0x24804629, 0x00b10d42, 0x00b10d43 }, + { 0x80800042, 0x24a04629, 0x00b10d62, 0x00b10d63 }, + { 0x80800042, 0x24c04629, 0x00b10d82, 0x00b10d83 }, + { 0x80800042, 0x24e04629, 0x00b10da2, 0x00b10da3 }, + { 0x80800042, 0x25004629, 0x00b10dc2, 0x00b10dc3 }, + { 0x80800042, 0x25204629, 0x00b10de2, 0x00b10de3 }, + { 0x80800042, 0x25404629, 0x00b10e02, 0x00b10e03 }, + { 0x80800042, 0x25604629, 0x00b10e22, 0x00b10e23 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x80800042, 0x23804629, 0x00b10c43, 0x00b10c44 }, + { 0x80800042, 0x23a04629, 0x00b10c63, 0x00b10c64 }, + { 0x80800042, 0x23c04629, 0x00b10c83, 0x00b10c84 }, + { 0x80800042, 0x23e04629, 0x00b10ca3, 0x00b10ca4 }, + { 0x80800042, 0x24004629, 0x00b10cc3, 0x00b10cc4 }, + { 0x80800042, 0x24204629, 0x00b10ce3, 0x00b10ce4 }, + { 0x80800042, 0x24404629, 0x00b10d03, 0x00b10d04 }, + { 0x80800042, 0x24604629, 0x00b10d23, 0x00b10d24 }, + { 0x80800042, 0x24804629, 0x00b10d43, 0x00b10d44 }, + { 0x80800042, 0x24a04629, 0x00b10d63, 0x00b10d64 }, + { 0x80800042, 0x24c04629, 0x00b10d83, 0x00b10d84 }, + { 0x80800042, 0x24e04629, 0x00b10da3, 0x00b10da4 }, + { 0x80800042, 0x25004629, 0x00b10dc3, 0x00b10dc4 }, + { 0x80800042, 0x25204629, 0x00b10de3, 0x00b10de4 }, + { 0x80800042, 0x25404629, 0x00b10e03, 0x00b10e04 }, + { 0x80800042, 0x25604629, 0x00b10e23, 0x00b10e24 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a007 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c60 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c80 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10ca0 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10cc0 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10ce0 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10d00 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d20 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d40 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d60 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d80 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10da0 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10dc0 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10de0 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10e00 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e20 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10f00 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x80800042, 0x23804629, 0x00b10c41, 0x00b10c61 }, + { 0x80800042, 0x23a04629, 0x00b10c61, 0x00b10c81 }, + { 0x80800042, 0x23c04629, 0x00b10c81, 0x00b10ca1 }, + { 0x80800042, 0x23e04629, 0x00b10ca1, 0x00b10cc1 }, + { 0x80800042, 0x24004629, 0x00b10cc1, 0x00b10ce1 }, + { 0x80800042, 0x24204629, 0x00b10ce1, 0x00b10d01 }, + { 0x80800042, 0x24404629, 0x00b10d01, 0x00b10d21 }, + { 0x80800042, 0x24604629, 0x00b10d21, 0x00b10d41 }, + { 0x80800042, 0x24804629, 0x00b10d41, 0x00b10d61 }, + { 0x80800042, 0x24a04629, 0x00b10d61, 0x00b10d81 }, + { 0x80800042, 0x24c04629, 0x00b10d81, 0x00b10da1 }, + { 0x80800042, 0x24e04629, 0x00b10da1, 0x00b10dc1 }, + { 0x80800042, 0x25004629, 0x00b10dc1, 0x00b10de1 }, + { 0x80800042, 0x25204629, 0x00b10de1, 0x00b10e01 }, + { 0x80800042, 0x25404629, 0x00b10e01, 0x00b10e21 }, + { 0x80800042, 0x25604629, 0x00b10e21, 0x00b10f01 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x80800042, 0x23804629, 0x00b10c42, 0x00b10c62 }, + { 0x80800042, 0x23a04629, 0x00b10c62, 0x00b10c82 }, + { 0x80800042, 0x23c04629, 0x00b10c82, 0x00b10ca2 }, + { 0x80800042, 0x23e04629, 0x00b10ca2, 0x00b10cc2 }, + { 0x80800042, 0x24004629, 0x00b10cc2, 0x00b10ce2 }, + { 0x80800042, 0x24204629, 0x00b10ce2, 0x00b10d02 }, + { 0x80800042, 0x24404629, 0x00b10d02, 0x00b10d22 }, + { 0x80800042, 0x24604629, 0x00b10d22, 0x00b10d42 }, + { 0x80800042, 0x24804629, 0x00b10d42, 0x00b10d62 }, + { 0x80800042, 0x24a04629, 0x00b10d62, 0x00b10d82 }, + { 0x80800042, 0x24c04629, 0x00b10d82, 0x00b10da2 }, + { 0x80800042, 0x24e04629, 0x00b10da2, 0x00b10dc2 }, + { 0x80800042, 0x25004629, 0x00b10dc2, 0x00b10de2 }, + { 0x80800042, 0x25204629, 0x00b10de2, 0x00b10e02 }, + { 0x80800042, 0x25404629, 0x00b10e02, 0x00b10e22 }, + { 0x80800042, 0x25604629, 0x00b10e22, 0x00b10f02 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x80800042, 0x23804629, 0x00b10c43, 0x00b10c63 }, + { 0x80800042, 0x23a04629, 0x00b10c63, 0x00b10c83 }, + { 0x80800042, 0x23c04629, 0x00b10c83, 0x00b10ca3 }, + { 0x80800042, 0x23e04629, 0x00b10ca3, 0x00b10cc3 }, + { 0x80800042, 0x24004629, 0x00b10cc3, 0x00b10ce3 }, + { 0x80800042, 0x24204629, 0x00b10ce3, 0x00b10d03 }, + { 0x80800042, 0x24404629, 0x00b10d03, 0x00b10d23 }, + { 0x80800042, 0x24604629, 0x00b10d23, 0x00b10d43 }, + { 0x80800042, 0x24804629, 0x00b10d43, 0x00b10d63 }, + { 0x80800042, 0x24a04629, 0x00b10d63, 0x00b10d83 }, + { 0x80800042, 0x24c04629, 0x00b10d83, 0x00b10da3 }, + { 0x80800042, 0x24e04629, 0x00b10da3, 0x00b10dc3 }, + { 0x80800042, 0x25004629, 0x00b10dc3, 0x00b10de3 }, + { 0x80800042, 0x25204629, 0x00b10de3, 0x00b10e03 }, + { 0x80800042, 0x25404629, 0x00b10e03, 0x00b10e23 }, + { 0x80800042, 0x25604629, 0x00b10e23, 0x00b10f03 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x23800229, 0x00b10c40, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c60, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c80, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca0, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc0, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce0, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d00, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d20, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d40, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d60, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d80, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da0, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc0, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de0, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e00, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e20, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x23800229, 0x00b10c41, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c61, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c81, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca1, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc1, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce1, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d01, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d21, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d41, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d61, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d81, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da1, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc1, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de1, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e01, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e21, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x23800229, 0x00b10c42, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c62, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c82, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca2, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc2, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce2, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d02, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d22, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d42, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d62, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d82, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da2, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc2, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de2, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e02, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e22, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x23800229, 0x00b10c43, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c63, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c83, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca3, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc3, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce3, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d03, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d23, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d43, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d63, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d83, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da3, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc3, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de3, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e03, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e23, 0x00000000 }, + { 0x00200008, 0x20200c21, 0x00450e60, 0x00000001 }, + { 0x0020000c, 0x2e6e3dad, 0x00450e6e, 0x00010001 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450020, 0x0045002e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x2ac01d29, 0x008d0040, 0x0414a008 }, + { 0x00800031, 0x2b401d29, 0x008d0040, 0x0414a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x25800229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b40, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x25800229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b41, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x25800229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b42, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x25800229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b43, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba3, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/frame_backward_igd.g4a b/driver/xf86-video-intel/src/xvmc/frame_backward_igd.g4a new file mode 100644 index 000000000..338ae1ee4 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_backward_igd.g4a @@ -0,0 +1,69 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + +/* shader for backward predict mc +*/ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') + +mov (2) g1.14<1>UW g1.18<2,2,1>UW {align1}; +/* save payload */ +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +/* 8x8 media read/write payload */ +mov (1) g1.8<1>UD 0x0070007UD {align1}; +/* save payload, again */ +define(`dest', `g118') +define(`input_surface', `7') +define(`mv1', `g115.14') +define(`mv2', `g115.16') +/* Y */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g115.0<2,2,1>UD g1.14<2,2,1>W {align1}; +include(`motion_frame_y_igd.g4i') +/* motion_vector = motion_vector >> 1 */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +shr (2) g1.0<1>UD g115.0<2,2,1>UD 1UD {align1}; +asr (2) g115.14<1>W g115.14<2,2,1>W 1W {align1}; +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g1.0<2,2,1>UD g1.14<2,2,1>W {align1}; +/* U */ +define(`input_surface1', `8') +define(`input_surface2', `9') +mov (1) g2.8<1>UD 0x007000fUD {align1}; +include(`motion_frame_uv_igd.g4i') + +/* V */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +include(`addidct.g4i') + +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/frame_backward_igd.g4b b/driver/xf86-video-intel/src/xvmc/frame_backward_igd.g4b new file mode 100644 index 000000000..dbb13205d --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_backward_igd.g4b @@ -0,0 +1,374 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00200001, 0x202e0129, 0x00450032, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450e60, 0x0045002e }, + { 0x01000005, 0x20000d3c, 0x00210e6e, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a007 }, + { 0x00800040, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x00800040, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x00800040, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x00800040, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x00800040, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x00800040, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x00800040, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x00800040, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x00800040, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x00800040, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x00800040, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x00800040, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x00800040, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x00800040, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x00800040, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x00800040, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c60 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c80 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca0 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc0 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce0 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d00 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d20 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d40 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d60 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d80 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da0 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc0 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de0 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e00 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e20 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f00 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x80800008, 0x23802d29, 0x00b10380, 0x00020002 }, + { 0x80800008, 0x23a02d29, 0x00b103a0, 0x00020002 }, + { 0x80800008, 0x23c02d29, 0x00b103c0, 0x00020002 }, + { 0x80800008, 0x23e02d29, 0x00b103e0, 0x00020002 }, + { 0x80800008, 0x24002d29, 0x00b10400, 0x00020002 }, + { 0x80800008, 0x24202d29, 0x00b10420, 0x00020002 }, + { 0x80800008, 0x24402d29, 0x00b10440, 0x00020002 }, + { 0x80800008, 0x24602d29, 0x00b10460, 0x00020002 }, + { 0x80800008, 0x24802d29, 0x00b10480, 0x00020002 }, + { 0x80800008, 0x24a02d29, 0x00b104a0, 0x00020002 }, + { 0x80800008, 0x24c02d29, 0x00b104c0, 0x00020002 }, + { 0x80800008, 0x24e02d29, 0x00b104e0, 0x00020002 }, + { 0x80800008, 0x25002d29, 0x00b10500, 0x00020002 }, + { 0x80800008, 0x25202d29, 0x00b10520, 0x00020002 }, + { 0x80800008, 0x25402d29, 0x00b10540, 0x00020002 }, + { 0x80800008, 0x25602d29, 0x00b10560, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a007 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c60 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c80 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10ca0 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10cc0 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10ce0 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10d00 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d20 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d40 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d60 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d80 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10da0 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10dc0 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10de0 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10e00 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e20 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10f00 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00800001, 0x23800229, 0x00b10c40, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c60, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c80, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca0, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc0, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce0, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d00, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d20, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d40, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d60, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d80, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da0, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc0, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de0, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e00, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e20, 0x00000000 }, + { 0x00200008, 0x20200c21, 0x00450e60, 0x00000001 }, + { 0x0020000c, 0x2e6e3dad, 0x00450e6e, 0x00010001 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450020, 0x0045002e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x008d0040, 0x0414a008 }, + { 0x00800031, 0x2b401d29, 0x008d0040, 0x0414a009 }, + { 0x00800001, 0x25800229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b40, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/frame_f_b.g4a b/driver/xf86-video-intel/src/xvmc/frame_f_b.g4a new file mode 100644 index 000000000..98729dd22 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_f_b.g4a @@ -0,0 +1,131 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + +/* shader for forward and backward predict mc +*/ +/* (x', y') = (x, y) + (motion_vector1.x >> 1, motion_vector1.y >> 1) +/* (x'', y'') = (x, y) + (motion_vector2.x >> 1, motion_vector2.y >> 1) +/* f(x, y) = (motion_forward(x`, y`) + motion_backward(x'', y'') + 1) / 2 */ + +//Save payload +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; +include(`block_clear.g4i') + +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (1) g1.8<1>UD 0x0070007UD {align1}; +mov (8) g2.0<1>UD g1.0<8,8,1>UD {align1}; +/* Y */ +//Forward +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g115.0<2,2,1>UD g1.14<2,2,1>W {align1}; +define(`input_surface', `4') +define(`mv1', `g115.14') +define(`mv2', `g115.16') +include(`motion_frame_y.g4i') +mov (16) g52.0<1>UD g28.0<16,16,1>UD {align1 compr}; +mov (16) g54.0<1>UD g30.0<16,16,1>UD {align1 compr}; +mov (16) g56.0<1>UD g32.0<16,16,1>UD {align1 compr}; +mov (16) g58.0<1>UD g34.0<16,16,1>UD {align1 compr}; +mov (16) g60.0<1>UD g36.0<16,16,1>UD {align1 compr}; +mov (16) g62.0<1>UD g38.0<16,16,1>UD {align1 compr}; +mov (16) g64.0<1>UD g40.0<16,16,1>UD {align1 compr}; +mov (16) g66.0<1>UD g42.0<16,16,1>UD {align1 compr}; +//Backward +asr (2) g1.14<1>W g115.18<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g115.0<2,2,1>UD g1.14<2,2,1>W {align1}; +define(`input_surface', `7') +define(`mv1', `g115.18') +define(`mv2', `g115.20') +include(`motion_frame_y.g4i') + +//Average +avg.sat (16) g28.0<1>UW g28.0<16,16,1>UW g52.0<16,16,1>UW {align1}; +avg.sat (16) g29.0<1>UW g29.0<16,16,1>UW g53.0<16,16,1>UW {align1}; +avg.sat (16) g30.0<1>UW g30.0<16,16,1>UW g54.0<16,16,1>UW {align1}; +avg.sat (16) g31.0<1>UW g31.0<16,16,1>UW g55.0<16,16,1>UW {align1}; +avg.sat (16) g32.0<1>UW g32.0<16,16,1>UW g56.0<16,16,1>UW {align1}; +avg.sat (16) g33.0<1>UW g33.0<16,16,1>UW g57.0<16,16,1>UW {align1}; +avg.sat (16) g34.0<1>UW g34.0<16,16,1>UW g58.0<16,16,1>UW {align1}; +avg.sat (16) g35.0<1>UW g35.0<16,16,1>UW g59.0<16,16,1>UW {align1}; +avg.sat (16) g36.0<1>UW g36.0<16,16,1>UW g60.0<16,16,1>UW {align1}; +avg.sat (16) g37.0<1>UW g37.0<16,16,1>UW g61.0<16,16,1>UW {align1}; +avg.sat (16) g38.0<1>UW g38.0<16,16,1>UW g62.0<16,16,1>UW {align1}; +avg.sat (16) g39.0<1>UW g39.0<16,16,1>UW g63.0<16,16,1>UW {align1}; +avg.sat (16) g40.0<1>UW g40.0<16,16,1>UW g64.0<16,16,1>UW {align1}; +avg.sat (16) g41.0<1>UW g41.0<16,16,1>UW g65.0<16,16,1>UW {align1}; +avg.sat (16) g42.0<1>UW g42.0<16,16,1>UW g66.0<16,16,1>UW {align1}; +avg.sat (16) g43.0<1>UW g43.0<16,16,1>UW g67.0<16,16,1>UW {align1}; + +/* UV */ +//Forward +shr (2) g1.0<1>UD g115.0<2,2,1>UD 1UD {align1}; +asr (2) g115.14<1>W g115.14<2,2,1>W 1W {align1}; +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g1.0<2,2,1>UD g1.14<2,2,1>W {align1}; + +define(`input_surface1', `5') +define(`input_surface2', `6') +define(`mv1', `g115.14') +define(`mv2', `g115.16') +mov (1) g2.8<1>UD 0x007000fUD {align1}; +include(`motion_frame_uv.g4i') +mov (16) g122.0<1>UB g44.0<16,16,2>UB {align1}; +mov (16) g122.16<1>UB g45.0<16,16,2>UB {align1}; +mov (16) g123.0<1>UB g46.0<16,16,2>UB {align1}; +mov (16) g123.16<1>UB g47.0<16,16,2>UB {align1}; +mov (16) g124.0<1>UB g48.0<16,16,2>UB {align1}; +mov (16) g124.16<1>UB g49.0<16,16,2>UB {align1}; +mov (16) g125.0<1>UB g50.0<16,16,2>UB {align1}; +mov (16) g125.16<1>UB g51.0<16,16,2>UB {align1}; +//Backward +asr (2) g115.18<1>W g115.18<2,2,1>W 1W {align1}; +asr (2) g1.14<1>W g115.18<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g1.0<2,2,1>UD g1.14<2,2,1>W {align1}; +define(`input_surface1', `8') +define(`input_surface2', `9') +define(`mv1', `g115.18') +define(`mv2', `g115.20') +mov (1) g2.8<1>UD 0x007000fUD {align1}; +include(`motion_frame_uv.g4i') + +//Average +avg.sat (16) g44.0<1>UW g44.0<16,16,1>UW g122.0<16,16,1>UB {align1}; +avg.sat (16) g45.0<1>UW g45.0<16,16,1>UW g122.16<16,16,1>UB {align1}; +avg.sat (16) g46.0<1>UW g46.0<16,16,1>UW g123.0<16,16,1>UB {align1}; +avg.sat (16) g47.0<1>UW g47.0<16,16,1>UW g123.16<16,16,1>UB {align1}; +avg.sat (16) g48.0<1>UW g48.0<16,16,1>UW g124.0<16,16,1>UB {align1}; +avg.sat (16) g49.0<1>UW g49.0<16,16,1>UW g124.16<16,16,1>UB {align1}; +avg.sat (16) g50.0<1>UW g50.0<16,16,1>UW g125.0<16,16,1>UB {align1}; +avg.sat (16) g51.0<1>UW g51.0<16,16,1>UW g125.16<16,16,1>UB {align1}; + +include(`addidct.g4i') + +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/frame_f_b.g4b b/driver/xf86-video-intel/src/xvmc/frame_f_b.g4b new file mode 100644 index 000000000..760cae14c --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_f_b.g4b @@ -0,0 +1,1257 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450e60, 0x0045002e }, + { 0x01000005, 0x20000d3c, 0x00210e6e, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000012b }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000de }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000031 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a004 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x00800040, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x00800040, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x00800040, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x00800040, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x00800040, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x00800040, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x00800040, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x00800040, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x00800040, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x00800040, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x00800040, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x00800040, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x00800040, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x00800040, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x00800040, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c60 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c80 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca0 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc0 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce0 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d00 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d20 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d40 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d60 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d80 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da0 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc0 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de0 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e00 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e20 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f00 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000092 }, + { 0x00800040, 0x23804629, 0x00b10c41, 0x00b10c42 }, + { 0x00800040, 0x23a04629, 0x00b10c61, 0x00b10c62 }, + { 0x00800040, 0x23c04629, 0x00b10c81, 0x00b10c82 }, + { 0x00800040, 0x23e04629, 0x00b10ca1, 0x00b10ca2 }, + { 0x00800040, 0x24004629, 0x00b10cc1, 0x00b10cc2 }, + { 0x00800040, 0x24204629, 0x00b10ce1, 0x00b10ce2 }, + { 0x00800040, 0x24404629, 0x00b10d01, 0x00b10d02 }, + { 0x00800040, 0x24604629, 0x00b10d21, 0x00b10d22 }, + { 0x00800040, 0x24804629, 0x00b10d41, 0x00b10d42 }, + { 0x00800040, 0x24a04629, 0x00b10d61, 0x00b10d62 }, + { 0x00800040, 0x24c04629, 0x00b10d81, 0x00b10d82 }, + { 0x00800040, 0x24e04629, 0x00b10da1, 0x00b10da2 }, + { 0x00800040, 0x25004629, 0x00b10dc1, 0x00b10dc2 }, + { 0x00800040, 0x25204629, 0x00b10de1, 0x00b10de2 }, + { 0x00800040, 0x25404629, 0x00b10e01, 0x00b10e02 }, + { 0x00800040, 0x25604629, 0x00b10e21, 0x00b10e22 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c62 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c82 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca2 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc2 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce2 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d02 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d22 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d42 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d62 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d82 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da2 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc2 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de2 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e02 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e22 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f02 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 }, + { 0x00800040, 0x23804629, 0x00b10c42, 0x00b10c43 }, + { 0x00800040, 0x23a04629, 0x00b10c62, 0x00b10c63 }, + { 0x00800040, 0x23c04629, 0x00b10c82, 0x00b10c83 }, + { 0x00800040, 0x23e04629, 0x00b10ca2, 0x00b10ca3 }, + { 0x00800040, 0x24004629, 0x00b10cc2, 0x00b10cc3 }, + { 0x00800040, 0x24204629, 0x00b10ce2, 0x00b10ce3 }, + { 0x00800040, 0x24404629, 0x00b10d02, 0x00b10d03 }, + { 0x00800040, 0x24604629, 0x00b10d22, 0x00b10d23 }, + { 0x00800040, 0x24804629, 0x00b10d42, 0x00b10d43 }, + { 0x00800040, 0x24a04629, 0x00b10d62, 0x00b10d63 }, + { 0x00800040, 0x24c04629, 0x00b10d82, 0x00b10d83 }, + { 0x00800040, 0x24e04629, 0x00b10da2, 0x00b10da3 }, + { 0x00800040, 0x25004629, 0x00b10dc2, 0x00b10dc3 }, + { 0x00800040, 0x25204629, 0x00b10de2, 0x00b10de3 }, + { 0x00800040, 0x25404629, 0x00b10e02, 0x00b10e03 }, + { 0x00800040, 0x25604629, 0x00b10e22, 0x00b10e23 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c62 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c82 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca2 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc2 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce2 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d02 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d22 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d42 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d62 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d82 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da2 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc2 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de2 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e02 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e22 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f02 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c63 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c83 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca3 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc3 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce3 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d03 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d23 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d43 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d63 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d83 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da3 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc3 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de3 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e03 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e23 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f03 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00800040, 0x23804629, 0x00b10c43, 0x00b10c44 }, + { 0x00800040, 0x23a04629, 0x00b10c63, 0x00b10c64 }, + { 0x00800040, 0x23c04629, 0x00b10c83, 0x00b10c84 }, + { 0x00800040, 0x23e04629, 0x00b10ca3, 0x00b10ca4 }, + { 0x00800040, 0x24004629, 0x00b10cc3, 0x00b10cc4 }, + { 0x00800040, 0x24204629, 0x00b10ce3, 0x00b10ce4 }, + { 0x00800040, 0x24404629, 0x00b10d03, 0x00b10d04 }, + { 0x00800040, 0x24604629, 0x00b10d23, 0x00b10d24 }, + { 0x00800040, 0x24804629, 0x00b10d43, 0x00b10d44 }, + { 0x00800040, 0x24a04629, 0x00b10d63, 0x00b10d64 }, + { 0x00800040, 0x24c04629, 0x00b10d83, 0x00b10d84 }, + { 0x00800040, 0x24e04629, 0x00b10da3, 0x00b10da4 }, + { 0x00800040, 0x25004629, 0x00b10dc3, 0x00b10dc4 }, + { 0x00800040, 0x25204629, 0x00b10de3, 0x00b10de4 }, + { 0x00800040, 0x25404629, 0x00b10e03, 0x00b10e04 }, + { 0x00800040, 0x25604629, 0x00b10e23, 0x00b10e24 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c63 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c83 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca3 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc3 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce3 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d03 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d23 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d43 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d63 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d83 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da3 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc3 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de3 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e03 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e23 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f03 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c64 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c84 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca4 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc4 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce4 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d04 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d24 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d44 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d64 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d84 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da4 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc4 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de4 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e04 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e24 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f04 }, + { 0x80800008, 0x23802d29, 0x00b10380, 0x00020002 }, + { 0x80800008, 0x23a02d29, 0x00b103a0, 0x00020002 }, + { 0x80800008, 0x23c02d29, 0x00b103c0, 0x00020002 }, + { 0x80800008, 0x23e02d29, 0x00b103e0, 0x00020002 }, + { 0x80800008, 0x24002d29, 0x00b10400, 0x00020002 }, + { 0x80800008, 0x24202d29, 0x00b10420, 0x00020002 }, + { 0x80800008, 0x24402d29, 0x00b10440, 0x00020002 }, + { 0x80800008, 0x24602d29, 0x00b10460, 0x00020002 }, + { 0x80800008, 0x24802d29, 0x00b10480, 0x00020002 }, + { 0x80800008, 0x24a02d29, 0x00b104a0, 0x00020002 }, + { 0x80800008, 0x24c02d29, 0x00b104c0, 0x00020002 }, + { 0x80800008, 0x24e02d29, 0x00b104e0, 0x00020002 }, + { 0x80800008, 0x25002d29, 0x00b10500, 0x00020002 }, + { 0x80800008, 0x25202d29, 0x00b10520, 0x00020002 }, + { 0x80800008, 0x25402d29, 0x00b10540, 0x00020002 }, + { 0x80800008, 0x25602d29, 0x00b10560, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x000000e5 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20581c21, 0x00210058, 0x00000011 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x80800042, 0x23804629, 0x00b10c41, 0x00b10c42 }, + { 0x80800042, 0x23a04629, 0x00b10c61, 0x00b10c62 }, + { 0x80800042, 0x23c04629, 0x00b10c81, 0x00b10c82 }, + { 0x80800042, 0x23e04629, 0x00b10ca1, 0x00b10ca2 }, + { 0x80800042, 0x24004629, 0x00b10cc1, 0x00b10cc2 }, + { 0x80800042, 0x24204629, 0x00b10ce1, 0x00b10ce2 }, + { 0x80800042, 0x24404629, 0x00b10d01, 0x00b10d02 }, + { 0x80800042, 0x24604629, 0x00b10d21, 0x00b10d22 }, + { 0x80800042, 0x24804629, 0x00b10d41, 0x00b10d42 }, + { 0x80800042, 0x24a04629, 0x00b10d61, 0x00b10d62 }, + { 0x80800042, 0x24c04629, 0x00b10d81, 0x00b10d82 }, + { 0x80800042, 0x24e04629, 0x00b10da1, 0x00b10da2 }, + { 0x80800042, 0x25004629, 0x00b10dc1, 0x00b10dc2 }, + { 0x80800042, 0x25204629, 0x00b10de1, 0x00b10de2 }, + { 0x80800042, 0x25404629, 0x00b10e01, 0x00b10e02 }, + { 0x80800042, 0x25604629, 0x00b10e21, 0x00b10e22 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x80800042, 0x23804629, 0x00b10c42, 0x00b10c43 }, + { 0x80800042, 0x23a04629, 0x00b10c62, 0x00b10c63 }, + { 0x80800042, 0x23c04629, 0x00b10c82, 0x00b10c83 }, + { 0x80800042, 0x23e04629, 0x00b10ca2, 0x00b10ca3 }, + { 0x80800042, 0x24004629, 0x00b10cc2, 0x00b10cc3 }, + { 0x80800042, 0x24204629, 0x00b10ce2, 0x00b10ce3 }, + { 0x80800042, 0x24404629, 0x00b10d02, 0x00b10d03 }, + { 0x80800042, 0x24604629, 0x00b10d22, 0x00b10d23 }, + { 0x80800042, 0x24804629, 0x00b10d42, 0x00b10d43 }, + { 0x80800042, 0x24a04629, 0x00b10d62, 0x00b10d63 }, + { 0x80800042, 0x24c04629, 0x00b10d82, 0x00b10d83 }, + { 0x80800042, 0x24e04629, 0x00b10da2, 0x00b10da3 }, + { 0x80800042, 0x25004629, 0x00b10dc2, 0x00b10dc3 }, + { 0x80800042, 0x25204629, 0x00b10de2, 0x00b10de3 }, + { 0x80800042, 0x25404629, 0x00b10e02, 0x00b10e03 }, + { 0x80800042, 0x25604629, 0x00b10e22, 0x00b10e23 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x80800042, 0x23804629, 0x00b10c43, 0x00b10c44 }, + { 0x80800042, 0x23a04629, 0x00b10c63, 0x00b10c64 }, + { 0x80800042, 0x23c04629, 0x00b10c83, 0x00b10c84 }, + { 0x80800042, 0x23e04629, 0x00b10ca3, 0x00b10ca4 }, + { 0x80800042, 0x24004629, 0x00b10cc3, 0x00b10cc4 }, + { 0x80800042, 0x24204629, 0x00b10ce3, 0x00b10ce4 }, + { 0x80800042, 0x24404629, 0x00b10d03, 0x00b10d04 }, + { 0x80800042, 0x24604629, 0x00b10d23, 0x00b10d24 }, + { 0x80800042, 0x24804629, 0x00b10d43, 0x00b10d44 }, + { 0x80800042, 0x24a04629, 0x00b10d63, 0x00b10d64 }, + { 0x80800042, 0x24c04629, 0x00b10d83, 0x00b10d84 }, + { 0x80800042, 0x24e04629, 0x00b10da3, 0x00b10da4 }, + { 0x80800042, 0x25004629, 0x00b10dc3, 0x00b10dc4 }, + { 0x80800042, 0x25204629, 0x00b10de3, 0x00b10de4 }, + { 0x80800042, 0x25404629, 0x00b10e03, 0x00b10e04 }, + { 0x80800042, 0x25604629, 0x00b10e23, 0x00b10e24 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a004 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c60 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c80 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10ca0 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10cc0 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10ce0 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10d00 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d20 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d40 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d60 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d80 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10da0 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10dc0 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10de0 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10e00 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e20 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10f00 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x80800042, 0x23804629, 0x00b10c41, 0x00b10c61 }, + { 0x80800042, 0x23a04629, 0x00b10c61, 0x00b10c81 }, + { 0x80800042, 0x23c04629, 0x00b10c81, 0x00b10ca1 }, + { 0x80800042, 0x23e04629, 0x00b10ca1, 0x00b10cc1 }, + { 0x80800042, 0x24004629, 0x00b10cc1, 0x00b10ce1 }, + { 0x80800042, 0x24204629, 0x00b10ce1, 0x00b10d01 }, + { 0x80800042, 0x24404629, 0x00b10d01, 0x00b10d21 }, + { 0x80800042, 0x24604629, 0x00b10d21, 0x00b10d41 }, + { 0x80800042, 0x24804629, 0x00b10d41, 0x00b10d61 }, + { 0x80800042, 0x24a04629, 0x00b10d61, 0x00b10d81 }, + { 0x80800042, 0x24c04629, 0x00b10d81, 0x00b10da1 }, + { 0x80800042, 0x24e04629, 0x00b10da1, 0x00b10dc1 }, + { 0x80800042, 0x25004629, 0x00b10dc1, 0x00b10de1 }, + { 0x80800042, 0x25204629, 0x00b10de1, 0x00b10e01 }, + { 0x80800042, 0x25404629, 0x00b10e01, 0x00b10e21 }, + { 0x80800042, 0x25604629, 0x00b10e21, 0x00b10f01 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x80800042, 0x23804629, 0x00b10c42, 0x00b10c62 }, + { 0x80800042, 0x23a04629, 0x00b10c62, 0x00b10c82 }, + { 0x80800042, 0x23c04629, 0x00b10c82, 0x00b10ca2 }, + { 0x80800042, 0x23e04629, 0x00b10ca2, 0x00b10cc2 }, + { 0x80800042, 0x24004629, 0x00b10cc2, 0x00b10ce2 }, + { 0x80800042, 0x24204629, 0x00b10ce2, 0x00b10d02 }, + { 0x80800042, 0x24404629, 0x00b10d02, 0x00b10d22 }, + { 0x80800042, 0x24604629, 0x00b10d22, 0x00b10d42 }, + { 0x80800042, 0x24804629, 0x00b10d42, 0x00b10d62 }, + { 0x80800042, 0x24a04629, 0x00b10d62, 0x00b10d82 }, + { 0x80800042, 0x24c04629, 0x00b10d82, 0x00b10da2 }, + { 0x80800042, 0x24e04629, 0x00b10da2, 0x00b10dc2 }, + { 0x80800042, 0x25004629, 0x00b10dc2, 0x00b10de2 }, + { 0x80800042, 0x25204629, 0x00b10de2, 0x00b10e02 }, + { 0x80800042, 0x25404629, 0x00b10e02, 0x00b10e22 }, + { 0x80800042, 0x25604629, 0x00b10e22, 0x00b10f02 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x80800042, 0x23804629, 0x00b10c43, 0x00b10c63 }, + { 0x80800042, 0x23a04629, 0x00b10c63, 0x00b10c83 }, + { 0x80800042, 0x23c04629, 0x00b10c83, 0x00b10ca3 }, + { 0x80800042, 0x23e04629, 0x00b10ca3, 0x00b10cc3 }, + { 0x80800042, 0x24004629, 0x00b10cc3, 0x00b10ce3 }, + { 0x80800042, 0x24204629, 0x00b10ce3, 0x00b10d03 }, + { 0x80800042, 0x24404629, 0x00b10d03, 0x00b10d23 }, + { 0x80800042, 0x24604629, 0x00b10d23, 0x00b10d43 }, + { 0x80800042, 0x24804629, 0x00b10d43, 0x00b10d63 }, + { 0x80800042, 0x24a04629, 0x00b10d63, 0x00b10d83 }, + { 0x80800042, 0x24c04629, 0x00b10d83, 0x00b10da3 }, + { 0x80800042, 0x24e04629, 0x00b10da3, 0x00b10dc3 }, + { 0x80800042, 0x25004629, 0x00b10dc3, 0x00b10de3 }, + { 0x80800042, 0x25204629, 0x00b10de3, 0x00b10e03 }, + { 0x80800042, 0x25404629, 0x00b10e03, 0x00b10e23 }, + { 0x80800042, 0x25604629, 0x00b10e23, 0x00b10f03 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x23800229, 0x00b10c40, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c60, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c80, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca0, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc0, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce0, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d00, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d20, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d40, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d60, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d80, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da0, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc0, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de0, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e00, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e20, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x23800229, 0x00b10c41, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c61, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c81, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca1, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc1, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce1, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d01, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d21, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d41, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d61, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d81, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da1, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc1, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de1, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e01, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e21, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x23800229, 0x00b10c42, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c62, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c82, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca2, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc2, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce2, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d02, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d22, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d42, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d62, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d82, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da2, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc2, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de2, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e02, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e22, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x23800229, 0x00b10c43, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c63, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c83, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca3, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc3, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce3, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d03, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d23, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d43, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d63, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d83, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da3, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc3, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de3, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e03, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e23, 0x00000000 }, + { 0x00802001, 0x26800021, 0x00b10380, 0x00000000 }, + { 0x00802001, 0x26c00021, 0x00b103c0, 0x00000000 }, + { 0x00802001, 0x27000021, 0x00b10400, 0x00000000 }, + { 0x00802001, 0x27400021, 0x00b10440, 0x00000000 }, + { 0x00802001, 0x27800021, 0x00b10480, 0x00000000 }, + { 0x00802001, 0x27c00021, 0x00b104c0, 0x00000000 }, + { 0x00802001, 0x28000021, 0x00b10500, 0x00000000 }, + { 0x00802001, 0x28400021, 0x00b10540, 0x00000000 }, + { 0x0020000c, 0x202e3dad, 0x00450e72, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450e60, 0x0045002e }, + { 0x01000005, 0x20000d3c, 0x00210e72, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000012b }, + { 0x01000005, 0x20000d3c, 0x00210e74, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000de }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000031 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a007 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x00800040, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x00800040, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x00800040, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x00800040, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x00800040, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x00800040, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x00800040, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x00800040, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x00800040, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x00800040, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x00800040, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x00800040, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x00800040, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x00800040, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x00800040, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c60 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c80 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca0 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc0 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce0 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d00 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d20 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d40 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d60 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d80 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da0 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc0 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de0 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e00 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e20 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f00 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000092 }, + { 0x00800040, 0x23804629, 0x00b10c41, 0x00b10c42 }, + { 0x00800040, 0x23a04629, 0x00b10c61, 0x00b10c62 }, + { 0x00800040, 0x23c04629, 0x00b10c81, 0x00b10c82 }, + { 0x00800040, 0x23e04629, 0x00b10ca1, 0x00b10ca2 }, + { 0x00800040, 0x24004629, 0x00b10cc1, 0x00b10cc2 }, + { 0x00800040, 0x24204629, 0x00b10ce1, 0x00b10ce2 }, + { 0x00800040, 0x24404629, 0x00b10d01, 0x00b10d02 }, + { 0x00800040, 0x24604629, 0x00b10d21, 0x00b10d22 }, + { 0x00800040, 0x24804629, 0x00b10d41, 0x00b10d42 }, + { 0x00800040, 0x24a04629, 0x00b10d61, 0x00b10d62 }, + { 0x00800040, 0x24c04629, 0x00b10d81, 0x00b10d82 }, + { 0x00800040, 0x24e04629, 0x00b10da1, 0x00b10da2 }, + { 0x00800040, 0x25004629, 0x00b10dc1, 0x00b10dc2 }, + { 0x00800040, 0x25204629, 0x00b10de1, 0x00b10de2 }, + { 0x00800040, 0x25404629, 0x00b10e01, 0x00b10e02 }, + { 0x00800040, 0x25604629, 0x00b10e21, 0x00b10e22 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c62 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c82 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca2 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc2 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce2 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d02 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d22 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d42 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d62 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d82 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da2 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc2 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de2 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e02 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e22 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f02 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 }, + { 0x00800040, 0x23804629, 0x00b10c42, 0x00b10c43 }, + { 0x00800040, 0x23a04629, 0x00b10c62, 0x00b10c63 }, + { 0x00800040, 0x23c04629, 0x00b10c82, 0x00b10c83 }, + { 0x00800040, 0x23e04629, 0x00b10ca2, 0x00b10ca3 }, + { 0x00800040, 0x24004629, 0x00b10cc2, 0x00b10cc3 }, + { 0x00800040, 0x24204629, 0x00b10ce2, 0x00b10ce3 }, + { 0x00800040, 0x24404629, 0x00b10d02, 0x00b10d03 }, + { 0x00800040, 0x24604629, 0x00b10d22, 0x00b10d23 }, + { 0x00800040, 0x24804629, 0x00b10d42, 0x00b10d43 }, + { 0x00800040, 0x24a04629, 0x00b10d62, 0x00b10d63 }, + { 0x00800040, 0x24c04629, 0x00b10d82, 0x00b10d83 }, + { 0x00800040, 0x24e04629, 0x00b10da2, 0x00b10da3 }, + { 0x00800040, 0x25004629, 0x00b10dc2, 0x00b10dc3 }, + { 0x00800040, 0x25204629, 0x00b10de2, 0x00b10de3 }, + { 0x00800040, 0x25404629, 0x00b10e02, 0x00b10e03 }, + { 0x00800040, 0x25604629, 0x00b10e22, 0x00b10e23 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c62 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c82 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca2 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc2 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce2 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d02 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d22 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d42 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d62 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d82 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da2 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc2 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de2 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e02 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e22 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f02 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c63 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c83 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca3 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc3 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce3 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d03 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d23 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d43 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d63 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d83 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da3 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc3 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de3 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e03 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e23 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f03 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00800040, 0x23804629, 0x00b10c43, 0x00b10c44 }, + { 0x00800040, 0x23a04629, 0x00b10c63, 0x00b10c64 }, + { 0x00800040, 0x23c04629, 0x00b10c83, 0x00b10c84 }, + { 0x00800040, 0x23e04629, 0x00b10ca3, 0x00b10ca4 }, + { 0x00800040, 0x24004629, 0x00b10cc3, 0x00b10cc4 }, + { 0x00800040, 0x24204629, 0x00b10ce3, 0x00b10ce4 }, + { 0x00800040, 0x24404629, 0x00b10d03, 0x00b10d04 }, + { 0x00800040, 0x24604629, 0x00b10d23, 0x00b10d24 }, + { 0x00800040, 0x24804629, 0x00b10d43, 0x00b10d44 }, + { 0x00800040, 0x24a04629, 0x00b10d63, 0x00b10d64 }, + { 0x00800040, 0x24c04629, 0x00b10d83, 0x00b10d84 }, + { 0x00800040, 0x24e04629, 0x00b10da3, 0x00b10da4 }, + { 0x00800040, 0x25004629, 0x00b10dc3, 0x00b10dc4 }, + { 0x00800040, 0x25204629, 0x00b10de3, 0x00b10de4 }, + { 0x00800040, 0x25404629, 0x00b10e03, 0x00b10e04 }, + { 0x00800040, 0x25604629, 0x00b10e23, 0x00b10e24 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c63 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c83 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca3 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc3 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce3 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d03 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d23 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d43 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d63 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d83 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da3 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc3 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de3 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e03 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e23 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f03 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c64 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c84 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca4 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc4 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce4 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d04 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d24 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d44 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d64 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d84 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da4 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc4 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de4 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e04 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e24 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f04 }, + { 0x80800008, 0x23802d29, 0x00b10380, 0x00020002 }, + { 0x80800008, 0x23a02d29, 0x00b103a0, 0x00020002 }, + { 0x80800008, 0x23c02d29, 0x00b103c0, 0x00020002 }, + { 0x80800008, 0x23e02d29, 0x00b103e0, 0x00020002 }, + { 0x80800008, 0x24002d29, 0x00b10400, 0x00020002 }, + { 0x80800008, 0x24202d29, 0x00b10420, 0x00020002 }, + { 0x80800008, 0x24402d29, 0x00b10440, 0x00020002 }, + { 0x80800008, 0x24602d29, 0x00b10460, 0x00020002 }, + { 0x80800008, 0x24802d29, 0x00b10480, 0x00020002 }, + { 0x80800008, 0x24a02d29, 0x00b104a0, 0x00020002 }, + { 0x80800008, 0x24c02d29, 0x00b104c0, 0x00020002 }, + { 0x80800008, 0x24e02d29, 0x00b104e0, 0x00020002 }, + { 0x80800008, 0x25002d29, 0x00b10500, 0x00020002 }, + { 0x80800008, 0x25202d29, 0x00b10520, 0x00020002 }, + { 0x80800008, 0x25402d29, 0x00b10540, 0x00020002 }, + { 0x80800008, 0x25602d29, 0x00b10560, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x000000e5 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20581c21, 0x00210058, 0x00000011 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x80800042, 0x23804629, 0x00b10c41, 0x00b10c42 }, + { 0x80800042, 0x23a04629, 0x00b10c61, 0x00b10c62 }, + { 0x80800042, 0x23c04629, 0x00b10c81, 0x00b10c82 }, + { 0x80800042, 0x23e04629, 0x00b10ca1, 0x00b10ca2 }, + { 0x80800042, 0x24004629, 0x00b10cc1, 0x00b10cc2 }, + { 0x80800042, 0x24204629, 0x00b10ce1, 0x00b10ce2 }, + { 0x80800042, 0x24404629, 0x00b10d01, 0x00b10d02 }, + { 0x80800042, 0x24604629, 0x00b10d21, 0x00b10d22 }, + { 0x80800042, 0x24804629, 0x00b10d41, 0x00b10d42 }, + { 0x80800042, 0x24a04629, 0x00b10d61, 0x00b10d62 }, + { 0x80800042, 0x24c04629, 0x00b10d81, 0x00b10d82 }, + { 0x80800042, 0x24e04629, 0x00b10da1, 0x00b10da2 }, + { 0x80800042, 0x25004629, 0x00b10dc1, 0x00b10dc2 }, + { 0x80800042, 0x25204629, 0x00b10de1, 0x00b10de2 }, + { 0x80800042, 0x25404629, 0x00b10e01, 0x00b10e02 }, + { 0x80800042, 0x25604629, 0x00b10e21, 0x00b10e22 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x80800042, 0x23804629, 0x00b10c42, 0x00b10c43 }, + { 0x80800042, 0x23a04629, 0x00b10c62, 0x00b10c63 }, + { 0x80800042, 0x23c04629, 0x00b10c82, 0x00b10c83 }, + { 0x80800042, 0x23e04629, 0x00b10ca2, 0x00b10ca3 }, + { 0x80800042, 0x24004629, 0x00b10cc2, 0x00b10cc3 }, + { 0x80800042, 0x24204629, 0x00b10ce2, 0x00b10ce3 }, + { 0x80800042, 0x24404629, 0x00b10d02, 0x00b10d03 }, + { 0x80800042, 0x24604629, 0x00b10d22, 0x00b10d23 }, + { 0x80800042, 0x24804629, 0x00b10d42, 0x00b10d43 }, + { 0x80800042, 0x24a04629, 0x00b10d62, 0x00b10d63 }, + { 0x80800042, 0x24c04629, 0x00b10d82, 0x00b10d83 }, + { 0x80800042, 0x24e04629, 0x00b10da2, 0x00b10da3 }, + { 0x80800042, 0x25004629, 0x00b10dc2, 0x00b10dc3 }, + { 0x80800042, 0x25204629, 0x00b10de2, 0x00b10de3 }, + { 0x80800042, 0x25404629, 0x00b10e02, 0x00b10e03 }, + { 0x80800042, 0x25604629, 0x00b10e22, 0x00b10e23 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x80800042, 0x23804629, 0x00b10c43, 0x00b10c44 }, + { 0x80800042, 0x23a04629, 0x00b10c63, 0x00b10c64 }, + { 0x80800042, 0x23c04629, 0x00b10c83, 0x00b10c84 }, + { 0x80800042, 0x23e04629, 0x00b10ca3, 0x00b10ca4 }, + { 0x80800042, 0x24004629, 0x00b10cc3, 0x00b10cc4 }, + { 0x80800042, 0x24204629, 0x00b10ce3, 0x00b10ce4 }, + { 0x80800042, 0x24404629, 0x00b10d03, 0x00b10d04 }, + { 0x80800042, 0x24604629, 0x00b10d23, 0x00b10d24 }, + { 0x80800042, 0x24804629, 0x00b10d43, 0x00b10d44 }, + { 0x80800042, 0x24a04629, 0x00b10d63, 0x00b10d64 }, + { 0x80800042, 0x24c04629, 0x00b10d83, 0x00b10d84 }, + { 0x80800042, 0x24e04629, 0x00b10da3, 0x00b10da4 }, + { 0x80800042, 0x25004629, 0x00b10dc3, 0x00b10dc4 }, + { 0x80800042, 0x25204629, 0x00b10de3, 0x00b10de4 }, + { 0x80800042, 0x25404629, 0x00b10e03, 0x00b10e04 }, + { 0x80800042, 0x25604629, 0x00b10e23, 0x00b10e24 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x01000005, 0x20000d3c, 0x00210e74, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a007 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c60 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c80 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10ca0 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10cc0 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10ce0 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10d00 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d20 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d40 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d60 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d80 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10da0 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10dc0 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10de0 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10e00 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e20 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10f00 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x80800042, 0x23804629, 0x00b10c41, 0x00b10c61 }, + { 0x80800042, 0x23a04629, 0x00b10c61, 0x00b10c81 }, + { 0x80800042, 0x23c04629, 0x00b10c81, 0x00b10ca1 }, + { 0x80800042, 0x23e04629, 0x00b10ca1, 0x00b10cc1 }, + { 0x80800042, 0x24004629, 0x00b10cc1, 0x00b10ce1 }, + { 0x80800042, 0x24204629, 0x00b10ce1, 0x00b10d01 }, + { 0x80800042, 0x24404629, 0x00b10d01, 0x00b10d21 }, + { 0x80800042, 0x24604629, 0x00b10d21, 0x00b10d41 }, + { 0x80800042, 0x24804629, 0x00b10d41, 0x00b10d61 }, + { 0x80800042, 0x24a04629, 0x00b10d61, 0x00b10d81 }, + { 0x80800042, 0x24c04629, 0x00b10d81, 0x00b10da1 }, + { 0x80800042, 0x24e04629, 0x00b10da1, 0x00b10dc1 }, + { 0x80800042, 0x25004629, 0x00b10dc1, 0x00b10de1 }, + { 0x80800042, 0x25204629, 0x00b10de1, 0x00b10e01 }, + { 0x80800042, 0x25404629, 0x00b10e01, 0x00b10e21 }, + { 0x80800042, 0x25604629, 0x00b10e21, 0x00b10f01 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x80800042, 0x23804629, 0x00b10c42, 0x00b10c62 }, + { 0x80800042, 0x23a04629, 0x00b10c62, 0x00b10c82 }, + { 0x80800042, 0x23c04629, 0x00b10c82, 0x00b10ca2 }, + { 0x80800042, 0x23e04629, 0x00b10ca2, 0x00b10cc2 }, + { 0x80800042, 0x24004629, 0x00b10cc2, 0x00b10ce2 }, + { 0x80800042, 0x24204629, 0x00b10ce2, 0x00b10d02 }, + { 0x80800042, 0x24404629, 0x00b10d02, 0x00b10d22 }, + { 0x80800042, 0x24604629, 0x00b10d22, 0x00b10d42 }, + { 0x80800042, 0x24804629, 0x00b10d42, 0x00b10d62 }, + { 0x80800042, 0x24a04629, 0x00b10d62, 0x00b10d82 }, + { 0x80800042, 0x24c04629, 0x00b10d82, 0x00b10da2 }, + { 0x80800042, 0x24e04629, 0x00b10da2, 0x00b10dc2 }, + { 0x80800042, 0x25004629, 0x00b10dc2, 0x00b10de2 }, + { 0x80800042, 0x25204629, 0x00b10de2, 0x00b10e02 }, + { 0x80800042, 0x25404629, 0x00b10e02, 0x00b10e22 }, + { 0x80800042, 0x25604629, 0x00b10e22, 0x00b10f02 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x80800042, 0x23804629, 0x00b10c43, 0x00b10c63 }, + { 0x80800042, 0x23a04629, 0x00b10c63, 0x00b10c83 }, + { 0x80800042, 0x23c04629, 0x00b10c83, 0x00b10ca3 }, + { 0x80800042, 0x23e04629, 0x00b10ca3, 0x00b10cc3 }, + { 0x80800042, 0x24004629, 0x00b10cc3, 0x00b10ce3 }, + { 0x80800042, 0x24204629, 0x00b10ce3, 0x00b10d03 }, + { 0x80800042, 0x24404629, 0x00b10d03, 0x00b10d23 }, + { 0x80800042, 0x24604629, 0x00b10d23, 0x00b10d43 }, + { 0x80800042, 0x24804629, 0x00b10d43, 0x00b10d63 }, + { 0x80800042, 0x24a04629, 0x00b10d63, 0x00b10d83 }, + { 0x80800042, 0x24c04629, 0x00b10d83, 0x00b10da3 }, + { 0x80800042, 0x24e04629, 0x00b10da3, 0x00b10dc3 }, + { 0x80800042, 0x25004629, 0x00b10dc3, 0x00b10de3 }, + { 0x80800042, 0x25204629, 0x00b10de3, 0x00b10e03 }, + { 0x80800042, 0x25404629, 0x00b10e03, 0x00b10e23 }, + { 0x80800042, 0x25604629, 0x00b10e23, 0x00b10f03 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x23800229, 0x00b10c40, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c60, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c80, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca0, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc0, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce0, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d00, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d20, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d40, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d60, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d80, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da0, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc0, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de0, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e00, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e20, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x23800229, 0x00b10c41, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c61, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c81, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca1, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc1, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce1, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d01, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d21, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d41, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d61, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d81, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da1, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc1, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de1, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e01, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e21, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x23800229, 0x00b10c42, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c62, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c82, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca2, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc2, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce2, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d02, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d22, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d42, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d62, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d82, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da2, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc2, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de2, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e02, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e22, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x23800229, 0x00b10c43, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c63, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c83, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca3, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc3, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce3, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d03, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d23, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d43, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d63, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d83, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da3, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc3, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de3, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e03, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e23, 0x00000000 }, + { 0x80800042, 0x23802529, 0x00b10380, 0x00b10680 }, + { 0x80800042, 0x23a02529, 0x00b103a0, 0x00b106a0 }, + { 0x80800042, 0x23c02529, 0x00b103c0, 0x00b106c0 }, + { 0x80800042, 0x23e02529, 0x00b103e0, 0x00b106e0 }, + { 0x80800042, 0x24002529, 0x00b10400, 0x00b10700 }, + { 0x80800042, 0x24202529, 0x00b10420, 0x00b10720 }, + { 0x80800042, 0x24402529, 0x00b10440, 0x00b10740 }, + { 0x80800042, 0x24602529, 0x00b10460, 0x00b10760 }, + { 0x80800042, 0x24802529, 0x00b10480, 0x00b10780 }, + { 0x80800042, 0x24a02529, 0x00b104a0, 0x00b107a0 }, + { 0x80800042, 0x24c02529, 0x00b104c0, 0x00b107c0 }, + { 0x80800042, 0x24e02529, 0x00b104e0, 0x00b107e0 }, + { 0x80800042, 0x25002529, 0x00b10500, 0x00b10800 }, + { 0x80800042, 0x25202529, 0x00b10520, 0x00b10820 }, + { 0x80800042, 0x25402529, 0x00b10540, 0x00b10840 }, + { 0x80800042, 0x25602529, 0x00b10560, 0x00b10860 }, + { 0x00200008, 0x20200c21, 0x00450e60, 0x00000001 }, + { 0x0020000c, 0x2e6e3dad, 0x00450e6e, 0x00010001 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450020, 0x0045002e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x2ac01d29, 0x008d0040, 0x0414a005 }, + { 0x00800031, 0x2b401d29, 0x008d0040, 0x0414a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x25800229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b40, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x25800229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b41, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x25800229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b42, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x25800229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b43, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba3, 0x00000000 }, + { 0x00800001, 0x2f400231, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x2f500231, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x2f600231, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x2f700231, 0x00b205e0, 0x00000000 }, + { 0x00800001, 0x2f800231, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x2f900231, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x2fa00231, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x2fb00231, 0x00b20660, 0x00000000 }, + { 0x0020000c, 0x2e723dad, 0x00450e72, 0x00010001 }, + { 0x0020000c, 0x202e3dad, 0x00450e72, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450020, 0x0045002e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x2ac01d29, 0x008d0040, 0x0414a008 }, + { 0x00800031, 0x2b401d29, 0x008d0040, 0x0414a009 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x25800229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b40, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x25800229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b41, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x25800229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b42, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x25800229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b43, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba3, 0x00000000 }, + { 0x80800042, 0x25804529, 0x00b10580, 0x00b10f40 }, + { 0x80800042, 0x25a04529, 0x00b105a0, 0x00b10f50 }, + { 0x80800042, 0x25c04529, 0x00b105c0, 0x00b10f60 }, + { 0x80800042, 0x25e04529, 0x00b105e0, 0x00b10f70 }, + { 0x80800042, 0x26004529, 0x00b10600, 0x00b10f80 }, + { 0x80800042, 0x26204529, 0x00b10620, 0x00b10f90 }, + { 0x80800042, 0x26404529, 0x00b10640, 0x00b10fa0 }, + { 0x80800042, 0x26604529, 0x00b10660, 0x00b10fb0 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/frame_f_b_igd.g4a b/driver/xf86-video-intel/src/xvmc/frame_f_b_igd.g4a new file mode 100644 index 000000000..ca7952e89 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_f_b_igd.g4a @@ -0,0 +1,131 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + +/* shader for forward and backward predict mc +*/ +/* (x', y') = (x, y) + (motion_vector1.x >> 1, motion_vector1.y >> 1) +/* (x'', y'') = (x, y) + (motion_vector2.x >> 1, motion_vector2.y >> 1) +/* f(x, y) = (motion_forward(x`, y`) + motion_backward(x'', y'') + 1) / 2 */ + +//Save payload +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; +include(`block_clear.g4i') + +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (1) g1.8<1>UD 0x0070007UD {align1}; +mov (8) g2.0<1>UD g1.0<8,8,1>UD {align1}; +/* Y */ +//Forward +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g115.0<2,2,1>UD g1.14<2,2,1>W {align1}; +define(`input_surface', `4') +define(`mv1', `g115.14') +define(`mv2', `g115.16') +include(`motion_frame_y_igd.g4i') +mov (16) g52.0<1>UD g28.0<16,16,1>UD {align1 compr}; +mov (16) g54.0<1>UD g30.0<16,16,1>UD {align1 compr}; +mov (16) g56.0<1>UD g32.0<16,16,1>UD {align1 compr}; +mov (16) g58.0<1>UD g34.0<16,16,1>UD {align1 compr}; +mov (16) g60.0<1>UD g36.0<16,16,1>UD {align1 compr}; +mov (16) g62.0<1>UD g38.0<16,16,1>UD {align1 compr}; +mov (16) g64.0<1>UD g40.0<16,16,1>UD {align1 compr}; +mov (16) g66.0<1>UD g42.0<16,16,1>UD {align1 compr}; +//Backward +asr (2) g1.14<1>W g115.18<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g115.0<2,2,1>UD g1.14<2,2,1>W {align1}; +define(`input_surface', `7') +define(`mv1', `g115.18') +define(`mv2', `g115.20') +include(`motion_frame_y_igd.g4i') + +//Average +avg.sat (16) g28.0<1>UW g28.0<16,16,1>UW g52.0<16,16,1>UW {align1}; +avg.sat (16) g29.0<1>UW g29.0<16,16,1>UW g53.0<16,16,1>UW {align1}; +avg.sat (16) g30.0<1>UW g30.0<16,16,1>UW g54.0<16,16,1>UW {align1}; +avg.sat (16) g31.0<1>UW g31.0<16,16,1>UW g55.0<16,16,1>UW {align1}; +avg.sat (16) g32.0<1>UW g32.0<16,16,1>UW g56.0<16,16,1>UW {align1}; +avg.sat (16) g33.0<1>UW g33.0<16,16,1>UW g57.0<16,16,1>UW {align1}; +avg.sat (16) g34.0<1>UW g34.0<16,16,1>UW g58.0<16,16,1>UW {align1}; +avg.sat (16) g35.0<1>UW g35.0<16,16,1>UW g59.0<16,16,1>UW {align1}; +avg.sat (16) g36.0<1>UW g36.0<16,16,1>UW g60.0<16,16,1>UW {align1}; +avg.sat (16) g37.0<1>UW g37.0<16,16,1>UW g61.0<16,16,1>UW {align1}; +avg.sat (16) g38.0<1>UW g38.0<16,16,1>UW g62.0<16,16,1>UW {align1}; +avg.sat (16) g39.0<1>UW g39.0<16,16,1>UW g63.0<16,16,1>UW {align1}; +avg.sat (16) g40.0<1>UW g40.0<16,16,1>UW g64.0<16,16,1>UW {align1}; +avg.sat (16) g41.0<1>UW g41.0<16,16,1>UW g65.0<16,16,1>UW {align1}; +avg.sat (16) g42.0<1>UW g42.0<16,16,1>UW g66.0<16,16,1>UW {align1}; +avg.sat (16) g43.0<1>UW g43.0<16,16,1>UW g67.0<16,16,1>UW {align1}; + +/* UV */ +//Forward +shr (2) g1.0<1>UD g115.0<2,2,1>UD 1UD {align1}; +asr (2) g115.14<1>W g115.14<2,2,1>W 1W {align1}; +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g1.0<2,2,1>UD g1.14<2,2,1>W {align1}; + +define(`input_surface1', `5') +define(`input_surface2', `6') +define(`mv1', `g115.14') +define(`mv2', `g115.16') +mov (1) g2.8<1>UD 0x007000fUD {align1}; +include(`motion_frame_uv_igd.g4i') +mov (16) g122.0<1>UB g44.0<16,16,2>UB {align1}; +mov (16) g122.16<1>UB g45.0<16,16,2>UB {align1}; +mov (16) g123.0<1>UB g46.0<16,16,2>UB {align1}; +mov (16) g123.16<1>UB g47.0<16,16,2>UB {align1}; +mov (16) g124.0<1>UB g48.0<16,16,2>UB {align1}; +mov (16) g124.16<1>UB g49.0<16,16,2>UB {align1}; +mov (16) g125.0<1>UB g50.0<16,16,2>UB {align1}; +mov (16) g125.16<1>UB g51.0<16,16,2>UB {align1}; +//Backward +asr (2) g115.18<1>W g115.18<2,2,1>W 1W {align1}; +asr (2) g1.14<1>W g115.18<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g1.0<2,2,1>UD g1.14<2,2,1>W {align1}; +define(`input_surface1', `8') +define(`input_surface2', `9') +define(`mv1', `g115.18') +define(`mv2', `g115.20') +mov (1) g2.8<1>UD 0x007000fUD {align1}; +include(`motion_frame_uv_igd.g4i') + +//Average +avg.sat (16) g44.0<1>UW g44.0<16,16,1>UW g122.0<16,16,1>UB {align1}; +avg.sat (16) g45.0<1>UW g45.0<16,16,1>UW g122.16<16,16,1>UB {align1}; +avg.sat (16) g46.0<1>UW g46.0<16,16,1>UW g123.0<16,16,1>UB {align1}; +avg.sat (16) g47.0<1>UW g47.0<16,16,1>UW g123.16<16,16,1>UB {align1}; +avg.sat (16) g48.0<1>UW g48.0<16,16,1>UW g124.0<16,16,1>UB {align1}; +avg.sat (16) g49.0<1>UW g49.0<16,16,1>UW g124.16<16,16,1>UB {align1}; +avg.sat (16) g50.0<1>UW g50.0<16,16,1>UW g125.0<16,16,1>UB {align1}; +avg.sat (16) g51.0<1>UW g51.0<16,16,1>UW g125.16<16,16,1>UB {align1}; + +include(`addidct.g4i') + +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/frame_f_b_igd.g4b b/driver/xf86-video-intel/src/xvmc/frame_f_b_igd.g4b new file mode 100644 index 000000000..f838d7b4d --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_f_b_igd.g4b @@ -0,0 +1,573 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00600001, 0x20400021, 0x008d0020, 0x00000000 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450e60, 0x0045002e }, + { 0x01000005, 0x20000d3c, 0x00210e6e, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a004 }, + { 0x00800040, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x00800040, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x00800040, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x00800040, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x00800040, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x00800040, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x00800040, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x00800040, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x00800040, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x00800040, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x00800040, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x00800040, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x00800040, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x00800040, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x00800040, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x00800040, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c60 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c80 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca0 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc0 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce0 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d00 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d20 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d40 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d60 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d80 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da0 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc0 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de0 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e00 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e20 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f00 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x80800008, 0x23802d29, 0x00b10380, 0x00020002 }, + { 0x80800008, 0x23a02d29, 0x00b103a0, 0x00020002 }, + { 0x80800008, 0x23c02d29, 0x00b103c0, 0x00020002 }, + { 0x80800008, 0x23e02d29, 0x00b103e0, 0x00020002 }, + { 0x80800008, 0x24002d29, 0x00b10400, 0x00020002 }, + { 0x80800008, 0x24202d29, 0x00b10420, 0x00020002 }, + { 0x80800008, 0x24402d29, 0x00b10440, 0x00020002 }, + { 0x80800008, 0x24602d29, 0x00b10460, 0x00020002 }, + { 0x80800008, 0x24802d29, 0x00b10480, 0x00020002 }, + { 0x80800008, 0x24a02d29, 0x00b104a0, 0x00020002 }, + { 0x80800008, 0x24c02d29, 0x00b104c0, 0x00020002 }, + { 0x80800008, 0x24e02d29, 0x00b104e0, 0x00020002 }, + { 0x80800008, 0x25002d29, 0x00b10500, 0x00020002 }, + { 0x80800008, 0x25202d29, 0x00b10520, 0x00020002 }, + { 0x80800008, 0x25402d29, 0x00b10540, 0x00020002 }, + { 0x80800008, 0x25602d29, 0x00b10560, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a004 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c60 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c80 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10ca0 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10cc0 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10ce0 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10d00 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d20 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d40 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d60 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d80 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10da0 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10dc0 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10de0 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10e00 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e20 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10f00 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00800001, 0x23800229, 0x00b10c40, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c60, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c80, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca0, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc0, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce0, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d00, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d20, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d40, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d60, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d80, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da0, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc0, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de0, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e00, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e20, 0x00000000 }, + { 0x00802001, 0x26800021, 0x00b10380, 0x00000000 }, + { 0x00802001, 0x26c00021, 0x00b103c0, 0x00000000 }, + { 0x00802001, 0x27000021, 0x00b10400, 0x00000000 }, + { 0x00802001, 0x27400021, 0x00b10440, 0x00000000 }, + { 0x00802001, 0x27800021, 0x00b10480, 0x00000000 }, + { 0x00802001, 0x27c00021, 0x00b104c0, 0x00000000 }, + { 0x00802001, 0x28000021, 0x00b10500, 0x00000000 }, + { 0x00802001, 0x28400021, 0x00b10540, 0x00000000 }, + { 0x0020000c, 0x202e3dad, 0x00450e72, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450e60, 0x0045002e }, + { 0x01000005, 0x20000d3c, 0x00210e72, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f }, + { 0x01000005, 0x20000d3c, 0x00210e74, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a007 }, + { 0x00800040, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x00800040, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x00800040, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x00800040, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x00800040, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x00800040, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x00800040, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x00800040, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x00800040, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x00800040, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x00800040, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x00800040, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x00800040, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x00800040, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x00800040, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x00800040, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c60 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c80 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca0 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc0 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce0 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d00 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d20 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d40 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d60 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d80 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da0 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc0 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de0 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e00 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e20 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f00 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x80800008, 0x23802d29, 0x00b10380, 0x00020002 }, + { 0x80800008, 0x23a02d29, 0x00b103a0, 0x00020002 }, + { 0x80800008, 0x23c02d29, 0x00b103c0, 0x00020002 }, + { 0x80800008, 0x23e02d29, 0x00b103e0, 0x00020002 }, + { 0x80800008, 0x24002d29, 0x00b10400, 0x00020002 }, + { 0x80800008, 0x24202d29, 0x00b10420, 0x00020002 }, + { 0x80800008, 0x24402d29, 0x00b10440, 0x00020002 }, + { 0x80800008, 0x24602d29, 0x00b10460, 0x00020002 }, + { 0x80800008, 0x24802d29, 0x00b10480, 0x00020002 }, + { 0x80800008, 0x24a02d29, 0x00b104a0, 0x00020002 }, + { 0x80800008, 0x24c02d29, 0x00b104c0, 0x00020002 }, + { 0x80800008, 0x24e02d29, 0x00b104e0, 0x00020002 }, + { 0x80800008, 0x25002d29, 0x00b10500, 0x00020002 }, + { 0x80800008, 0x25202d29, 0x00b10520, 0x00020002 }, + { 0x80800008, 0x25402d29, 0x00b10540, 0x00020002 }, + { 0x80800008, 0x25602d29, 0x00b10560, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e }, + { 0x01000005, 0x20000d3c, 0x00210e74, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a007 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c60 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c80 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10ca0 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10cc0 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10ce0 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10d00 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d20 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d40 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d60 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d80 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10da0 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10dc0 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10de0 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10e00 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e20 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10f00 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a007 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a007 }, + { 0x00800001, 0x23800229, 0x00b10c40, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c60, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c80, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca0, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc0, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce0, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d00, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d20, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d40, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d60, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d80, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da0, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc0, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de0, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e00, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e20, 0x00000000 }, + { 0x80800042, 0x23802529, 0x00b10380, 0x00b10680 }, + { 0x80800042, 0x23a02529, 0x00b103a0, 0x00b106a0 }, + { 0x80800042, 0x23c02529, 0x00b103c0, 0x00b106c0 }, + { 0x80800042, 0x23e02529, 0x00b103e0, 0x00b106e0 }, + { 0x80800042, 0x24002529, 0x00b10400, 0x00b10700 }, + { 0x80800042, 0x24202529, 0x00b10420, 0x00b10720 }, + { 0x80800042, 0x24402529, 0x00b10440, 0x00b10740 }, + { 0x80800042, 0x24602529, 0x00b10460, 0x00b10760 }, + { 0x80800042, 0x24802529, 0x00b10480, 0x00b10780 }, + { 0x80800042, 0x24a02529, 0x00b104a0, 0x00b107a0 }, + { 0x80800042, 0x24c02529, 0x00b104c0, 0x00b107c0 }, + { 0x80800042, 0x24e02529, 0x00b104e0, 0x00b107e0 }, + { 0x80800042, 0x25002529, 0x00b10500, 0x00b10800 }, + { 0x80800042, 0x25202529, 0x00b10520, 0x00b10820 }, + { 0x80800042, 0x25402529, 0x00b10540, 0x00b10840 }, + { 0x80800042, 0x25602529, 0x00b10560, 0x00b10860 }, + { 0x00200008, 0x20200c21, 0x00450e60, 0x00000001 }, + { 0x0020000c, 0x2e6e3dad, 0x00450e6e, 0x00010001 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450020, 0x0045002e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x008d0040, 0x0414a005 }, + { 0x00800031, 0x2b401d29, 0x008d0040, 0x0414a006 }, + { 0x00800001, 0x25800229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b40, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba0, 0x00000000 }, + { 0x00800001, 0x2f400231, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x2f500231, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x2f600231, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x2f700231, 0x00b205e0, 0x00000000 }, + { 0x00800001, 0x2f800231, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x2f900231, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x2fa00231, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x2fb00231, 0x00b20660, 0x00000000 }, + { 0x0020000c, 0x2e723dad, 0x00450e72, 0x00010001 }, + { 0x0020000c, 0x202e3dad, 0x00450e72, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450020, 0x0045002e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x008d0040, 0x0414a008 }, + { 0x00800031, 0x2b401d29, 0x008d0040, 0x0414a009 }, + { 0x00800001, 0x25800229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b40, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba0, 0x00000000 }, + { 0x80800042, 0x25804529, 0x00b10580, 0x00b10f40 }, + { 0x80800042, 0x25a04529, 0x00b105a0, 0x00b10f50 }, + { 0x80800042, 0x25c04529, 0x00b105c0, 0x00b10f60 }, + { 0x80800042, 0x25e04529, 0x00b105e0, 0x00b10f70 }, + { 0x80800042, 0x26004529, 0x00b10600, 0x00b10f80 }, + { 0x80800042, 0x26204529, 0x00b10620, 0x00b10f90 }, + { 0x80800042, 0x26404529, 0x00b10640, 0x00b10fa0 }, + { 0x80800042, 0x26604529, 0x00b10660, 0x00b10fb0 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/frame_forward.g4a b/driver/xf86-video-intel/src/xvmc/frame_forward.g4a new file mode 100644 index 000000000..925d568eb --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_forward.g4a @@ -0,0 +1,65 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + +/* shader for backward predict mc +*/ + +/* save payload */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') + +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (1) g1.8<1>UD 0x0070007UD {align1}; +define(`input_surface', `4') +define(`mv1', `g115.14') +define(`mv2', `g115.16') +/* Y */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g115.0<2,2,1>UD g1.14<2,2,1>W {align1}; +include(`motion_frame_y.g4i') +/* motion_vector = motion_vector >> 1 */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +/* U */ +shr (2) g1.0<1>UD g115.0<2,2,1>UD 1UD {align1}; +asr (2) g115.14<1>W g115.14<2,2,1>W 1W {align1}; +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g1.0<2,2,1>UD g1.14<2,2,1>W {align1}; +define(`input_surface1', `5') +define(`input_surface2', `6') +mov (1) g2.8<1>UD 0x007000fUD {align1}; +include(`motion_frame_uv.g4i') +/* V */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +include(`addidct.g4i') + +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/frame_forward.g4b b/driver/xf86-video-intel/src/xvmc/frame_forward.g4b new file mode 100644 index 000000000..efbd20c7b --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_forward.g4b @@ -0,0 +1,715 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450e60, 0x0045002e }, + { 0x01000005, 0x20000d3c, 0x00210e6e, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000012b }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x000000de }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000031 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a004 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800040, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x00800040, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x00800040, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x00800040, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x00800040, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x00800040, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x00800040, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x00800040, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x00800040, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x00800040, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x00800040, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x00800040, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x00800040, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x00800040, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x00800040, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x00800040, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c60 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c80 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca0 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc0 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce0 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d00 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d20 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d40 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d60 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d80 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da0 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc0 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de0 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e00 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e20 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f00 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000092 }, + { 0x00800040, 0x23804629, 0x00b10c41, 0x00b10c42 }, + { 0x00800040, 0x23a04629, 0x00b10c61, 0x00b10c62 }, + { 0x00800040, 0x23c04629, 0x00b10c81, 0x00b10c82 }, + { 0x00800040, 0x23e04629, 0x00b10ca1, 0x00b10ca2 }, + { 0x00800040, 0x24004629, 0x00b10cc1, 0x00b10cc2 }, + { 0x00800040, 0x24204629, 0x00b10ce1, 0x00b10ce2 }, + { 0x00800040, 0x24404629, 0x00b10d01, 0x00b10d02 }, + { 0x00800040, 0x24604629, 0x00b10d21, 0x00b10d22 }, + { 0x00800040, 0x24804629, 0x00b10d41, 0x00b10d42 }, + { 0x00800040, 0x24a04629, 0x00b10d61, 0x00b10d62 }, + { 0x00800040, 0x24c04629, 0x00b10d81, 0x00b10d82 }, + { 0x00800040, 0x24e04629, 0x00b10da1, 0x00b10da2 }, + { 0x00800040, 0x25004629, 0x00b10dc1, 0x00b10dc2 }, + { 0x00800040, 0x25204629, 0x00b10de1, 0x00b10de2 }, + { 0x00800040, 0x25404629, 0x00b10e01, 0x00b10e02 }, + { 0x00800040, 0x25604629, 0x00b10e21, 0x00b10e22 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c62 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c82 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca2 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc2 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce2 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d02 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d22 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d42 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d62 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d82 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da2 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc2 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de2 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e02 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e22 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f02 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000061 }, + { 0x00800040, 0x23804629, 0x00b10c42, 0x00b10c43 }, + { 0x00800040, 0x23a04629, 0x00b10c62, 0x00b10c63 }, + { 0x00800040, 0x23c04629, 0x00b10c82, 0x00b10c83 }, + { 0x00800040, 0x23e04629, 0x00b10ca2, 0x00b10ca3 }, + { 0x00800040, 0x24004629, 0x00b10cc2, 0x00b10cc3 }, + { 0x00800040, 0x24204629, 0x00b10ce2, 0x00b10ce3 }, + { 0x00800040, 0x24404629, 0x00b10d02, 0x00b10d03 }, + { 0x00800040, 0x24604629, 0x00b10d22, 0x00b10d23 }, + { 0x00800040, 0x24804629, 0x00b10d42, 0x00b10d43 }, + { 0x00800040, 0x24a04629, 0x00b10d62, 0x00b10d63 }, + { 0x00800040, 0x24c04629, 0x00b10d82, 0x00b10d83 }, + { 0x00800040, 0x24e04629, 0x00b10da2, 0x00b10da3 }, + { 0x00800040, 0x25004629, 0x00b10dc2, 0x00b10dc3 }, + { 0x00800040, 0x25204629, 0x00b10de2, 0x00b10de3 }, + { 0x00800040, 0x25404629, 0x00b10e02, 0x00b10e03 }, + { 0x00800040, 0x25604629, 0x00b10e22, 0x00b10e23 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c62 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c82 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca2 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc2 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce2 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d02 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d22 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d42 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d62 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d82 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da2 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc2 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de2 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e02 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e22 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f02 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c63 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c83 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca3 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc3 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce3 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d03 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d23 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d43 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d63 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d83 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da3 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc3 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de3 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e03 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e23 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f03 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00800040, 0x23804629, 0x00b10c43, 0x00b10c44 }, + { 0x00800040, 0x23a04629, 0x00b10c63, 0x00b10c64 }, + { 0x00800040, 0x23c04629, 0x00b10c83, 0x00b10c84 }, + { 0x00800040, 0x23e04629, 0x00b10ca3, 0x00b10ca4 }, + { 0x00800040, 0x24004629, 0x00b10cc3, 0x00b10cc4 }, + { 0x00800040, 0x24204629, 0x00b10ce3, 0x00b10ce4 }, + { 0x00800040, 0x24404629, 0x00b10d03, 0x00b10d04 }, + { 0x00800040, 0x24604629, 0x00b10d23, 0x00b10d24 }, + { 0x00800040, 0x24804629, 0x00b10d43, 0x00b10d44 }, + { 0x00800040, 0x24a04629, 0x00b10d63, 0x00b10d64 }, + { 0x00800040, 0x24c04629, 0x00b10d83, 0x00b10d84 }, + { 0x00800040, 0x24e04629, 0x00b10da3, 0x00b10da4 }, + { 0x00800040, 0x25004629, 0x00b10dc3, 0x00b10dc4 }, + { 0x00800040, 0x25204629, 0x00b10de3, 0x00b10de4 }, + { 0x00800040, 0x25404629, 0x00b10e03, 0x00b10e04 }, + { 0x00800040, 0x25604629, 0x00b10e23, 0x00b10e24 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c63 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c83 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca3 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc3 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce3 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d03 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d23 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d43 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d63 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d83 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da3 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc3 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de3 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e03 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e23 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f03 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c64 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c84 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca4 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc4 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce4 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d04 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d24 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d44 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d64 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d84 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da4 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc4 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de4 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e04 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e24 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f04 }, + { 0x80800008, 0x23802d29, 0x00b10380, 0x00020002 }, + { 0x80800008, 0x23a02d29, 0x00b103a0, 0x00020002 }, + { 0x80800008, 0x23c02d29, 0x00b103c0, 0x00020002 }, + { 0x80800008, 0x23e02d29, 0x00b103e0, 0x00020002 }, + { 0x80800008, 0x24002d29, 0x00b10400, 0x00020002 }, + { 0x80800008, 0x24202d29, 0x00b10420, 0x00020002 }, + { 0x80800008, 0x24402d29, 0x00b10440, 0x00020002 }, + { 0x80800008, 0x24602d29, 0x00b10460, 0x00020002 }, + { 0x80800008, 0x24802d29, 0x00b10480, 0x00020002 }, + { 0x80800008, 0x24a02d29, 0x00b104a0, 0x00020002 }, + { 0x80800008, 0x24c02d29, 0x00b104c0, 0x00020002 }, + { 0x80800008, 0x24e02d29, 0x00b104e0, 0x00020002 }, + { 0x80800008, 0x25002d29, 0x00b10500, 0x00020002 }, + { 0x80800008, 0x25202d29, 0x00b10520, 0x00020002 }, + { 0x80800008, 0x25402d29, 0x00b10540, 0x00020002 }, + { 0x80800008, 0x25602d29, 0x00b10560, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x000000e5 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20581c21, 0x00210058, 0x00000011 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x80800042, 0x23804629, 0x00b10c41, 0x00b10c42 }, + { 0x80800042, 0x23a04629, 0x00b10c61, 0x00b10c62 }, + { 0x80800042, 0x23c04629, 0x00b10c81, 0x00b10c82 }, + { 0x80800042, 0x23e04629, 0x00b10ca1, 0x00b10ca2 }, + { 0x80800042, 0x24004629, 0x00b10cc1, 0x00b10cc2 }, + { 0x80800042, 0x24204629, 0x00b10ce1, 0x00b10ce2 }, + { 0x80800042, 0x24404629, 0x00b10d01, 0x00b10d02 }, + { 0x80800042, 0x24604629, 0x00b10d21, 0x00b10d22 }, + { 0x80800042, 0x24804629, 0x00b10d41, 0x00b10d42 }, + { 0x80800042, 0x24a04629, 0x00b10d61, 0x00b10d62 }, + { 0x80800042, 0x24c04629, 0x00b10d81, 0x00b10d82 }, + { 0x80800042, 0x24e04629, 0x00b10da1, 0x00b10da2 }, + { 0x80800042, 0x25004629, 0x00b10dc1, 0x00b10dc2 }, + { 0x80800042, 0x25204629, 0x00b10de1, 0x00b10de2 }, + { 0x80800042, 0x25404629, 0x00b10e01, 0x00b10e02 }, + { 0x80800042, 0x25604629, 0x00b10e21, 0x00b10e22 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x80800042, 0x23804629, 0x00b10c42, 0x00b10c43 }, + { 0x80800042, 0x23a04629, 0x00b10c62, 0x00b10c63 }, + { 0x80800042, 0x23c04629, 0x00b10c82, 0x00b10c83 }, + { 0x80800042, 0x23e04629, 0x00b10ca2, 0x00b10ca3 }, + { 0x80800042, 0x24004629, 0x00b10cc2, 0x00b10cc3 }, + { 0x80800042, 0x24204629, 0x00b10ce2, 0x00b10ce3 }, + { 0x80800042, 0x24404629, 0x00b10d02, 0x00b10d03 }, + { 0x80800042, 0x24604629, 0x00b10d22, 0x00b10d23 }, + { 0x80800042, 0x24804629, 0x00b10d42, 0x00b10d43 }, + { 0x80800042, 0x24a04629, 0x00b10d62, 0x00b10d63 }, + { 0x80800042, 0x24c04629, 0x00b10d82, 0x00b10d83 }, + { 0x80800042, 0x24e04629, 0x00b10da2, 0x00b10da3 }, + { 0x80800042, 0x25004629, 0x00b10dc2, 0x00b10dc3 }, + { 0x80800042, 0x25204629, 0x00b10de2, 0x00b10de3 }, + { 0x80800042, 0x25404629, 0x00b10e02, 0x00b10e03 }, + { 0x80800042, 0x25604629, 0x00b10e22, 0x00b10e23 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x80800042, 0x23804629, 0x00b10c43, 0x00b10c44 }, + { 0x80800042, 0x23a04629, 0x00b10c63, 0x00b10c64 }, + { 0x80800042, 0x23c04629, 0x00b10c83, 0x00b10c84 }, + { 0x80800042, 0x23e04629, 0x00b10ca3, 0x00b10ca4 }, + { 0x80800042, 0x24004629, 0x00b10cc3, 0x00b10cc4 }, + { 0x80800042, 0x24204629, 0x00b10ce3, 0x00b10ce4 }, + { 0x80800042, 0x24404629, 0x00b10d03, 0x00b10d04 }, + { 0x80800042, 0x24604629, 0x00b10d23, 0x00b10d24 }, + { 0x80800042, 0x24804629, 0x00b10d43, 0x00b10d44 }, + { 0x80800042, 0x24a04629, 0x00b10d63, 0x00b10d64 }, + { 0x80800042, 0x24c04629, 0x00b10d83, 0x00b10d84 }, + { 0x80800042, 0x24e04629, 0x00b10da3, 0x00b10da4 }, + { 0x80800042, 0x25004629, 0x00b10dc3, 0x00b10dc4 }, + { 0x80800042, 0x25204629, 0x00b10de3, 0x00b10de4 }, + { 0x80800042, 0x25404629, 0x00b10e03, 0x00b10e04 }, + { 0x80800042, 0x25604629, 0x00b10e23, 0x00b10e24 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000009a }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000004e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a004 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c60 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c80 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10ca0 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10cc0 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10ce0 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10d00 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d20 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d40 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d60 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d80 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10da0 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10dc0 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10de0 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10e00 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e20 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10f00 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x80800042, 0x23804629, 0x00b10c41, 0x00b10c61 }, + { 0x80800042, 0x23a04629, 0x00b10c61, 0x00b10c81 }, + { 0x80800042, 0x23c04629, 0x00b10c81, 0x00b10ca1 }, + { 0x80800042, 0x23e04629, 0x00b10ca1, 0x00b10cc1 }, + { 0x80800042, 0x24004629, 0x00b10cc1, 0x00b10ce1 }, + { 0x80800042, 0x24204629, 0x00b10ce1, 0x00b10d01 }, + { 0x80800042, 0x24404629, 0x00b10d01, 0x00b10d21 }, + { 0x80800042, 0x24604629, 0x00b10d21, 0x00b10d41 }, + { 0x80800042, 0x24804629, 0x00b10d41, 0x00b10d61 }, + { 0x80800042, 0x24a04629, 0x00b10d61, 0x00b10d81 }, + { 0x80800042, 0x24c04629, 0x00b10d81, 0x00b10da1 }, + { 0x80800042, 0x24e04629, 0x00b10da1, 0x00b10dc1 }, + { 0x80800042, 0x25004629, 0x00b10dc1, 0x00b10de1 }, + { 0x80800042, 0x25204629, 0x00b10de1, 0x00b10e01 }, + { 0x80800042, 0x25404629, 0x00b10e01, 0x00b10e21 }, + { 0x80800042, 0x25604629, 0x00b10e21, 0x00b10f01 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x80800042, 0x23804629, 0x00b10c42, 0x00b10c62 }, + { 0x80800042, 0x23a04629, 0x00b10c62, 0x00b10c82 }, + { 0x80800042, 0x23c04629, 0x00b10c82, 0x00b10ca2 }, + { 0x80800042, 0x23e04629, 0x00b10ca2, 0x00b10cc2 }, + { 0x80800042, 0x24004629, 0x00b10cc2, 0x00b10ce2 }, + { 0x80800042, 0x24204629, 0x00b10ce2, 0x00b10d02 }, + { 0x80800042, 0x24404629, 0x00b10d02, 0x00b10d22 }, + { 0x80800042, 0x24604629, 0x00b10d22, 0x00b10d42 }, + { 0x80800042, 0x24804629, 0x00b10d42, 0x00b10d62 }, + { 0x80800042, 0x24a04629, 0x00b10d62, 0x00b10d82 }, + { 0x80800042, 0x24c04629, 0x00b10d82, 0x00b10da2 }, + { 0x80800042, 0x24e04629, 0x00b10da2, 0x00b10dc2 }, + { 0x80800042, 0x25004629, 0x00b10dc2, 0x00b10de2 }, + { 0x80800042, 0x25204629, 0x00b10de2, 0x00b10e02 }, + { 0x80800042, 0x25404629, 0x00b10e02, 0x00b10e22 }, + { 0x80800042, 0x25604629, 0x00b10e22, 0x00b10f02 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x80800042, 0x23804629, 0x00b10c43, 0x00b10c63 }, + { 0x80800042, 0x23a04629, 0x00b10c63, 0x00b10c83 }, + { 0x80800042, 0x23c04629, 0x00b10c83, 0x00b10ca3 }, + { 0x80800042, 0x23e04629, 0x00b10ca3, 0x00b10cc3 }, + { 0x80800042, 0x24004629, 0x00b10cc3, 0x00b10ce3 }, + { 0x80800042, 0x24204629, 0x00b10ce3, 0x00b10d03 }, + { 0x80800042, 0x24404629, 0x00b10d03, 0x00b10d23 }, + { 0x80800042, 0x24604629, 0x00b10d23, 0x00b10d43 }, + { 0x80800042, 0x24804629, 0x00b10d43, 0x00b10d63 }, + { 0x80800042, 0x24a04629, 0x00b10d63, 0x00b10d83 }, + { 0x80800042, 0x24c04629, 0x00b10d83, 0x00b10da3 }, + { 0x80800042, 0x24e04629, 0x00b10da3, 0x00b10dc3 }, + { 0x80800042, 0x25004629, 0x00b10dc3, 0x00b10de3 }, + { 0x80800042, 0x25204629, 0x00b10de3, 0x00b10e03 }, + { 0x80800042, 0x25404629, 0x00b10e03, 0x00b10e23 }, + { 0x80800042, 0x25604629, 0x00b10e23, 0x00b10f03 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000004a }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000011 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x23800229, 0x00b10c40, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c60, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c80, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca0, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc0, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce0, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d00, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d20, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d40, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d60, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d80, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da0, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc0, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de0, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e00, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e20, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000032 }, + { 0x00800001, 0x23800229, 0x00b10c41, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c61, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c81, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca1, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc1, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce1, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d01, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d21, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d41, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d61, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d81, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da1, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc1, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de1, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e01, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e21, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000021 }, + { 0x00800001, 0x23800229, 0x00b10c42, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c62, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c82, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca2, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc2, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce2, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d02, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d22, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d42, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d62, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d82, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da2, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc2, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de2, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e02, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e22, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x23800229, 0x00b10c43, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c63, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c83, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca3, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc3, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce3, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d03, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d23, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d43, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d63, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d83, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da3, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc3, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de3, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e03, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e23, 0x00000000 }, + { 0x00200008, 0x20200c21, 0x00450e60, 0x00000001 }, + { 0x0020000c, 0x2e6e3dad, 0x00450e6e, 0x00010001 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450020, 0x0045002e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00000005, 0x20580c21, 0x00210040, 0x00000003 }, + { 0x00800031, 0x2ac01d29, 0x008d0040, 0x0414a005 }, + { 0x00800031, 0x2b401d29, 0x008d0040, 0x0414a006 }, + { 0x00000041, 0x20580c21, 0x00210058, 0x00000009 }, + { 0x00000020, 0x34001400, 0x00001400, 0x00210058 }, + { 0x00800001, 0x25800229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b40, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba0, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000001a }, + { 0x00800001, 0x25800229, 0x00ad0ac1, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae1, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b01, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b21, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b41, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b61, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b81, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba1, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x25800229, 0x00ad0ac2, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae2, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b02, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b22, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b42, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b62, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b82, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba2, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00800001, 0x25800229, 0x00ad0ac3, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae3, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b03, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b23, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b43, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b63, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b83, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba3, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/frame_forward_igd.g4a b/driver/xf86-video-intel/src/xvmc/frame_forward_igd.g4a new file mode 100644 index 000000000..f4748074a --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_forward_igd.g4a @@ -0,0 +1,65 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + +/* shader for backward predict mc +*/ + +/* save payload */ +mov (8) g76.0<1>UD g1.0<8,8,1>UD {align1}; +//mov (8) g77.0<1>UD g2.0<8,8,1>UD {align1}; + +include(`block_clear.g4i') + +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; +mov (1) g1.8<1>UD 0x0070007UD {align1}; +define(`input_surface', `4') +define(`mv1', `g115.14') +define(`mv2', `g115.16') +/* Y */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g115.0<2,2,1>UD g1.14<2,2,1>W {align1}; +include(`motion_frame_y_igd.g4i') +/* motion_vector = motion_vector >> 1 */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +/* U */ +shr (2) g1.0<1>UD g115.0<2,2,1>UD 1UD {align1}; +asr (2) g115.14<1>W g115.14<2,2,1>W 1W {align1}; +asr (2) g1.14<1>W g115.14<2,2,1>W 1W {align1}; +add (2) g2.0<1>UD g1.0<2,2,1>UD g1.14<2,2,1>W {align1}; +define(`input_surface1', `5') +define(`input_surface2', `6') +mov (1) g2.8<1>UD 0x007000fUD {align1}; +include(`motion_frame_uv_igd.g4i') +/* V */ +/* (x', y') = (x, y) + (motion_vector.x >> 1, motion_vector.y >> 1) */ +include(`addidct.g4i') + +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/frame_forward_igd.g4b b/driver/xf86-video-intel/src/xvmc/frame_forward_igd.g4b new file mode 100644 index 000000000..9356180ea --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/frame_forward_igd.g4b @@ -0,0 +1,373 @@ + { 0x00600001, 0x29800021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210988, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x02000005, 0x20002d3c, 0x0021098c, 0x00200020 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00100010 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x20700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x20f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00080008 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21600169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21800169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21a00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21c00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21e00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22000169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22200169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22400169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00040004 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000008 }, + { 0x00600001, 0x21700169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21900169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21b00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21d00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x21f00169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22100169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22300169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x22500169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00020002 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22600169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22800169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22a00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x22c00169, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002d3c, 0x0021002c, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000004 }, + { 0x00800001, 0x22e00169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23000169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23200169, 0x00000000, 0x00000000 }, + { 0x00800001, 0x23400169, 0x00000000, 0x00000000 }, + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450e60, 0x0045002e }, + { 0x01000005, 0x20000d3c, 0x00210e6e, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x0000005f }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000048 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a004 }, + { 0x00800040, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x00800040, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x00800040, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x00800040, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x00800040, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x00800040, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x00800040, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x00800040, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x00800040, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x00800040, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x00800040, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x00800040, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x00800040, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x00800040, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x00800040, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x00800040, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c60 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c80 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca0 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc0 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce0 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d00 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d20 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d40 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d60 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d80 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da0 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc0 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de0 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e00 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e20 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f00 }, + { 0x00800040, 0x23804529, 0x00b10380, 0x00b10c61 }, + { 0x00800040, 0x23a04529, 0x00b103a0, 0x00b10c81 }, + { 0x00800040, 0x23c04529, 0x00b103c0, 0x00b10ca1 }, + { 0x00800040, 0x23e04529, 0x00b103e0, 0x00b10cc1 }, + { 0x00800040, 0x24004529, 0x00b10400, 0x00b10ce1 }, + { 0x00800040, 0x24204529, 0x00b10420, 0x00b10d01 }, + { 0x00800040, 0x24404529, 0x00b10440, 0x00b10d21 }, + { 0x00800040, 0x24604529, 0x00b10460, 0x00b10d41 }, + { 0x00800040, 0x24804529, 0x00b10480, 0x00b10d61 }, + { 0x00800040, 0x24a04529, 0x00b104a0, 0x00b10d81 }, + { 0x00800040, 0x24c04529, 0x00b104c0, 0x00b10da1 }, + { 0x00800040, 0x24e04529, 0x00b104e0, 0x00b10dc1 }, + { 0x00800040, 0x25004529, 0x00b10500, 0x00b10de1 }, + { 0x00800040, 0x25204529, 0x00b10520, 0x00b10e01 }, + { 0x00800040, 0x25404529, 0x00b10540, 0x00b10e21 }, + { 0x00800040, 0x25604529, 0x00b10560, 0x00b10f01 }, + { 0x80800008, 0x23802d29, 0x00b10380, 0x00020002 }, + { 0x80800008, 0x23a02d29, 0x00b103a0, 0x00020002 }, + { 0x80800008, 0x23c02d29, 0x00b103c0, 0x00020002 }, + { 0x80800008, 0x23e02d29, 0x00b103e0, 0x00020002 }, + { 0x80800008, 0x24002d29, 0x00b10400, 0x00020002 }, + { 0x80800008, 0x24202d29, 0x00b10420, 0x00020002 }, + { 0x80800008, 0x24402d29, 0x00b10440, 0x00020002 }, + { 0x80800008, 0x24602d29, 0x00b10460, 0x00020002 }, + { 0x80800008, 0x24802d29, 0x00b10480, 0x00020002 }, + { 0x80800008, 0x24a02d29, 0x00b104a0, 0x00020002 }, + { 0x80800008, 0x24c02d29, 0x00b104c0, 0x00020002 }, + { 0x80800008, 0x24e02d29, 0x00b104e0, 0x00020002 }, + { 0x80800008, 0x25002d29, 0x00b10500, 0x00020002 }, + { 0x80800008, 0x25202d29, 0x00b10520, 0x00020002 }, + { 0x80800008, 0x25402d29, 0x00b10540, 0x00020002 }, + { 0x80800008, 0x25602d29, 0x00b10560, 0x00020002 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000043 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c41 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c61 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10c81 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10ca1 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10cc1 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10ce1 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d01 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d21 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d41 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d61 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10d81 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10da1 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10dc1 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10de1 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e01 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10e21 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x0000002e }, + { 0x01000005, 0x20000d3c, 0x00210e70, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000018 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0000001f }, + { 0x00800031, 0x2f001d29, 0x008d0040, 0x0411a004 }, + { 0x80800042, 0x23804629, 0x00b10c40, 0x00b10c60 }, + { 0x80800042, 0x23a04629, 0x00b10c60, 0x00b10c80 }, + { 0x80800042, 0x23c04629, 0x00b10c80, 0x00b10ca0 }, + { 0x80800042, 0x23e04629, 0x00b10ca0, 0x00b10cc0 }, + { 0x80800042, 0x24004629, 0x00b10cc0, 0x00b10ce0 }, + { 0x80800042, 0x24204629, 0x00b10ce0, 0x00b10d00 }, + { 0x80800042, 0x24404629, 0x00b10d00, 0x00b10d20 }, + { 0x80800042, 0x24604629, 0x00b10d20, 0x00b10d40 }, + { 0x80800042, 0x24804629, 0x00b10d40, 0x00b10d60 }, + { 0x80800042, 0x24a04629, 0x00b10d60, 0x00b10d80 }, + { 0x80800042, 0x24c04629, 0x00b10d80, 0x00b10da0 }, + { 0x80800042, 0x24e04629, 0x00b10da0, 0x00b10dc0 }, + { 0x80800042, 0x25004629, 0x00b10dc0, 0x00b10de0 }, + { 0x80800042, 0x25204629, 0x00b10de0, 0x00b10e00 }, + { 0x80800042, 0x25404629, 0x00b10e00, 0x00b10e20 }, + { 0x80800042, 0x25604629, 0x00b10e20, 0x00b10f00 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000014 }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007001f }, + { 0x00800031, 0x2c401d29, 0x008d0040, 0x0418a004 }, + { 0x00000040, 0x20440c21, 0x00210044, 0x00000008 }, + { 0x00800031, 0x2d401d29, 0x008d0040, 0x0418a004 }, + { 0x00800001, 0x23800229, 0x00b10c40, 0x00000000 }, + { 0x00800001, 0x23a00229, 0x00b10c60, 0x00000000 }, + { 0x00800001, 0x23c00229, 0x00b10c80, 0x00000000 }, + { 0x00800001, 0x23e00229, 0x00b10ca0, 0x00000000 }, + { 0x00800001, 0x24000229, 0x00b10cc0, 0x00000000 }, + { 0x00800001, 0x24200229, 0x00b10ce0, 0x00000000 }, + { 0x00800001, 0x24400229, 0x00b10d00, 0x00000000 }, + { 0x00800001, 0x24600229, 0x00b10d20, 0x00000000 }, + { 0x00800001, 0x24800229, 0x00b10d40, 0x00000000 }, + { 0x00800001, 0x24a00229, 0x00b10d60, 0x00000000 }, + { 0x00800001, 0x24c00229, 0x00b10d80, 0x00000000 }, + { 0x00800001, 0x24e00229, 0x00b10da0, 0x00000000 }, + { 0x00800001, 0x25000229, 0x00b10dc0, 0x00000000 }, + { 0x00800001, 0x25200229, 0x00b10de0, 0x00000000 }, + { 0x00800001, 0x25400229, 0x00b10e00, 0x00000000 }, + { 0x00800001, 0x25600229, 0x00b10e20, 0x00000000 }, + { 0x00200008, 0x20200c21, 0x00450e60, 0x00000001 }, + { 0x0020000c, 0x2e6e3dad, 0x00450e6e, 0x00010001 }, + { 0x0020000c, 0x202e3dad, 0x00450e6e, 0x00010001 }, + { 0x00200040, 0x20403421, 0x00450020, 0x0045002e }, + { 0x00000001, 0x20480061, 0x00000000, 0x0007000f }, + { 0x00800031, 0x2ac01d29, 0x008d0040, 0x0414a005 }, + { 0x00800031, 0x2b401d29, 0x008d0040, 0x0414a006 }, + { 0x00800001, 0x25800229, 0x00ad0ac0, 0x00000000 }, + { 0x00800001, 0x25a00229, 0x00ad0ae0, 0x00000000 }, + { 0x00800001, 0x25c00229, 0x00ad0b00, 0x00000000 }, + { 0x00800001, 0x25e00229, 0x00ad0b20, 0x00000000 }, + { 0x00800001, 0x26000229, 0x00ad0b40, 0x00000000 }, + { 0x00800001, 0x26200229, 0x00ad0b60, 0x00000000 }, + { 0x00800001, 0x26400229, 0x00ad0b80, 0x00000000 }, + { 0x00800001, 0x26600229, 0x00ad0ba0, 0x00000000 }, + { 0x00600001, 0x20200021, 0x008d0980, 0x00000000 }, + { 0x00800001, 0x458101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45a101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45c101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x45e101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x460101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x462101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x464101f1, 0x00000000, 0x00000000 }, + { 0x00800001, 0x466101f1, 0x00000000, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10080, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b100a0, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b100c0, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100e0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b10100, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b10120, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b10140, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b10160, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b10180, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b101a0, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b101c0, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b101e0, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10200, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10220, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800040, 0x238045ad, 0x00b10060, 0x00b20380 }, + { 0x00800040, 0x23a045ad, 0x00b10160, 0x00b203a0 }, + { 0x00800040, 0x23c045ad, 0x00b10080, 0x00b203c0 }, + { 0x00800040, 0x23e045ad, 0x00b10180, 0x00b203e0 }, + { 0x00800040, 0x240045ad, 0x00b100a0, 0x00b20400 }, + { 0x00800040, 0x242045ad, 0x00b101a0, 0x00b20420 }, + { 0x00800040, 0x244045ad, 0x00b100c0, 0x00b20440 }, + { 0x00800040, 0x246045ad, 0x00b101c0, 0x00b20460 }, + { 0x00800040, 0x248045ad, 0x00b100e0, 0x00b20480 }, + { 0x00800040, 0x24a045ad, 0x00b101e0, 0x00b204a0 }, + { 0x00800040, 0x24c045ad, 0x00b10100, 0x00b204c0 }, + { 0x00800040, 0x24e045ad, 0x00b10200, 0x00b204e0 }, + { 0x00800040, 0x250045ad, 0x00b10120, 0x00b20500 }, + { 0x00800040, 0x252045ad, 0x00b10220, 0x00b20520 }, + { 0x00800040, 0x254045ad, 0x00b10140, 0x00b20540 }, + { 0x00800040, 0x256045ad, 0x00b10240, 0x00b20560 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x438001b1, 0x00b10380, 0x00000000 }, + { 0x80800001, 0x43a001b1, 0x00b103a0, 0x00000000 }, + { 0x80800001, 0x43c001b1, 0x00b103c0, 0x00000000 }, + { 0x80800001, 0x43e001b1, 0x00b103e0, 0x00000000 }, + { 0x80800001, 0x440001b1, 0x00b10400, 0x00000000 }, + { 0x80800001, 0x442001b1, 0x00b10420, 0x00000000 }, + { 0x80800001, 0x444001b1, 0x00b10440, 0x00000000 }, + { 0x80800001, 0x446001b1, 0x00b10460, 0x00000000 }, + { 0x80800001, 0x448001b1, 0x00b10480, 0x00000000 }, + { 0x80800001, 0x44a001b1, 0x00b104a0, 0x00000000 }, + { 0x80800001, 0x44c001b1, 0x00b104c0, 0x00000000 }, + { 0x80800001, 0x44e001b1, 0x00b104e0, 0x00000000 }, + { 0x80800001, 0x450001b1, 0x00b10500, 0x00000000 }, + { 0x80800001, 0x452001b1, 0x00b10520, 0x00000000 }, + { 0x80800001, 0x454001b1, 0x00b10540, 0x00000000 }, + { 0x80800001, 0x456001b1, 0x00b10560, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20380, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b203a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b203c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b203e0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b20400, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20420, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20440, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20460, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20480, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b204a0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b204c0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b204e0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20500, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20520, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20540, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20560, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450020, 0x00000001 }, + { 0x00800040, 0x258025a9, 0x00b10260, 0x00b10580 }, + { 0x00800040, 0x25a025a9, 0x00b10280, 0x00b105a0 }, + { 0x00800040, 0x25c025a9, 0x00b102a0, 0x00b105c0 }, + { 0x00800040, 0x25e025a9, 0x00b102c0, 0x00b105e0 }, + { 0x80800001, 0x45800131, 0x00b10580, 0x00000000 }, + { 0x80800001, 0x45a00131, 0x00b105a0, 0x00000000 }, + { 0x80800001, 0x45c00131, 0x00b105c0, 0x00000000 }, + { 0x80800001, 0x45e00131, 0x00b105e0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20580, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b205a0, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b205c0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b205e0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800040, 0x260025a9, 0x00b102e0, 0x00b10600 }, + { 0x00800040, 0x262025a9, 0x00b10300, 0x00b10620 }, + { 0x00800040, 0x264025a9, 0x00b10320, 0x00b10640 }, + { 0x00800040, 0x266025a9, 0x00b10340, 0x00b10660 }, + { 0x80800001, 0x46000131, 0x00b10600, 0x00000000 }, + { 0x80800001, 0x46200131, 0x00b10620, 0x00000000 }, + { 0x80800001, 0x46400131, 0x00b10640, 0x00000000 }, + { 0x80800001, 0x46600131, 0x00b10660, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20600, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20620, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20640, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20660, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/i965_xvmc.c b/driver/xf86-video-intel/src/xvmc/i965_xvmc.c new file mode 100644 index 000000000..31d689695 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/i965_xvmc.c @@ -0,0 +1,760 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * + */ +#include "i965_xvmc.h" +#include "i810_reg.h" +#include "brw_defines.h" +#include "brw_structs.h" +#include "intel_batchbuffer.h" +#include "i965_hwmc.h" +#define BATCH_STRUCT(x) intelBatchbufferData(&x, sizeof(x), 0) +#define URB_SIZE 256 /* XXX */ +enum interface { + INTRA_INTERFACE, /* non field intra */ + NULL_INTERFACE, /* fill with white, do nothing, for debug */ + FORWARD_INTERFACE, /* non field forward predict */ + BACKWARD_INTERFACE, /* non field backward predict */ + F_B_INTERFACE, /* non field forward and backward predict */ + FIELD_INTRA_INTERFACE, /* field intra */ + FIELD_FORWARD_INTERFACE, /* field forward predict */ + FIELD_BACKWARD_INTERFACE, /* field backward predict */ + FIELD_F_B_INTERFACE, /* field forward and backward predict */ + DUAL_PRIME_INTERFACE +}; + +static const uint32_t ipicture_kernel_static[][4] = { + #include "ipicture.g4b" +}; +static const uint32_t null_kernel_static[][4] = { + #include "null.g4b" +}; +static const uint32_t frame_forward_kernel_static[][4] = { + #include "frame_forward.g4b" +}; +static const uint32_t frame_backward_kernel_static[][4] = { + #include "frame_backward.g4b" +}; +static const uint32_t frame_f_b_kernel_static[][4] = { + #include "frame_f_b.g4b" +}; +static const uint32_t field_forward_kernel_static[][4] = { + #include "field_forward.g4b" +}; +static const uint32_t field_backward_kernel_static[][4] = { + #include "field_backward.g4b" +}; +static const uint32_t field_f_b_kernel_static[][4] = { + #include "field_f_b.g4b" +}; +static const uint32_t dual_prime_kernel_static[][4]= { + #include "dual_prime.g4b" +}; +static const uint32_t frame_forward_igd_kernel_static[][4] = { + #include "frame_forward_igd.g4b" +}; +static const uint32_t frame_backward_igd_kernel_static[][4] = { + #include "frame_backward_igd.g4b" +}; +static const uint32_t frame_f_b_igd_kernel_static[][4] = { + #include "frame_f_b_igd.g4b" +}; +static const uint32_t field_forward_igd_kernel_static[][4] = { + #include "field_forward_igd.g4b" +}; +static const uint32_t field_backward_igd_kernel_static[][4] = { + #include "field_backward_igd.g4b" +}; +static const uint32_t field_f_b_igd_kernel_static[][4] = { + #include "field_f_b_igd.g4b" +}; +static const uint32_t dual_prime_igd_kernel_static[][4]= { + #include "dual_prime_igd.g4b" +}; + +#define ALIGN(i,m) (((i) + (m) - 1) & ~((m) - 1)) + +#define VFE_GENERIC_MODE 0x0 +#define VFE_VLD_MODE 0x1 +#define VFE_IS_MODE 0x2 +#define VFE_AVC_MC_MODE 0x4 +#define VFE_AVC_IT_MODE 0x7 +#define VFE_VC1_IT_MODE 0x7 + +#define MAX_SURFACE_NUM 10 +#define DESCRIPTOR_NUM 12 + +struct media_state { + unsigned long state_base; + void *state_ptr; + unsigned int binding_table_entry_count; + unsigned long vfe_state_offset; + unsigned long interface_descriptor_offset[DESCRIPTOR_NUM]; + unsigned long ipicture_kernel_offset; + unsigned long frame_forward_kernel_offset; + unsigned long frame_backward_kernel_offset; + unsigned long frame_f_b_kernel_offset; + unsigned long ipicture_field_kernel_offset; + unsigned long field_forward_kernel_offset; + unsigned long field_backward_kernel_offset; + unsigned long field_f_b_kernel_offset; + unsigned long dual_prime_kernel_offset; + unsigned long null_kernel_offset; + unsigned long surface_offsets[MAX_SURFACE_NUM]; + unsigned long binding_table_offset; + unsigned int is_g4x:1; + unsigned int is_965_q:1; +}; +struct media_state media_state; + +static int map_buffer(struct drm_memory_block *mem) +{ + return (drmMap(xvmc_driver->fd, + mem->handle, mem->size, &mem->ptr)); +} + +static void unmap_buffer(struct drm_memory_block *mem) +{ + drmUnmap(mem->ptr, mem->size); +} + +static Status destroy_context(Display *display, XvMCContext *context) +{ + struct i965_xvmc_context *private_context; + private_context = context->privData; + unmap_buffer(&private_context->static_buffer); + unmap_buffer(&private_context->blocks); + + Xfree(private_context); + return Success; +} + +static Status create_surface(Display *display, + XvMCContext *context, XvMCSurface *surface, int priv_count, + CARD32 *priv_data) +{ + struct i965_xvmc_surface *priv_surface = + (struct i965_xvmc_surface *)priv_data; + if (map_buffer(&priv_surface->buffer)) + return BadAlloc; + surface->privData = priv_data; + return Success; +} + +static Status destroy_surface(Display *display, XvMCSurface *surface) +{ + struct i965_xvmc_surface *priv_surface = + surface->privData; + unmap_buffer(&priv_surface->buffer); + return Success; +} + +static void flush() +{ + struct brw_mi_flush flush; + memset(&flush, 0, sizeof(flush)); + flush.opcode = CMD_MI_FLUSH; + flush.flags = (1<<1); + BATCH_STRUCT(flush); +} + +static void clear_sf_state() +{ + struct brw_sf_unit_state sf; + memset(&sf, 0, sizeof(sf)); + /* TODO */ +} + + +/* urb fence must be aligned to cacheline */ +static void align_urb_fence() +{ + BATCH_LOCALS; + int i, offset_to_next_cacheline; + unsigned long batch_offset; + BEGIN_BATCH(3); + batch_offset = (void *)batch_ptr - xvmc_driver->alloc.ptr; + offset_to_next_cacheline = ALIGN(batch_offset, 64) - batch_offset; + if (offset_to_next_cacheline <= 12 && offset_to_next_cacheline != 0) { + for (i = 0; i < offset_to_next_cacheline/4; i++) + OUT_BATCH(0); + ADVANCE_BATCH(); + } +} + +/* setup urb layout for media */ +static void urb_layout() +{ + BATCH_LOCALS; + align_urb_fence(); + BEGIN_BATCH(3); + OUT_BATCH(BRW_URB_FENCE | + UF0_VFE_REALLOC | + UF0_CS_REALLOC | + 1); + OUT_BATCH(0); + OUT_BATCH(((URB_SIZE)<< UF2_VFE_FENCE_SHIFT) | /* VFE_SIZE */ + ((URB_SIZE)<< UF2_CS_FENCE_SHIFT)); /* CS_SIZE is 0 */ + ADVANCE_BATCH(); +} + +/* clear previous urb layout */ +static void clear_urb_state() +{ + BATCH_LOCALS; + align_urb_fence(); + BEGIN_BATCH(3); + OUT_BATCH(BRW_URB_FENCE | + UF0_CS_REALLOC | + UF0_SF_REALLOC | + UF0_CLIP_REALLOC | + UF0_GS_REALLOC | + UF0_VS_REALLOC | + 1); + OUT_BATCH((0 << UF1_CLIP_FENCE_SHIFT) | + (0 << UF1_GS_FENCE_SHIFT) | + (0 << UF1_VS_FENCE_SHIFT)); + OUT_BATCH((0 << UF2_CS_FENCE_SHIFT) | + (0 << UF2_SF_FENCE_SHIFT)); + ADVANCE_BATCH(); +} + +static void media_state_pointers(struct media_state *media_state) +{ + BATCH_LOCALS; + BEGIN_BATCH(3); + OUT_BATCH(BRW_MEDIA_STATE_POINTERS|1); + OUT_BATCH(0); + OUT_BATCH(media_state->vfe_state_offset); + ADVANCE_BATCH(); +} + +static void cs_urb_layout() +{ + BATCH_LOCALS; + BEGIN_BATCH(2); + OUT_BATCH(BRW_CS_URB_STATE | 0); + OUT_BATCH((0 << 4) | /* URB Entry Allocation Size */ + (0 << 0)); /* Number of URB Entries */ + ADVANCE_BATCH(); +} + +/* setup 2D surface for media_read or media_write + */ +static void setup_media_surface(struct media_state *media_state, + int surface_num, unsigned long offset, int w, int h) +{ + struct brw_surface_state *ss; + ss = media_state->state_ptr + + (media_state->surface_offsets[surface_num] - media_state->state_base); + memset(ss, 0, sizeof(struct brw_surface_state)); + ss->ss0.surface_type = BRW_SURFACE_2D; + ss->ss0.surface_format = BRW_SURFACEFORMAT_R8_SINT; + ss->ss1.base_addr = offset; + ss->ss2.width = w - 1; + ss->ss2.height = h - 1; + ss->ss3.pitch = w - 1; +} + +static void setup_surfaces(struct media_state *media_state, + unsigned long dst_offset, unsigned long past_offset, + unsigned long future_offset, + int w, int h) +{ + setup_media_surface(media_state, 0, dst_offset, w, h); + setup_media_surface(media_state, 1, dst_offset+w*h, w/2, h/2); + setup_media_surface(media_state, 2, dst_offset+w*h + w*h/4, w/2, h/2); + if (past_offset) { + setup_media_surface(media_state, 4, past_offset, w, h); + setup_media_surface(media_state, 5, past_offset+w*h, w/2, h/2); + setup_media_surface(media_state, 6, past_offset+w*h + w*h/4, w/2, h/2); + } + if (future_offset) { + setup_media_surface(media_state, 7, future_offset, w, h); + setup_media_surface(media_state, 8, future_offset+w*h, w/2, h/2); + setup_media_surface(media_state, 9, future_offset+w*h + w*h/4, w/2, h/2); + } +} +/* BUFFER SURFACE has a strange format + * the size of the surface is in part of w h and d component + */ + +static void setup_blocks(struct media_state *media_state, + unsigned long offset, unsigned int block_size) +{ + union element{ + struct { + unsigned int w:7; + unsigned int h:13; + unsigned int d:7; + unsigned int pad:7; + }whd; + unsigned int size; + }e; + struct brw_surface_state *ss; + ss = media_state->state_ptr + + (media_state->surface_offsets[3] - media_state->state_base); + memset(ss, 0, sizeof(struct brw_surface_state)); + ss->ss0.surface_type = BRW_SURFACE_BUFFER; + ss->ss0.surface_format = BRW_SURFACEFORMAT_R8_UINT; + ss->ss1.base_addr = offset; + e.size = block_size - 1; + ss->ss2.width = e.whd.w; + ss->ss2.height = e.whd.h; + ss->ss3.depth = e.whd.d; + ss->ss3.pitch = block_size - 1; +} + +/* setup state base address */ +static void state_base_address(int offset) +{ + BATCH_LOCALS; + BEGIN_BATCH(6); + OUT_BATCH(BRW_STATE_BASE_ADDRESS | 4); + OUT_BATCH(0 | BASE_ADDRESS_MODIFY); + OUT_BATCH(0 | BASE_ADDRESS_MODIFY); + OUT_BATCH(0 | BASE_ADDRESS_MODIFY); + OUT_BATCH(0 | BASE_ADDRESS_MODIFY); + OUT_BATCH((0xFFFFF<<12) | BASE_ADDRESS_MODIFY); + ADVANCE_BATCH(); +} + +/* select media pipeline */ +static void pipeline_select(struct media_state *media_state) +{ + BATCH_LOCALS; + BEGIN_BATCH(1); + if (media_state->is_g4x) + OUT_BATCH(NEW_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA); + else + OUT_BATCH(BRW_PIPELINE_SELECT | PIPELINE_SELECT_MEDIA); + ADVANCE_BATCH(); +} + +/* kick media object to gpu */ +static void send_media_object(XvMCMacroBlock *mb, int offset, enum interface interface) +{ + BATCH_LOCALS; + BEGIN_BATCH(13); + OUT_BATCH(BRW_MEDIA_OBJECT|11); + OUT_BATCH(interface); + if (media_state.is_965_q) { + OUT_BATCH(0); + OUT_BATCH(0); + }else { + OUT_BATCH(6*128); + OUT_BATCH(offset); + } + + OUT_BATCH(mb->x<<4); //g1.0 + OUT_BATCH(mb->y<<4); + OUT_BATCH(offset); //g1.8 + OUT_BATCH_SHORT(mb->coded_block_pattern); //g1.12 + OUT_BATCH_SHORT(mb->PMV[0][0][0]); //g1.14 + OUT_BATCH_SHORT(mb->PMV[0][0][1]); //g1.16 + OUT_BATCH_SHORT(mb->PMV[0][1][0]); //g1.18 + OUT_BATCH_SHORT(mb->PMV[0][1][1]); //g1.20 + + OUT_BATCH_SHORT(mb->PMV[1][0][0]); //g1.22 + OUT_BATCH_SHORT(mb->PMV[1][0][1]); //g1.24 + OUT_BATCH_SHORT(mb->PMV[1][1][0]); //g1.26 + OUT_BATCH_SHORT(mb->PMV[1][1][1]); //g1.28 + OUT_BATCH_CHAR(mb->dct_type); //g1.30 + OUT_BATCH_CHAR(mb->motion_vertical_field_select);//g1.31 + + if (media_state.is_965_q) + OUT_BATCH(0x0); + else + OUT_BATCH(0xffffffff); + ADVANCE_BATCH(); +} + +static void binding_tables(struct media_state *media_state) +{ + unsigned int *binding_table; + int i; + binding_table = media_state->state_ptr + + (media_state->binding_table_offset - media_state->state_base); + for (i = 0; i < MAX_SURFACE_NUM; i++) + binding_table[i] = media_state->surface_offsets[i]; +} + +static void media_kernels(struct media_state *media_state) +{ + void *kernel; +#define LOAD_KERNEL(name) kernel = media_state->state_ptr +\ + (media_state->name##_kernel_offset - media_state->state_base);\ + memcpy(kernel, name##_kernel_static, sizeof(name##_kernel_static)); +#define LOAD_KERNEL_IGD(name) kernel = media_state->state_ptr +\ + (media_state->name##_kernel_offset - media_state->state_base);\ + memcpy(kernel, name##_igd_kernel_static, sizeof(name##_igd_kernel_static)); + + LOAD_KERNEL(ipicture); + LOAD_KERNEL(null); + if (media_state->is_g4x) { + LOAD_KERNEL_IGD(frame_forward); + LOAD_KERNEL_IGD(field_forward); + LOAD_KERNEL_IGD(frame_backward); + LOAD_KERNEL_IGD(field_backward); + LOAD_KERNEL_IGD(frame_f_b); + LOAD_KERNEL_IGD(field_f_b); + LOAD_KERNEL_IGD(dual_prime); + + }else { + LOAD_KERNEL(frame_forward); + LOAD_KERNEL(field_forward); + LOAD_KERNEL(frame_backward); + LOAD_KERNEL(field_backward); + LOAD_KERNEL(frame_f_b); + LOAD_KERNEL(field_f_b); + LOAD_KERNEL(dual_prime); + } +} + +static void setup_interface(struct media_state *media_state, + enum interface interface, unsigned int kernel_offset) +{ + struct brw_interface_descriptor *desc; + desc = media_state->state_ptr + + (media_state->interface_descriptor_offset[interface] + - media_state->state_base); + memset(desc, 0, sizeof(*desc)); + desc->desc0.grf_reg_blocks = 15; + desc->desc0.kernel_start_pointer = kernel_offset >> 6; + desc->desc1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; + + /* use same binding table for all interface + * may change this if it affect performance + */ + desc->desc3.binding_table_entry_count = MAX_SURFACE_NUM; + desc->desc3.binding_table_pointer = media_state->binding_table_offset >> 5; +} + +static void interface_descriptor(struct media_state *media_state) +{ + setup_interface(media_state, INTRA_INTERFACE, + media_state->ipicture_kernel_offset); + setup_interface(media_state, NULL_INTERFACE, + media_state->null_kernel_offset); + setup_interface(media_state, FORWARD_INTERFACE, + media_state->frame_forward_kernel_offset); + setup_interface(media_state, FIELD_FORWARD_INTERFACE, + media_state->field_forward_kernel_offset); + setup_interface(media_state, BACKWARD_INTERFACE, + media_state->frame_backward_kernel_offset); + setup_interface(media_state, FIELD_BACKWARD_INTERFACE, + media_state->field_backward_kernel_offset); + setup_interface(media_state, F_B_INTERFACE, + media_state->frame_f_b_kernel_offset); + setup_interface(media_state, FIELD_F_B_INTERFACE, + media_state->field_f_b_kernel_offset); + setup_interface(media_state, DUAL_PRIME_INTERFACE, + media_state->dual_prime_kernel_offset); +} + +static void vfe_state(struct media_state *media_state) +{ + struct brw_vfe_state *state; + state = media_state->state_ptr + + (media_state->vfe_state_offset - media_state->state_base); + memset(state, 0, sizeof(*state)); + /* no scratch space */ + state->vfe1.vfe_mode = VFE_GENERIC_MODE; + state->vfe1.num_urb_entries = 1; + /* XXX TODO */ + /* should carefully caculate those values for performance */ + state->vfe1.urb_entry_alloc_size = 2; + state->vfe1.max_threads = 31; + state->vfe2.interface_descriptor_base = + media_state->interface_descriptor_offset[0] >> 4; +} + +static void calc_state_layouts(struct media_state *media_state) +{ + int i; + media_state->vfe_state_offset = ALIGN(media_state->state_base, 64); + media_state->interface_descriptor_offset[0] = + ALIGN(media_state->vfe_state_offset + sizeof(struct brw_vfe_state), 64); + for (i = 1; i < DESCRIPTOR_NUM; i++) + media_state->interface_descriptor_offset[i] = + media_state->interface_descriptor_offset[i-1] + + sizeof(struct brw_interface_descriptor); + media_state->binding_table_offset = + ALIGN(media_state->interface_descriptor_offset[DESCRIPTOR_NUM - 1] + + sizeof(struct brw_interface_descriptor), 64); + media_state->surface_offsets[0] = + ALIGN(media_state->binding_table_offset + + 4*media_state->binding_table_entry_count , 32); + for (i = 1; i < MAX_SURFACE_NUM; i++) + media_state->surface_offsets[i] = + ALIGN(media_state->surface_offsets[i - 1] + + sizeof(struct brw_surface_state) , 32); + media_state->ipicture_kernel_offset = + ALIGN(media_state->surface_offsets[MAX_SURFACE_NUM - 1] + + sizeof(struct brw_surface_state) , 64); + + media_state->frame_forward_kernel_offset = + ALIGN(media_state->ipicture_kernel_offset + + sizeof(ipicture_kernel_static), 64); + if(!media_state->is_g4x) { + media_state->field_forward_kernel_offset = + ALIGN(media_state->frame_forward_kernel_offset + + sizeof(frame_forward_kernel_static), 64); + media_state->frame_backward_kernel_offset = + ALIGN(media_state->field_forward_kernel_offset + + sizeof(field_forward_kernel_static), 64); + media_state->field_backward_kernel_offset = + ALIGN(media_state->frame_backward_kernel_offset + + sizeof(frame_backward_kernel_static), 64); + media_state->frame_f_b_kernel_offset = + ALIGN(media_state->field_backward_kernel_offset + + sizeof(field_backward_kernel_static), 64); + media_state->field_f_b_kernel_offset = + ALIGN(media_state->frame_f_b_kernel_offset + + sizeof(frame_f_b_kernel_static), 64); + media_state->null_kernel_offset = + ALIGN(media_state->field_f_b_kernel_offset + + sizeof(field_f_b_kernel_static), 64); + media_state->dual_prime_kernel_offset = + ALIGN(media_state->null_kernel_offset + + sizeof(null_kernel_static), 64); + } else { + media_state->field_forward_kernel_offset = + ALIGN(media_state->frame_forward_kernel_offset + + sizeof(frame_forward_igd_kernel_static), 64); + media_state->frame_backward_kernel_offset = + ALIGN(media_state->field_forward_kernel_offset + + sizeof(field_forward_igd_kernel_static), 64); + media_state->field_backward_kernel_offset = + ALIGN(media_state->frame_backward_kernel_offset + + sizeof(frame_backward_igd_kernel_static), 64); + media_state->frame_f_b_kernel_offset = + ALIGN(media_state->field_backward_kernel_offset + + sizeof(field_backward_igd_kernel_static), 64); + media_state->field_f_b_kernel_offset = + ALIGN(media_state->frame_f_b_kernel_offset + + sizeof(frame_f_b_igd_kernel_static), 64); + media_state->null_kernel_offset = + ALIGN(media_state->field_f_b_kernel_offset + + sizeof(field_f_b_igd_kernel_static), 64); + media_state->dual_prime_kernel_offset = + ALIGN(media_state->null_kernel_offset + + sizeof(null_kernel_static), 64); + } +} + +static Status render_surface(Display *display, + XvMCContext *context, + unsigned int picture_structure, + XvMCSurface *target_surface, + XvMCSurface *past_surface, + XvMCSurface *future_surface, + unsigned int flags, + unsigned int num_macroblocks, + unsigned int first_macroblock, + XvMCMacroBlockArray *macroblock_array, + XvMCBlockArray *blocks) +{ + + intel_xvmc_context_ptr intel_ctx; + int i, j; + struct i965_xvmc_context *i965_ctx; + XvMCMacroBlock *mb; + struct i965_xvmc_surface *priv_target_surface = + target_surface->privData; + struct i965_xvmc_surface *priv_past_surface = + past_surface?past_surface->privData:0; + struct i965_xvmc_surface *priv_future_surface = + future_surface?future_surface->privData:0; + unsigned short *block_ptr; + intel_ctx = intel_xvmc_find_context(context->context_id); + i965_ctx = context->privData; + if (!intel_ctx) { + XVMC_ERR("Can't find intel xvmc context\n"); + return BadValue; + } + setup_surfaces(&media_state, + priv_target_surface->buffer.offset, + past_surface? priv_past_surface->buffer.offset:0, + future_surface?priv_future_surface->buffer.offset:0, + context->width, context->height); + + block_ptr = i965_ctx->blocks.ptr; + for (i = first_macroblock; + i < num_macroblocks + first_macroblock; i++) { + unsigned short *mb_block_ptr; + mb = ¯oblock_array->macro_blocks[i]; + mb_block_ptr = &blocks->blocks[(mb->index<<6)]; + if (mb->coded_block_pattern & 0x20) { + for (j = 0; j < 8; j++) + memcpy(block_ptr + 16*j, mb_block_ptr + 8*j, 16); + mb_block_ptr += 64; + } + + if (mb->coded_block_pattern & 0x10) { + for (j = 0; j < 8; j++) + memcpy(block_ptr + 16*j + 8, mb_block_ptr + 8*j, 16); + mb_block_ptr += 64; + } + block_ptr += 2*64; + if (mb->coded_block_pattern & 0x08) { + for (j = 0; j < 8; j++) + memcpy(block_ptr + 16*j, mb_block_ptr + 8*j, 16); + mb_block_ptr += 64; + } + + if (mb->coded_block_pattern & 0x04) { + for (j = 0; j < 8; j++) + memcpy(block_ptr + 16*j + 8, mb_block_ptr + 8*j, 16); + mb_block_ptr += 64; + } + + block_ptr += 2*64; + if (mb->coded_block_pattern & 0x2) { + memcpy(block_ptr, mb_block_ptr, 128); + mb_block_ptr += 64; + } + + block_ptr += 64; + if (mb->coded_block_pattern & 0x1) + memcpy(block_ptr, mb_block_ptr, 128); + block_ptr += 64; + } + + { + int block_offset; + block_offset = media_state.is_965_q?0:i965_ctx->blocks.offset; + LOCK_HARDWARE(intel_ctx->hw_context); + state_base_address(block_offset); + flush(); + clear_sf_state(); + clear_urb_state(); + pipeline_select(&media_state); + urb_layout(); + media_state_pointers(&media_state); + cs_urb_layout(); + + for (i = first_macroblock; + i < num_macroblocks + first_macroblock; + i++, block_offset += 128*6) { + mb = ¯oblock_array->macro_blocks[i]; + + if (mb->macroblock_type & XVMC_MB_TYPE_INTRA) { + send_media_object(mb, block_offset, INTRA_INTERFACE); + } else { + if (((mb->motion_type & 3) == XVMC_PREDICTION_FRAME)) { + if ((mb->macroblock_type&XVMC_MB_TYPE_MOTION_FORWARD)) + { + if (((mb->macroblock_type&XVMC_MB_TYPE_MOTION_BACKWARD))) + send_media_object(mb, block_offset, F_B_INTERFACE); + else + send_media_object(mb, block_offset, FORWARD_INTERFACE); + } else if ((mb->macroblock_type&XVMC_MB_TYPE_MOTION_BACKWARD)) + { + send_media_object(mb, block_offset, BACKWARD_INTERFACE); + } + } else if ((mb->motion_type & 3) == XVMC_PREDICTION_FIELD) { + if ((mb->macroblock_type&XVMC_MB_TYPE_MOTION_FORWARD)) + { + if (((mb->macroblock_type&XVMC_MB_TYPE_MOTION_BACKWARD))) + send_media_object(mb, block_offset, FIELD_F_B_INTERFACE); + else + + send_media_object(mb, block_offset, FIELD_FORWARD_INTERFACE); + } else if ((mb->macroblock_type&XVMC_MB_TYPE_MOTION_BACKWARD)) + { + send_media_object(mb, block_offset, FIELD_BACKWARD_INTERFACE); + } + }else { + send_media_object(mb, block_offset, DUAL_PRIME_INTERFACE); + } + } + } + intelFlushBatch(TRUE); + UNLOCK_HARDWARE(intel_ctx->hw_context); + } + return Success; +} + +static Status put_surface(Display *display,XvMCSurface *surface, + Drawable draw, short srcx, short srcy, + unsigned short srcw, unsigned short srch, + short destx, short desty, + unsigned short destw, unsigned short desth, + int flags, struct intel_xvmc_command *data) +{ + struct i965_xvmc_surface *private_surface = + surface->privData; + + data->surf_offset = private_surface->buffer.offset; + return Success; +} + +static Status get_surface_status(Display *display, + XvMCSurface *surface, int *stats) +{ + *stats = 0; + return 0; +} + +static Status create_context(Display *display, XvMCContext *context, + int priv_count, CARD32 *priv_data) +{ + struct i965_xvmc_context *i965_ctx; + i965_ctx = (struct i965_xvmc_context *)priv_data; + context->privData = i965_ctx; + if (map_buffer(&i965_ctx->static_buffer)) + return BadAlloc; + if(map_buffer(&i965_ctx->blocks)) + return BadAlloc; + { + media_state.state_base = i965_ctx->static_buffer.offset; + media_state.state_ptr = i965_ctx->static_buffer.ptr; + media_state.is_g4x = i965_ctx->is_g4x; + media_state.is_965_q = i965_ctx->is_965_q; + media_state.binding_table_entry_count = MAX_SURFACE_NUM; + calc_state_layouts(&media_state); + vfe_state(&media_state); + interface_descriptor(&media_state); + media_kernels(&media_state); + setup_blocks(&media_state, + i965_ctx->blocks.offset, + 6*context->width*context->height*sizeof(short)); + binding_tables(&media_state); + } + return Success; +} + +struct _intel_xvmc_driver i965_xvmc_mc_driver = { + .type = XVMC_I965_MPEG2_MC, + .create_context = create_context, + .destroy_context = destroy_context, + .create_surface = create_surface, + .destroy_surface = destroy_surface, + .render_surface = render_surface, + .put_surface = put_surface, + .get_surface_status = get_surface_status, +}; + diff --git a/driver/xf86-video-intel/src/xvmc/i965_xvmc.h b/driver/xf86-video-intel/src/xvmc/i965_xvmc.h new file mode 100644 index 000000000..bbee76c0b --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/i965_xvmc.h @@ -0,0 +1,2 @@ +#include "intel_xvmc.h" + diff --git a/driver/xf86-video-intel/src/xvmc/intel_batchbuffer.h b/driver/xf86-video-intel/src/xvmc/intel_batchbuffer.h index aec71e4aa..d4d8037a2 100644 --- a/driver/xf86-video-intel/src/xvmc/intel_batchbuffer.h +++ b/driver/xf86-video-intel/src/xvmc/intel_batchbuffer.h @@ -6,32 +6,37 @@ extern int VERBOSE; #endif -#define BATCH_LOCALS char *batch_ptr; +#define BATCH_LOCALS unsigned char *batch_ptr; #define BEGIN_BATCH(n) \ do { \ - if (VERBOSE) fprintf(stderr, \ - "BEGIN_BATCH(%ld) in %s, %d dwords free\n", \ - ((unsigned long)n), __FUNCTION__, \ - xvmc_driver->batch.space/4); \ - if (xvmc_driver->batch.space < (n)*4) \ - intelFlushBatch(TRUE); \ - batch_ptr = xvmc_driver->batch.ptr; \ + if (xvmc_driver->batch.space < (n)*4) \ + intelFlushBatch(TRUE); \ + batch_ptr = xvmc_driver->batch.ptr; \ } while (0) #define OUT_BATCH(n) \ do { \ - *(GLuint *)batch_ptr = (n); \ - if (VERBOSE) fprintf(stderr, " -- %08x at %s/%d\n", (n), __FILE__, __LINE__); \ + *(unsigned int *)batch_ptr = (n); \ batch_ptr += 4; \ } while (0) -#define ADVANCE_BATCH() \ - do { \ - if (VERBOSE) fprintf(stderr, "ADVANCE_BATCH()\n"); \ - xvmc_driver->batch.space -= (batch_ptr - xvmc_driver->batch.ptr); \ - xvmc_driver->batch.ptr = batch_ptr; \ - assert(xvmc_driver->batch.space >= 0); \ +#define OUT_BATCH_SHORT(n) \ + do { \ + *(short *)batch_ptr = (n); \ + batch_ptr += 2; \ + } while (0) + +#define OUT_BATCH_CHAR(n) \ + do { \ + *(char *)batch_ptr = (n); \ + batch_ptr ++; \ + } while (0) +#define ADVANCE_BATCH() \ + do { \ + xvmc_driver->batch.space -= (batch_ptr - xvmc_driver->batch.ptr);\ + xvmc_driver->batch.ptr = batch_ptr; \ + assert(xvmc_driver->batch.space >= 0); \ } while(0) extern void intelFlushBatch(Bool); diff --git a/driver/xf86-video-intel/src/xvmc/intel_xvmc.c b/driver/xf86-video-intel/src/xvmc/intel_xvmc.c index ea39069e0..4b73caa58 100644 --- a/driver/xf86-video-intel/src/xvmc/intel_xvmc.c +++ b/driver/xf86-video-intel/src/xvmc/intel_xvmc.c @@ -264,7 +264,7 @@ intel_xvmc_surface_ptr intel_xvmc_find_surface(XID id) * returned by XvMCListSurfaceTypes. * Returns: Status */ -Status XvMCCreateContext(Display *display, XvPortID port, +_X_EXPORT Status XvMCCreateContext(Display *display, XvPortID port, int surface_type_id, int width, int height, int flags, XvMCContext *context) { @@ -292,12 +292,6 @@ Status XvMCCreateContext(Display *display, XvPortID port, intel_xvmc_debug_init(); - /* Open DRI Device */ - if((fd = drmOpen("i915", NULL)) < 0) { - XVMC_ERR("DRM Device could not be opened."); - return BadValue; - } - /* Width, Height, and flags are checked against surface_type_id and port for validity inside the X server, no need to check @@ -341,6 +335,8 @@ Status XvMCCreateContext(Display *display, XvPortID port, xvmc_driver = &i915_xvmc_mc_driver; break; case XVMC_I965_MPEG2_MC: + xvmc_driver = &i965_xvmc_mc_driver; + break; case XVMC_I945_MPEG2_VLD: case XVMC_I965_MPEG2_VLD: default: @@ -356,8 +352,6 @@ Status XvMCCreateContext(Display *display, XvPortID port, return BadValue; } - xvmc_driver->fd = fd; - XVMC_INFO("decoder type is %s", intel_xvmc_decoder_string(comm->type)); xvmc_driver->sarea_size = comm->sarea_size; @@ -388,6 +382,16 @@ Status XvMCCreateContext(Display *display, XvPortID port, return BadValue; } + /* Open DRI Device */ + if((fd = drmOpen("i915", curBusID)) < 0) { + XVMC_ERR("DRM Device could not be opened."); + XFree(priv_data); + XFree(curBusID); + return BadValue; + } + + xvmc_driver->fd = fd; + strncpy(xvmc_driver->busID, curBusID, 20); xvmc_driver->busID[20] = '\0'; XFree(curBusID); @@ -455,7 +459,7 @@ Status XvMCCreateContext(Display *display, XvPortID port, * context - The context to be destroyed. * */ -Status XvMCDestroyContext(Display *display, XvMCContext *context) +_X_EXPORT Status XvMCDestroyContext(Display *display, XvMCContext *context) { Status ret; int screen; @@ -499,7 +503,7 @@ Status XvMCDestroyContext(Display *display, XvMCContext *context) /* * Function: XvMCCreateSurface */ -Status XvMCCreateSurface(Display *display, XvMCContext *context, XvMCSurface *surface) +_X_EXPORT Status XvMCCreateSurface(Display *display, XvMCContext *context, XvMCSurface *surface) { Status ret; int priv_count; @@ -548,7 +552,7 @@ Status XvMCCreateSurface(Display *display, XvMCContext *context, XvMCSurface *su /* * Function: XvMCDestroySurface */ -Status XvMCDestroySurface(Display *display, XvMCSurface *surface) +_X_EXPORT Status XvMCDestroySurface(Display *display, XvMCSurface *surface) { intel_xvmc_surface_ptr intel_surf; @@ -574,16 +578,17 @@ Status XvMCDestroySurface(Display *display, XvMCSurface *surface) /* * Function: XvMCCreateBlocks */ -Status XvMCCreateBlocks(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCCreateBlocks(Display *display, XvMCContext *context, unsigned int num_blocks, XvMCBlockArray *block) { + Status ret; if (!display || !context || !num_blocks || !block) return BadValue; memset(block, 0, sizeof(XvMCBlockArray)); - if (!(block->blocks = (short *)malloc(num_blocks << 6 * sizeof(short)))) + if (!(block->blocks = (short *)malloc((num_blocks << 6) * sizeof(short)))) return BadAlloc; block->num_blocks = num_blocks; @@ -596,8 +601,9 @@ Status XvMCCreateBlocks(Display *display, XvMCContext *context, /* * Function: XvMCDestroyBlocks */ -Status XvMCDestroyBlocks(Display *display, XvMCBlockArray *block) +_X_EXPORT Status XvMCDestroyBlocks(Display *display, XvMCBlockArray *block) { + Status ret; if (!display || !block) return BadValue; @@ -615,7 +621,7 @@ Status XvMCDestroyBlocks(Display *display, XvMCBlockArray *block) /* * Function: XvMCCreateMacroBlocks */ -Status XvMCCreateMacroBlocks(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCCreateMacroBlocks(Display *display, XvMCContext *context, unsigned int num_blocks, XvMCMacroBlockArray *blocks) { @@ -638,7 +644,7 @@ Status XvMCCreateMacroBlocks(Display *display, XvMCContext *context, /* * Function: XvMCDestroyMacroBlocks */ -Status XvMCDestroyMacroBlocks(Display *display, XvMCMacroBlockArray *block) +_X_EXPORT Status XvMCDestroyMacroBlocks(Display *display, XvMCMacroBlockArray *block) { if (!display || !block) return BadValue; @@ -660,7 +666,7 @@ Status XvMCDestroyMacroBlocks(Display *display, XvMCMacroBlockArray *block) * macroblock structures it dispatched the hardware commands to execute * them. */ -Status XvMCRenderSurface(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCRenderSurface(Display *display, XvMCContext *context, unsigned int picture_structure, XvMCSurface *target_surface, XvMCSurface *past_surface, @@ -721,7 +727,7 @@ Status XvMCRenderSurface(Display *display, XvMCContext *context, * XVMC_BOTTOM_FIELD - Display only the Bottom Field of the surface. * XVMC_FRAME_PICTURE - Display both fields or frame. */ -Status XvMCPutSurface(Display *display,XvMCSurface *surface, +_X_EXPORT Status XvMCPutSurface(Display *display,XvMCSurface *surface, Drawable draw, short srcx, short srcy, unsigned short srcw, unsigned short srch, short destx, short desty, @@ -750,7 +756,6 @@ Status XvMCPutSurface(Display *display,XvMCSurface *surface, intel_surf->gc = XCreateGC(display, draw, 0, NULL); } intel_surf->last_draw = draw; - /* fill intel_surf->data */ ret = (xvmc_driver->put_surface)(display, surface, draw, srcx, srcy, srcw, srch, destx, desty, destw, desth, flags, &intel_surf->data); @@ -758,11 +763,9 @@ Status XvMCPutSurface(Display *display,XvMCSurface *surface, XVMC_ERR("put surface fail\n"); return ret; } - ret = XvPutImage(display, context->port, draw, intel_surf->gc, intel_surf->image, srcx, srcy, srcw, srch, destx, desty, destw, desth); - return ret; } @@ -772,7 +775,7 @@ Status XvMCPutSurface(Display *display,XvMCSurface *surface, * display - Connection to the X server * surface - The surface to synchronize */ -Status XvMCSyncSurface(Display *display, XvMCSurface *surface) +_X_EXPORT Status XvMCSyncSurface(Display *display, XvMCSurface *surface) { Status ret; int stat = 0; @@ -797,7 +800,7 @@ Status XvMCSyncSurface(Display *display, XvMCSurface *surface) * surface - Surface to flush * Returns: Status */ -Status XvMCFlushSurface(Display * display, XvMCSurface *surface) +_X_EXPORT Status XvMCFlushSurface(Display * display, XvMCSurface *surface) { if (!display || !surface) return XvMCBadSurface; @@ -816,7 +819,7 @@ Status XvMCFlushSurface(Display * display, XvMCSurface *surface) * XVMC_DISPLAYING - The surface is currently being displayed or a * display is pending. */ -Status XvMCGetSurfaceStatus(Display *display, XvMCSurface *surface, int *stat) +_X_EXPORT Status XvMCGetSurfaceStatus(Display *display, XvMCSurface *surface, int *stat) { Status ret; @@ -841,7 +844,7 @@ Status XvMCGetSurfaceStatus(Display *display, XvMCSurface *surface, int *stat) * * Returns: Status */ -Status XvMCHideSurface(Display *display, XvMCSurface *surface) +_X_EXPORT Status XvMCHideSurface(Display *display, XvMCSurface *surface) { int stat = 0; Status ret; @@ -880,7 +883,7 @@ Status XvMCHideSurface(Display *display, XvMCSurface *surface) * * Returns: Status */ -Status XvMCCreateSubpicture(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCCreateSubpicture(Display *display, XvMCContext *context, XvMCSubpicture *subpicture, unsigned short width, unsigned short height, int xvimage_id) @@ -901,7 +904,7 @@ Status XvMCCreateSubpicture(Display *display, XvMCContext *context, * * Returns: Status */ -Status XvMCClearSubpicture(Display *display, XvMCSubpicture *subpicture, +_X_EXPORT Status XvMCClearSubpicture(Display *display, XvMCSubpicture *subpicture, short x, short y, unsigned short width, unsigned short height, unsigned int color) @@ -925,7 +928,7 @@ Status XvMCClearSubpicture(Display *display, XvMCSubpicture *subpicture, * * Returns: Status */ -Status XvMCCompositeSubpicture(Display *display, XvMCSubpicture *subpicture, +_X_EXPORT Status XvMCCompositeSubpicture(Display *display, XvMCSubpicture *subpicture, XvImage *image, short srcx, short srcy, unsigned short width, unsigned short height, @@ -945,7 +948,7 @@ Status XvMCCompositeSubpicture(Display *display, XvMCSubpicture *subpicture, * * Returns: Status */ -Status XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture) +_X_EXPORT Status XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture) { XVMC_ERR("XvMCDestroySubpicture not implemented!"); return BadValue; @@ -962,7 +965,7 @@ Status XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture) * is num_palette_entries * entry_bytes in size. * Returns: Status */ -Status XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, +_X_EXPORT Status XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, unsigned char *palette) { XVMC_ERR("XvMCSetSubpicturePalette not implemented!"); @@ -992,7 +995,7 @@ Status XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, * * Returns: Status */ -Status XvMCBlendSubpicture(Display *display, XvMCSurface *target_surface, +_X_EXPORT Status XvMCBlendSubpicture(Display *display, XvMCSurface *target_surface, XvMCSubpicture *subpicture, short subx, short suby, unsigned short subw, unsigned short subh, @@ -1029,7 +1032,7 @@ Status XvMCBlendSubpicture(Display *display, XvMCSurface *target_surface, * * Returns: Status */ -Status XvMCBlendSubpicture2(Display *display, +_X_EXPORT Status XvMCBlendSubpicture2(Display *display, XvMCSurface *source_surface, XvMCSurface *target_surface, XvMCSubpicture *subpicture, @@ -1052,7 +1055,7 @@ Status XvMCBlendSubpicture2(Display *display, * * Returns: Status */ -Status XvMCSyncSubpicture(Display *display, XvMCSubpicture *subpicture) +_X_EXPORT Status XvMCSyncSubpicture(Display *display, XvMCSubpicture *subpicture) { XVMC_ERR("XvMCSyncSubpicture not implemented!"); return BadValue; @@ -1069,7 +1072,7 @@ Status XvMCSyncSubpicture(Display *display, XvMCSubpicture *subpicture) * * Returns: Status */ -Status XvMCFlushSubpicture(Display *display, XvMCSubpicture *subpicture) +_X_EXPORT Status XvMCFlushSubpicture(Display *display, XvMCSubpicture *subpicture) { XVMC_ERR("XvMCFlushSubpicture not implemented!"); return BadValue; @@ -1089,7 +1092,7 @@ Status XvMCFlushSubpicture(Display *display, XvMCSubpicture *subpicture) * * Returns: Status */ -Status XvMCGetSubpictureStatus(Display *display, XvMCSubpicture *subpicture, +_X_EXPORT Status XvMCGetSubpictureStatus(Display *display, XvMCSubpicture *subpicture, int *stat) { XVMC_ERR("XvMCGetSubpictureStatus not implemented!"); @@ -1110,7 +1113,7 @@ Status XvMCGetSubpictureStatus(Display *display, XvMCSubpicture *subpicture, * Returns: * An array of XvAttributes. */ -XvAttribute *XvMCQueryAttributes(Display *display, XvMCContext *context, +_X_EXPORT XvAttribute *XvMCQueryAttributes(Display *display, XvMCContext *context, int *number) { /* now XvMC has no extra attribs than Xv */ @@ -1131,7 +1134,7 @@ XvAttribute *XvMCQueryAttributes(Display *display, XvMCContext *context, * Returns: * Status */ -Status XvMCSetAttribute(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCSetAttribute(Display *display, XvMCContext *context, Atom attribute, int value) { return Success; @@ -1151,7 +1154,7 @@ Status XvMCSetAttribute(Display *display, XvMCContext *context, * Returns: * Status */ -Status XvMCGetAttribute(Display *display, XvMCContext *context, +_X_EXPORT Status XvMCGetAttribute(Display *display, XvMCContext *context, Atom attribute, int *value) { return Success; diff --git a/driver/xf86-video-intel/src/xvmc/intel_xvmc.h b/driver/xf86-video-intel/src/xvmc/intel_xvmc.h index c4dfd770e..9ef212179 100644 --- a/driver/xf86-video-intel/src/xvmc/intel_xvmc.h +++ b/driver/xf86-video-intel/src/xvmc/intel_xvmc.h @@ -201,6 +201,7 @@ typedef struct _intel_xvmc_driver { } intel_xvmc_driver_t, *intel_xvmc_driver_ptr; extern struct _intel_xvmc_driver i915_xvmc_mc_driver; +extern struct _intel_xvmc_driver i965_xvmc_mc_driver; extern struct _intel_xvmc_driver *xvmc_driver; #define SET_BLOCKED_SIGSET() do { \ diff --git a/driver/xf86-video-intel/src/xvmc/ipicture.g4a b/driver/xf86-video-intel/src/xvmc/ipicture.g4a new file mode 100644 index 000000000..afd5bc3d8 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/ipicture.g4a @@ -0,0 +1,166 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (8) g115.0<1>UD g1.0<8,8,1>UD {align1}; + +and.nz (1) null g2.0<1,1,1>UD 0x1UD{align1}; +(f0) jmpi direct_idct; +add (1) g2.8<1>UD g115.8<1,1,1>UD 0UD{align1}; +send (16) 0 g3.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g4.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g5.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g6.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g7.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g8.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g9.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g10.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g11.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g12.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g13.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g14.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g15.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g16.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g17.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g18.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g19.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g20.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g21.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g22.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g23<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g24.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g25.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +add (1) g2.8<1>UD g2.8<1,1,1>UD 32UD {align1}; +send (16) 0 g26.0<1>UD g2<16,16,1>UD read(3, 0, 2, 0) mlen 1 rlen 1 { align1 }; +direct_idct: +mov (1) g1.8<1>UD 0x00F000FUD {align1}; +mov.sat (16) g3.0<2>UB g3.0<16,16,1>W {align1}; +mov.sat (16) g4.0<2>UB g4.0<16,16,1>W {align1}; +mov.sat (16) g5.0<2>UB g5.0<16,16,1>W {align1}; +mov.sat (16) g6.0<2>UB g6.0<16,16,1>W {align1}; +mov.sat (16) g7.0<2>UB g7.0<16,16,1>W {align1}; +mov.sat (16) g8.0<2>UB g8.0<16,16,1>W {align1}; +mov.sat (16) g9.0<2>UB g9.0<16,16,1>W {align1}; +mov.sat (16) g10.0<2>UB g10.0<16,16,1>W {align1}; +mov.sat (16) g11.0<2>UB g11.0<16,16,1>W {align1}; +mov.sat (16) g12.0<2>UB g12.0<16,16,1>W {align1}; +mov.sat (16) g13.0<2>UB g13.0<16,16,1>W {align1}; +mov.sat (16) g14.0<2>UB g14.0<16,16,1>W {align1}; +mov.sat (16) g15.0<2>UB g15.0<16,16,1>W {align1}; +mov.sat (16) g16.0<2>UB g16.0<16,16,1>W {align1}; +mov.sat (16) g17.0<2>UB g17.0<16,16,1>W {align1}; +mov.sat (16) g18.0<2>UB g18.0<16,16,1>W {align1}; + +and.nz (1) null g1.30<1,1,1>UB 0x1UW{align1}; +(f0) jmpi field_dct; +//Frame IDCT +mov (16) m1.0<1>UB g3.0<16,16,2>UB {align1}; +mov (16) m1.16<1>UB g4.0<16,16,2>UB {align1}; +mov (16) m2.0<1>UB g5.0<16,16,2>UB {align1}; +mov (16) m2.16<1>UB g6.0<16,16,2>UB {align1}; +mov (16) m3.0<1>UB g7.0<16,16,2>UB {align1}; +mov (16) m3.16<1>UB g8.0<16,16,2>UB {align1}; +mov (16) m4.0<1>UB g9.0<16,16,2>UB {align1}; +mov (16) m4.16<1>UB g10.0<16,16,2>UB {align1}; +mov (16) m5.0<1>UB g11.0<16,16,2>UB {align1}; +mov (16) m5.16<1>UB g12.0<16,16,2>UB {align1}; +mov (16) m6.0<1>UB g13.0<16,16,2>UB {align1}; +mov (16) m6.16<1>UB g14.0<16,16,2>UB {align1}; +mov (16) m7.0<1>UB g15.0<16,16,2>UB {align1}; +mov (16) m7.16<1>UB g16.0<16,16,2>UB {align1}; +mov (16) m8.0<1>UB g17.0<16,16,2>UB {align1}; +mov (16) m8.16<1>UB g18.0<16,16,2>UB {align1}; +jmpi write_back; + +field_dct: +//Field IDCT +mov (16) m1.0<1>UB g3.0<16,16,2>UB {align1}; +mov (16) m1.16<1>UB g11.0<16,16,2>UB {align1}; +mov (16) m2.0<1>UB g4.0<16,16,2>UB {align1}; +mov (16) m2.16<1>UB g12.0<16,16,2>UB {align1}; +mov (16) m3.0<1>UB g5.0<16,16,2>UB {align1}; +mov (16) m3.16<1>UB g13.0<16,16,2>UB {align1}; +mov (16) m4.0<1>UB g6.0<16,16,2>UB {align1}; +mov (16) m4.16<1>UB g14.0<16,16,2>UB {align1}; +mov (16) m5.0<1>UB g7.0<16,16,2>UB {align1}; +mov (16) m5.16<1>UB g15.0<16,16,2>UB {align1}; +mov (16) m6.0<1>UB g8.0<16,16,2>UB {align1}; +mov (16) m6.16<1>UB g16.0<16,16,2>UB {align1}; +mov (16) m7.0<1>UB g9.0<16,16,2>UB {align1}; +mov (16) m7.16<1>UB g17.0<16,16,2>UB {align1}; +mov (16) m8.0<1>UB g10.0<16,16,2>UB {align1}; +mov (16) m8.16<1>UB g18.0<16,16,2>UB {align1}; + +write_back: +send (16) 0 acc0<1>UW g1<8,8,1>UW write(0,0,2,0) mlen 9 rlen 0 {align1}; +//U +mov (1) g1.8<1>UD 0x0070007UD { align1 }; +shr (2) g1.0<1>UD g115.0<2,2,1>UD 1D {align1}; +mov.sat (16) g19.0<2>UB g19.0<16,16,1>W {align1}; +mov.sat (16) g20.0<2>UB g20.0<16,16,1>W {align1}; +mov.sat (16) g21.0<2>UB g21.0<16,16,1>W {align1}; +mov.sat (16) g22.0<2>UB g22.0<16,16,1>W {align1}; +mov (16) m1.0<1>UB g19.0<16,16,2>UB {align1}; +mov (16) m1.16<1>UB g20.0<16,16,2>UB {align1}; +mov (16) m2.0<1>UB g21.0<16,16,2>UB {align1}; +mov (16) m2.16<1>UB g22.0<16,16,2>UB {align1}; +send (16) 0 acc0<1>UW g1<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 }; +//V +mov.sat (16) g23.0<2>UB g23.0<16,16,1>W {align1}; +mov.sat (16) g24.0<2>UB g24.0<16,16,1>W {align1}; +mov.sat (16) g25.0<2>UB g25.0<16,16,1>W {align1}; +mov.sat (16) g26.0<2>UB g26.0<16,16,1>W {align1}; +mov (16) m1.0<1>UB g23.0<16,16,2>UB {align1}; +mov (16) m1.16<1>UB g24.0<16,16,2>UB {align1}; +mov (16) m2.0<1>UB g25.0<16,16,2>UB {align1}; +mov (16) m2.16<1>UB g26.0<16,16,2>UB {align1}; +send (16) 0 acc0<1>UW g1<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 }; + +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/ipicture.g4b b/driver/xf86-video-intel/src/xvmc/ipicture.g4b new file mode 100644 index 000000000..10be527fa --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/ipicture.g4b @@ -0,0 +1,125 @@ + { 0x00600001, 0x2e600021, 0x008d0020, 0x00000000 }, + { 0x02000005, 0x20000c3c, 0x00210040, 0x00000001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000030 }, + { 0x00000040, 0x20480c21, 0x00210e68, 0x00000000 }, + { 0x00800031, 0x20601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x20e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x21e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22401c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22601c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22801c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22a01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22c01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x22e01c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23001c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23201c21, 0x00b10040, 0x04110203 }, + { 0x00000040, 0x20480c21, 0x00210048, 0x00000020 }, + { 0x00800031, 0x23401c21, 0x00b10040, 0x04110203 }, + { 0x00000001, 0x20280061, 0x00000000, 0x000f000f }, + { 0x80800001, 0x406001b1, 0x00b10060, 0x00000000 }, + { 0x80800001, 0x408001b1, 0x00b10080, 0x00000000 }, + { 0x80800001, 0x40a001b1, 0x00b100a0, 0x00000000 }, + { 0x80800001, 0x40c001b1, 0x00b100c0, 0x00000000 }, + { 0x80800001, 0x40e001b1, 0x00b100e0, 0x00000000 }, + { 0x80800001, 0x410001b1, 0x00b10100, 0x00000000 }, + { 0x80800001, 0x412001b1, 0x00b10120, 0x00000000 }, + { 0x80800001, 0x414001b1, 0x00b10140, 0x00000000 }, + { 0x80800001, 0x416001b1, 0x00b10160, 0x00000000 }, + { 0x80800001, 0x418001b1, 0x00b10180, 0x00000000 }, + { 0x80800001, 0x41a001b1, 0x00b101a0, 0x00000000 }, + { 0x80800001, 0x41c001b1, 0x00b101c0, 0x00000000 }, + { 0x80800001, 0x41e001b1, 0x00b101e0, 0x00000000 }, + { 0x80800001, 0x420001b1, 0x00b10200, 0x00000000 }, + { 0x80800001, 0x422001b1, 0x00b10220, 0x00000000 }, + { 0x80800001, 0x424001b1, 0x00b10240, 0x00000000 }, + { 0x02000005, 0x20002e3c, 0x0021003e, 0x00010001 }, + { 0x00010020, 0x34001c00, 0x00001400, 0x00000011 }, + { 0x00800001, 0x20200232, 0x00b20060, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20080, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b200a0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b20120, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b20140, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b20160, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b20180, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b201a0, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b201c0, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b201e0, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20200, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20220, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20240, 0x00000000 }, + { 0x00000020, 0x34001c00, 0x00001400, 0x00000010 }, + { 0x00800001, 0x20200232, 0x00b20060, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20160, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20080, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20180, 0x00000000 }, + { 0x00800001, 0x20600232, 0x00b200a0, 0x00000000 }, + { 0x00800001, 0x20700232, 0x00b201a0, 0x00000000 }, + { 0x00800001, 0x20800232, 0x00b200c0, 0x00000000 }, + { 0x00800001, 0x20900232, 0x00b201c0, 0x00000000 }, + { 0x00800001, 0x20a00232, 0x00b200e0, 0x00000000 }, + { 0x00800001, 0x20b00232, 0x00b201e0, 0x00000000 }, + { 0x00800001, 0x20c00232, 0x00b20100, 0x00000000 }, + { 0x00800001, 0x20d00232, 0x00b20200, 0x00000000 }, + { 0x00800001, 0x20e00232, 0x00b20120, 0x00000000 }, + { 0x00800001, 0x20f00232, 0x00b20220, 0x00000000 }, + { 0x00800001, 0x21000232, 0x00b20140, 0x00000000 }, + { 0x00800001, 0x21100232, 0x00b20240, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05902000 }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00200008, 0x20201c21, 0x00450e60, 0x00000001 }, + { 0x80800001, 0x426001b1, 0x00b10260, 0x00000000 }, + { 0x80800001, 0x428001b1, 0x00b10280, 0x00000000 }, + { 0x80800001, 0x42a001b1, 0x00b102a0, 0x00000000 }, + { 0x80800001, 0x42c001b1, 0x00b102c0, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b20260, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20280, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b202a0, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b202c0, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x80800001, 0x42e001b1, 0x00b102e0, 0x00000000 }, + { 0x80800001, 0x430001b1, 0x00b10300, 0x00000000 }, + { 0x80800001, 0x432001b1, 0x00b10320, 0x00000000 }, + { 0x80800001, 0x434001b1, 0x00b10340, 0x00000000 }, + { 0x00800001, 0x20200232, 0x00b202e0, 0x00000000 }, + { 0x00800001, 0x20300232, 0x00b20300, 0x00000000 }, + { 0x00800001, 0x20400232, 0x00b20320, 0x00000000 }, + { 0x00800001, 0x20500232, 0x00b20340, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/motion_field_uv.g4i b/driver/xf86-video-intel/src/xvmc/motion_field_uv.g4i new file mode 100644 index 000000000..464019740 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/motion_field_uv.g4i @@ -0,0 +1,46 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + and.z (1) null mv1<1,1,1>UW 2UW {align1}; + (f0) jmpi L1; + and.z (1) null mv2<1,1,1>UW 2UW {align1}; + (f0) jmpi L2; + include(`read_field_x1y1_uv.g4i') + jmpi L5; +L2: + include(`read_field_x1y0_uv.g4i') + jmpi L5; +L1: + and.z (1) null mv2<1,1,1>UW 2UW {align1}; + (f0) jmpi L4; + include(`read_field_x0y1_uv.g4i') + jmpi L5; +L4: + include(`read_field_x0y0_uv.g4i') +L5: + diff --git a/driver/xf86-video-intel/src/xvmc/motion_field_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/motion_field_uv_igd.g4i new file mode 100644 index 000000000..d4eba8483 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/motion_field_uv_igd.g4i @@ -0,0 +1,46 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + and.z (1) null mv1<1,1,1>UW 2UW {align1}; + (f0) jmpi L1; + and.z (1) null mv2<1,1,1>UW 2UW {align1}; + (f0) jmpi L2; + include(`read_field_x1y1_uv_igd.g4i') + jmpi L5; +L2: + include(`read_field_x1y0_uv_igd.g4i') + jmpi L5; +L1: + and.z (1) null mv2<1,1,1>UW 2UW {align1}; + (f0) jmpi L4; + include(`read_field_x0y1_uv_igd.g4i') + jmpi L5; +L4: + include(`read_field_x0y0_uv_igd.g4i') +L5: + diff --git a/driver/xf86-video-intel/src/xvmc/motion_field_y.g4i b/driver/xf86-video-intel/src/xvmc/motion_field_y.g4i new file mode 100644 index 000000000..06fa6cb62 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/motion_field_y.g4i @@ -0,0 +1,45 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + and.z (1) null mv1<1,1,1>UW 1UW {align1}; + (f0) jmpi L1; + and.z (1) null mv2<1,1,1>UW 1UW {align1}; + (f0) jmpi L2; + include(`read_field_x1y1_y.g4i') + jmpi L5; +L2: + include(`read_field_x1y0_y.g4i') + jmpi L5; +L1: + and.z (1) null mv2<1,1,1>UW 1UW {align1}; + (f0) jmpi L4; + include(`read_field_x0y1_y.g4i') + jmpi L5; +L4: + include(`read_field_x0y0_y.g4i') +L5: diff --git a/driver/xf86-video-intel/src/xvmc/motion_field_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/motion_field_y_igd.g4i new file mode 100644 index 000000000..bd55cb229 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/motion_field_y_igd.g4i @@ -0,0 +1,45 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + and.z (1) null mv1<1,1,1>UW 1UW {align1}; + (f0) jmpi L1; + and.z (1) null mv2<1,1,1>UW 1UW {align1}; + (f0) jmpi L2; + include(`read_field_x1y1_y_igd.g4i') + jmpi L5; +L2: + include(`read_field_x1y0_y_igd.g4i') + jmpi L5; +L1: + and.z (1) null mv2<1,1,1>UW 1UW {align1}; + (f0) jmpi L4; + include(`read_field_x0y1_y_igd.g4i') + jmpi L5; +L4: + include(`read_field_x0y0_y_igd.g4i') +L5: diff --git a/driver/xf86-video-intel/src/xvmc/motion_frame_uv.g4i b/driver/xf86-video-intel/src/xvmc/motion_frame_uv.g4i new file mode 100644 index 000000000..c027c903b --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/motion_frame_uv.g4i @@ -0,0 +1,29 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + */ + + include(`read_frame_x0y0_uv.g4i') diff --git a/driver/xf86-video-intel/src/xvmc/motion_frame_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/motion_frame_uv_igd.g4i new file mode 100644 index 000000000..2e359fd05 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/motion_frame_uv_igd.g4i @@ -0,0 +1,29 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + */ + + include(`read_frame_x0y0_uv_igd.g4i') diff --git a/driver/xf86-video-intel/src/xvmc/motion_frame_y.g4i b/driver/xf86-video-intel/src/xvmc/motion_frame_y.g4i new file mode 100644 index 000000000..f0b212f2a --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/motion_frame_y.g4i @@ -0,0 +1,57 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + */ + +/* if (motion_vect.x & 1) { + * if (motion_vect.y & 1) + * half_pixel in x and y; + * else + * half_pixel in x; + * } else { + * if (motion_vect.y & 1) + * half_pixel y; + * else + * full_pixel_read; + * } + */ + + and.z (1) null mv1<1,1,1>UW 1UD {align1}; + (f0) jmpi LL1; + and.z (1) null mv2<1,1,1>UW 1UD {align1}; + (f0) jmpi LL2; + include(`read_frame_x1y1_y.g4i') + jmpi LL5; +LL2: + include(`read_frame_x1y0_y.g4i') + jmpi LL5; +LL1: + and.z (1) null mv2<1,1,1>UW 1UD {align1}; + (f0) jmpi LL4; + include(`read_frame_x0y1_y.g4i') + jmpi LL5; +LL4: + include(`read_frame_x0y0_y.g4i') +LL5: + diff --git a/driver/xf86-video-intel/src/xvmc/motion_frame_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/motion_frame_y_igd.g4i new file mode 100644 index 000000000..911a8f40e --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/motion_frame_y_igd.g4i @@ -0,0 +1,57 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + */ + +/* if (motion_vect.x & 1) { + * if (motion_vect.y & 1) + * half_pixel in x and y; + * else + * half_pixel in x; + * } else { + * if (motion_vect.y & 1) + * half_pixel y; + * else + * full_pixel_read; + * } + */ + + and.z (1) null mv1<1,1,1>UW 1UD {align1}; + (f0) jmpi LL1; + and.z (1) null mv2<1,1,1>UW 1UD {align1}; + (f0) jmpi LL2; + include(`read_frame_x1y1_y_igd.g4i') + jmpi LL5; +LL2: + include(`read_frame_x1y0_y_igd.g4i') + jmpi LL5; +LL1: + and.z (1) null mv2<1,1,1>UW 1UD {align1}; + (f0) jmpi LL4; + include(`read_frame_x0y1_y_igd.g4i') + jmpi LL5; +LL4: + include(`read_frame_x0y0_y_igd.g4i') +LL5: + diff --git a/driver/xf86-video-intel/src/xvmc/null.g4a b/driver/xf86-video-intel/src/xvmc/null.g4a new file mode 100644 index 000000000..656984267 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/null.g4a @@ -0,0 +1,57 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * + */ +mov (8) g3.0<1>UD g1.0<8,8,1>UD {align1}; + +mov (16) g8.0<1>UD 0xFFFFFFFFUD {align1 compr}; + +mov(1) g1.8<1>UD 0x0070007UD { align1 }; +mov (16) m1<1>UD g8.0<8,8,1>UD {align1 compr}; + +/*Write 8x8 block to (x,y)*/ +send (16) 0 acc0<1>UW g1<8,8,1>UW write(0, 0, 2, 0) mlen 3 rlen 0 { align1 }; + +add (1) g1.0<1>UD g3.0<1,1,1>UD 0x8UD {align1}; +/*Write 8x8 block to (x+8,y)*/ +send (16) 0 acc0<1>UW g1<8,8,1>UW write(0, 0, 2, 0) mlen 3 rlen 0 { align1 }; + +add (1) g1.4<1>UD g3.4<1,1,1>UD 0x8UD {align1}; +/*Write 8x8 block to (x+8,y+8)*/ +send (16) 0 acc0<1>UW g1<8,8,1>UW write(0, 0, 2, 0) mlen 3 rlen 0 { align1 }; + +mov (1) g1.0<1>UD g3.0<1,1,1>UD {align1}; +/*Write 8x8 block to (x,y+8)*/ +send (16) 0 acc0<1>UW g1<8,8,1>UW write(0, 0, 2, 0) mlen 3 rlen 0 { align1 }; + +/*Fill U buffer & V buffer with 0x7F*/ +mov (16) m1<1>UD 0x7f7f7f7fUD {align1 compr}; +shr (1) g1.0<1>UD g3.0<1,1,1>UD 1D {align1}; +shr (1) g1.4<1>UD g3.4<1,1,1>UD 1D {align1}; +send (16) 0 acc0<1>UW g1<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 }; +send (16) 0 acc0<1>UW g1<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 }; + +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; diff --git a/driver/xf86-video-intel/src/xvmc/null.g4b b/driver/xf86-video-intel/src/xvmc/null.g4b new file mode 100644 index 000000000..960fda9aa --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/null.g4b @@ -0,0 +1,17 @@ + { 0x00600001, 0x20600021, 0x008d0020, 0x00000000 }, + { 0x00802001, 0x21000061, 0x00000000, 0xffffffff }, + { 0x00000001, 0x20280061, 0x00000000, 0x00070007 }, + { 0x00802001, 0x20200022, 0x008d0100, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00000040, 0x20200c21, 0x00210060, 0x00000008 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00000040, 0x20240c21, 0x00210064, 0x00000008 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00000001, 0x20200021, 0x00210060, 0x00000000 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302000 }, + { 0x00802001, 0x20200062, 0x00000000, 0x7f7f7f7f }, + { 0x00000008, 0x20201c21, 0x00210060, 0x00000001 }, + { 0x00000008, 0x20241c21, 0x00210064, 0x00000001 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302002 }, + { 0x00800031, 0x24001d28, 0x008d0020, 0x05302001 }, + { 0x00800031, 0x24001d28, 0x008d0000, 0x87100000 }, diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x0y0_uv.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x0y0_uv.g4i new file mode 100644 index 000000000..673b8cd37 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x0y0_uv.g4i @@ -0,0 +1,74 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x7000FUD {align1}; // 8*16/32=4 +send (16) 0 g86.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U +send (16) 0 g91.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V +and (1) g2.24<1>UD g115.0<1,1,1>UD 3UD {align1}; +mul (1) g2.24<1>UD g2.24<1,1,1>UD 9UD {align1}; +jmpi g2.24<1,1,1>D; + +mov (16) g78.0<1>UW g86.0<16,8,1>UB {align1}; +mov (16) g79.0<1>UW g87.0<16,8,1>UB {align1}; +mov (16) g80.0<1>UW g88.0<16,8,1>UB {align1}; +mov (16) g81.0<1>UW g89.0<16,8,1>UB {align1}; +mov (16) g82.0<1>UW g91.0<16,8,1>UB {align1}; +mov (16) g83.0<1>UW g92.0<16,8,1>UB {align1}; +mov (16) g84.0<1>UW g93.0<16,8,1>UB {align1}; +mov (16) g85.0<1>UW g94.0<16,8,1>UB {align1}; +jmpi out; + +mov (16) g78.0<1>UW g86.1<16,8,1>UB {align1}; +mov (16) g79.0<1>UW g87.1<16,8,1>UB {align1}; +mov (16) g80.0<1>UW g88.1<16,8,1>UB {align1}; +mov (16) g81.0<1>UW g89.1<16,8,1>UB {align1}; +mov (16) g82.0<1>UW g91.1<16,8,1>UB {align1}; +mov (16) g83.0<1>UW g92.1<16,8,1>UB {align1}; +mov (16) g84.0<1>UW g93.1<16,8,1>UB {align1}; +mov (16) g85.0<1>UW g94.1<16,8,1>UB {align1}; +jmpi out; + +mov (16) g78.0<1>UW g86.2<16,8,1>UB {align1}; +mov (16) g79.0<1>UW g87.2<16,8,1>UB {align1}; +mov (16) g80.0<1>UW g88.2<16,8,1>UB {align1}; +mov (16) g81.0<1>UW g89.2<16,8,1>UB {align1}; +mov (16) g82.0<1>UW g91.2<16,8,1>UB {align1}; +mov (16) g83.0<1>UW g92.2<16,8,1>UB {align1}; +mov (16) g84.0<1>UW g93.2<16,8,1>UB {align1}; +mov (16) g85.0<1>UW g94.2<16,8,1>UB {align1}; +jmpi out; + +mov (16) g78.0<1>UW g86.3<16,8,1>UB {align1}; +mov (16) g79.0<1>UW g87.3<16,8,1>UB {align1}; +mov (16) g80.0<1>UW g88.3<16,8,1>UB {align1}; +mov (16) g81.0<1>UW g89.3<16,8,1>UB {align1}; +mov (16) g82.0<1>UW g91.3<16,8,1>UB {align1}; +mov (16) g83.0<1>UW g92.3<16,8,1>UB {align1}; +mov (16) g84.0<1>UW g93.3<16,8,1>UB {align1}; +mov (16) g85.0<1>UW g94.3<16,8,1>UB {align1}; +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x0y0_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x0y0_uv_igd.g4i new file mode 100644 index 000000000..c03a83d77 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x0y0_uv_igd.g4i @@ -0,0 +1,40 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x7000FUD {align1}; // 8*16/32=4 +send (16) 0 g86.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U +send (16) 0 g91.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V + +mov (16) g78.0<1>UW g86.0<16,8,1>UB {align1}; +mov (16) g79.0<1>UW g87.0<16,8,1>UB {align1}; +mov (16) g80.0<1>UW g88.0<16,8,1>UB {align1}; +mov (16) g81.0<1>UW g89.0<16,8,1>UB {align1}; +mov (16) g82.0<1>UW g91.0<16,8,1>UB {align1}; +mov (16) g83.0<1>UW g92.0<16,8,1>UB {align1}; +mov (16) g84.0<1>UW g93.0<16,8,1>UB {align1}; +mov (16) g85.0<1>UW g94.0<16,8,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x0y0_y.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x0y0_y.g4i new file mode 100644 index 000000000..8f4e339c0 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x0y0_y.g4i @@ -0,0 +1,83 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x01FUD {align1}; +send (16) 0 g78.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g80.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g82.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g84.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +mov (1) g115.8<1>UD 0x07001FUD {align1}; +send (16) 0 g86.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1}; +and (1) g2.24<1>UD g115.0<1,1,1>UD 3UD {align1}; +mul (1) g2.24<1>UD g2.24<1,1,1>UD 9UD {align1}; +jmpi g2.24<1,1,1>D; + +mov (16) g96.0<1>UW g78.0<16,16,1>UB {align1}; +mov (16) g97.0<1>UW g80.0<16,16,1>UB {align1}; +mov (16) g98.0<1>UW g82.0<16,16,1>UB {align1}; +mov (16) g99.0<1>UW g84.0<16,16,1>UB {align1}; +mov (16) g100.0<1>UW g86.0<16,16,1>UB {align1}; +mov (16) g101.0<1>UW g88.0<16,16,1>UB {align1}; +mov (16) g102.0<1>UW g90.0<16,16,1>UB {align1}; +mov (16) g103.0<1>UW g92.0<16,16,1>UB {align1}; +jmpi out; + +mov (16) g96.0<1>UW g78.1<16,16,1>UB {align1}; +mov (16) g97.0<1>UW g80.1<16,16,1>UB {align1}; +mov (16) g98.0<1>UW g82.1<16,16,1>UB {align1}; +mov (16) g99.0<1>UW g84.1<16,16,1>UB {align1}; +mov (16) g100.0<1>UW g86.1<16,16,1>UB {align1}; +mov (16) g101.0<1>UW g88.1<16,16,1>UB {align1}; +mov (16) g102.0<1>UW g90.1<16,16,1>UB {align1}; +mov (16) g103.0<1>UW g92.1<16,16,1>UB {align1}; +jmpi out; + +mov (16) g96.0<1>UW g78.2<16,16,1>UB {align1}; +mov (16) g97.0<1>UW g80.2<16,16,1>UB {align1}; +mov (16) g98.0<1>UW g82.2<16,16,1>UB {align1}; +mov (16) g99.0<1>UW g84.2<16,16,1>UB {align1}; +mov (16) g100.0<1>UW g86.2<16,16,1>UB {align1}; +mov (16) g101.0<1>UW g88.2<16,16,1>UB {align1}; +mov (16) g102.0<1>UW g90.2<16,16,1>UB {align1}; +mov (16) g103.0<1>UW g92.2<16,16,1>UB {align1}; +jmpi out; + +mov (16) g96.0<1>UW g78.3<16,16,1>UB {align1}; +mov (16) g97.0<1>UW g80.3<16,16,1>UB {align1}; +mov (16) g98.0<1>UW g82.3<16,16,1>UB {align1}; +mov (16) g99.0<1>UW g84.3<16,16,1>UB {align1}; +mov (16) g100.0<1>UW g86.3<16,16,1>UB {align1}; +mov (16) g101.0<1>UW g88.3<16,16,1>UB {align1}; +mov (16) g102.0<1>UW g90.3<16,16,1>UB {align1}; +mov (16) g103.0<1>UW g92.3<16,16,1>UB {align1}; + +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x0y0_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x0y0_y_igd.g4i new file mode 100644 index 000000000..294cfb4d8 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x0y0_y_igd.g4i @@ -0,0 +1,48 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x01FUD {align1}; +send (16) 0 g78.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g80.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g82.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g84.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +mov (1) g115.8<1>UD 0x07001FUD {align1}; +send (16) 0 g86.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1}; + +mov (16) g96.0<1>UW g78.0<16,16,1>UB {align1}; +mov (16) g97.0<1>UW g80.0<16,16,1>UB {align1}; +mov (16) g98.0<1>UW g82.0<16,16,1>UB {align1}; +mov (16) g99.0<1>UW g84.0<16,16,1>UB {align1}; +mov (16) g100.0<1>UW g86.0<16,16,1>UB {align1}; +mov (16) g101.0<1>UW g88.0<16,16,1>UB {align1}; +mov (16) g102.0<1>UW g90.0<16,16,1>UB {align1}; +mov (16) g103.0<1>UW g92.0<16,16,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x0y1_uv.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x0y1_uv.g4i new file mode 100644 index 000000000..1be4fd29a --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x0y1_uv.g4i @@ -0,0 +1,78 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x07000FUD {align1}; // 8*16/32=4 +send (16) 0 g86.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U +send (16) 0 g91.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V +mov (1) g115.8<1>UD 0xFUD {align1}; +send (16) 0 g90.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1}; +send (16) 0 g95.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1}; +and (1) g2.24<1>UD g115.0<1,1,1>UD 3UD {align1}; +mul (1) g2.24<1>UD g2.24<1,1,1>UD 9UD {align1}; +jmpi g2.24<1,1,1>D; + +avg.sat (16) g78.0<1>UW g86.0<16,8,1>UB g87.0<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.0<16,8,1>UB g88.0<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.0<16,8,1>UB g89.0<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.0<16,8,1>UB g90.0<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.0<16,8,1>UB g92.0<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.0<16,8,1>UB g93.0<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.0<16,8,1>UB g94.0<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.0<16,8,1>UB g95.0<16,8,1>UB {align1}; +jmpi out; + +avg.sat (16) g78.0<1>UW g86.1<16,8,1>UB g87.1<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.1<16,8,1>UB g88.1<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.1<16,8,1>UB g89.1<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.1<16,8,1>UB g90.1<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.1<16,8,1>UB g92.1<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.1<16,8,1>UB g93.1<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.1<16,8,1>UB g94.1<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.1<16,8,1>UB g95.1<16,8,1>UB {align1}; +jmpi out; + +avg.sat (16) g78.0<1>UW g86.2<16,8,1>UB g87.2<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.2<16,8,1>UB g88.2<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.2<16,8,1>UB g89.2<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.2<16,8,1>UB g90.2<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.2<16,8,1>UB g92.2<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.2<16,8,1>UB g93.2<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.2<16,8,1>UB g94.2<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.2<16,8,1>UB g95.2<16,8,1>UB {align1}; +jmpi out; + +avg.sat (16) g78.0<1>UW g86.3<16,8,1>UB g86.3<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.3<16,8,1>UB g87.3<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.3<16,8,1>UB g88.3<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.3<16,8,1>UB g89.3<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.3<16,8,1>UB g91.3<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.3<16,8,1>UB g92.3<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.3<16,8,1>UB g93.3<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.3<16,8,1>UB g94.3<16,8,1>UB {align1}; + +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x0y1_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x0y1_uv_igd.g4i new file mode 100644 index 000000000..9e8efa0ab --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x0y1_uv_igd.g4i @@ -0,0 +1,43 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x07000FUD {align1}; // 8*16/32=4 +send (16) 0 g86.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U +send (16) 0 g91.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V +mov (1) g115.8<1>UD 0xFUD {align1}; +send (16) 0 g90.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1}; +send (16) 0 g95.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1}; + +avg.sat (16) g78.0<1>UW g86.0<16,8,1>UB g87.0<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.0<16,8,1>UB g88.0<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.0<16,8,1>UB g89.0<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.0<16,8,1>UB g90.0<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.0<16,8,1>UB g92.0<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.0<16,8,1>UB g93.0<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.0<16,8,1>UB g94.0<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.0<16,8,1>UB g95.0<16,8,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x0y1_y.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x0y1_y.g4i new file mode 100644 index 000000000..a15a22182 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x0y1_y.g4i @@ -0,0 +1,86 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x01FUD {align1}; +send (16) 0 g78.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g80.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g82.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g84.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +mov (1) g115.8<1>UD 0x07001FUD {align1}; +send (16) 0 g86.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1}; +mov (1) g115.8<1>UD 0x1FUD {align1}; +send (16) 0 g94.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +and (1) g2.24<1>UD g115.0<1,1,1>UD 3UD {align1}; +mul (1) g2.24<1>UD g2.24<1,1,1>UD 9UD {align1}; +jmpi g2.24<1,1,1>D; + +avg.sat (16) g96.0<1>UW g78.0<16,16,1>UB g80.0<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.0<16,16,1>UB g82.0<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.0<16,16,1>UB g84.0<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.0<16,16,1>UB g86.0<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.0<16,16,1>UB g88.0<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.0<16,16,1>UB g90.0<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.0<16,16,1>UB g92.0<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.0<16,16,1>UB g94.0<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g96.0<1>UW g78.1<16,16,1>UB g80.1<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.1<16,16,1>UB g82.1<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.1<16,16,1>UB g84.1<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.1<16,16,1>UB g86.1<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.1<16,16,1>UB g88.1<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.1<16,16,1>UB g90.1<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.1<16,16,1>UB g92.1<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.1<16,16,1>UB g94.1<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g96.0<1>UW g78.2<16,16,1>UB g80.2<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.2<16,16,1>UB g82.2<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.2<16,16,1>UB g84.2<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.2<16,16,1>UB g86.2<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.2<16,16,1>UB g88.2<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.2<16,16,1>UB g90.2<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.2<16,16,1>UB g92.2<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.2<16,16,1>UB g94.2<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g96.0<1>UW g78.3<16,16,1>UB g80.3<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.3<16,16,1>UB g82.3<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.3<16,16,1>UB g84.3<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.3<16,16,1>UB g86.3<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.3<16,16,1>UB g88.3<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.3<16,16,1>UB g90.3<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.3<16,16,1>UB g92.3<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.3<16,16,1>UB g94.3<16,16,1>UB {align1}; + +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x0y1_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x0y1_y_igd.g4i new file mode 100644 index 000000000..e48211b64 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x0y1_y_igd.g4i @@ -0,0 +1,51 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x01FUD {align1}; +send (16) 0 g78.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g80.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g82.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g84.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +mov (1) g115.8<1>UD 0x07001FUD {align1}; +send (16) 0 g86.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1}; +mov (1) g115.8<1>UD 0x1FUD {align1}; +send (16) 0 g94.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; + +avg.sat (16) g96.0<1>UW g78.0<16,16,1>UB g80.0<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.0<16,16,1>UB g82.0<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.0<16,16,1>UB g84.0<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.0<16,16,1>UB g86.0<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.0<16,16,1>UB g88.0<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.0<16,16,1>UB g90.0<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.0<16,16,1>UB g92.0<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.0<16,16,1>UB g94.0<16,16,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x1y0_uv.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x1y0_uv.g4i new file mode 100644 index 000000000..e89a2dc23 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x1y0_uv.g4i @@ -0,0 +1,75 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x07000FUD {align1}; // 8*16/32=4 +send (16) 0 g86.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U +send (16) 0 g91.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V +and (1) g2.24<1>UD g115.0<1,1,1>UD 3UD {align1}; +mul (1) g2.24<1>UD g2.24<1,1,1>UD 9UD {align1}; +jmpi g2.24<1,1,1>D; + +avg.sat (16) g78.0<1>UW g86.0<16,8,1>UB g86.1<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.0<16,8,1>UB g87.1<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.0<16,8,1>UB g88.1<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.0<16,8,1>UB g89.1<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.0<16,8,1>UB g91.1<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.0<16,8,1>UB g92.1<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.0<16,8,1>UB g93.1<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.0<16,8,1>UB g94.1<16,8,1>UB {align1}; +jmpi out; + +avg.sat (16) g78.0<1>UW g86.1<16,8,1>UB g86.2<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.1<16,8,1>UB g87.2<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.1<16,8,1>UB g88.2<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.1<16,8,1>UB g89.2<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.1<16,8,1>UB g91.2<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.1<16,8,1>UB g92.2<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.1<16,8,1>UB g93.2<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.1<16,8,1>UB g94.2<16,8,1>UB {align1}; +jmpi out; + +avg.sat (16) g78.0<1>UW g86.2<16,8,1>UB g86.3<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.2<16,8,1>UB g87.3<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.2<16,8,1>UB g88.3<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.2<16,8,1>UB g89.3<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.2<16,8,1>UB g91.3<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.2<16,8,1>UB g92.3<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.2<16,8,1>UB g93.3<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.2<16,8,1>UB g94.3<16,8,1>UB {align1}; +jmpi out; + +avg.sat (16) g78.0<1>UW g86.3<16,8,1>UB g86.4<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.3<16,8,1>UB g87.4<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.3<16,8,1>UB g88.4<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.3<16,8,1>UB g89.4<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.3<16,8,1>UB g91.4<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.3<16,8,1>UB g92.4<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.3<16,8,1>UB g93.4<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.3<16,8,1>UB g94.4<16,8,1>UB {align1}; + +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x1y0_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x1y0_uv_igd.g4i new file mode 100644 index 000000000..fc56acce5 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x1y0_uv_igd.g4i @@ -0,0 +1,40 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x07000FUD {align1}; // 8*16/32=4 +send (16) 0 g86.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U +send (16) 0 g91.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V + +avg.sat (16) g78.0<1>UW g86.0<16,8,1>UB g86.1<16,8,1>UB {align1}; +avg.sat (16) g79.0<1>UW g87.0<16,8,1>UB g87.1<16,8,1>UB {align1}; +avg.sat (16) g80.0<1>UW g88.0<16,8,1>UB g88.1<16,8,1>UB {align1}; +avg.sat (16) g81.0<1>UW g89.0<16,8,1>UB g89.1<16,8,1>UB {align1}; +avg.sat (16) g82.0<1>UW g91.0<16,8,1>UB g91.1<16,8,1>UB {align1}; +avg.sat (16) g83.0<1>UW g92.0<16,8,1>UB g92.1<16,8,1>UB {align1}; +avg.sat (16) g84.0<1>UW g93.0<16,8,1>UB g93.1<16,8,1>UB {align1}; +avg.sat (16) g85.0<1>UW g94.0<16,8,1>UB g94.1<16,8,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x1y0_y.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x1y0_y.g4i new file mode 100644 index 000000000..a517aaa84 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x1y0_y.g4i @@ -0,0 +1,83 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x01FUD {align1}; +send (16) 0 g78.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g80.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g82.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g84.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +mov (1) g115.8<1>UD 0x07001FUD {align1}; +send (16) 0 g86.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1}; +and (1) g2.24<1>UD g115.0<1,1,1>UD 3UD {align1}; +mul (1) g2.24<1>UD g2.24<1,1,1>UD 9UD {align1}; +jmpi g2.24<1,1,1>D; + +avg.sat (16) g96.0<1>UW g78.0<16,16,1>UB g78.1<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.0<16,16,1>UB g80.1<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.0<16,16,1>UB g82.1<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.0<16,16,1>UB g84.1<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.0<16,16,1>UB g86.1<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.0<16,16,1>UB g88.1<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.0<16,16,1>UB g90.1<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.0<16,16,1>UB g92.1<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g96.0<1>UW g78.1<16,16,1>UB g78.2<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.1<16,16,1>UB g80.2<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.1<16,16,1>UB g82.2<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.1<16,16,1>UB g84.2<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.1<16,16,1>UB g86.2<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.1<16,16,1>UB g88.2<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.1<16,16,1>UB g90.2<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.1<16,16,1>UB g92.2<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g96.0<1>UW g78.2<16,16,1>UB g78.3<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.2<16,16,1>UB g80.3<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.2<16,16,1>UB g82.3<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.2<16,16,1>UB g84.3<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.2<16,16,1>UB g86.3<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.2<16,16,1>UB g88.3<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.2<16,16,1>UB g90.3<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.2<16,16,1>UB g92.3<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g96.0<1>UW g78.3<16,16,1>UB g78.4<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.3<16,16,1>UB g80.4<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.3<16,16,1>UB g82.4<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.3<16,16,1>UB g84.4<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.3<16,16,1>UB g86.4<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.3<16,16,1>UB g88.4<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.3<16,16,1>UB g90.4<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.3<16,16,1>UB g92.4<16,16,1>UB {align1}; + +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x1y0_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x1y0_y_igd.g4i new file mode 100644 index 000000000..14394cab8 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x1y0_y_igd.g4i @@ -0,0 +1,48 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x01FUD {align1}; +send (16) 0 g78.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g80.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g82.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g84.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +mov (1) g115.8<1>UD 0x07001FUD {align1}; +send (16) 0 g86.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1}; + +avg.sat (16) g96.0<1>UW g78.0<16,16,1>UB g78.1<16,16,1>UB {align1}; +avg.sat (16) g97.0<1>UW g80.0<16,16,1>UB g80.1<16,16,1>UB {align1}; +avg.sat (16) g98.0<1>UW g82.0<16,16,1>UB g82.1<16,16,1>UB {align1}; +avg.sat (16) g99.0<1>UW g84.0<16,16,1>UB g84.1<16,16,1>UB {align1}; +avg.sat (16) g100.0<1>UW g86.0<16,16,1>UB g86.1<16,16,1>UB {align1}; +avg.sat (16) g101.0<1>UW g88.0<16,16,1>UB g88.1<16,16,1>UB {align1}; +avg.sat (16) g102.0<1>UW g90.0<16,16,1>UB g90.1<16,16,1>UB {align1}; +avg.sat (16) g103.0<1>UW g92.0<16,16,1>UB g92.1<16,16,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x1y1_uv.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x1y1_uv.g4i new file mode 100644 index 000000000..162de9a2b --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x1y1_uv.g4i @@ -0,0 +1,172 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x07000FUD {align1}; +send (16) 0 g86.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U +send (16) 0 g91.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V +and (1) g2.24<1>UD g115.0<1,1,1>UD 3UD {align1}; +mul (1) g2.24<1>UD g2.24<1,1,1>UD 25UD {align1}; +mov (1) g115.8<1>UD 0x01000FUD {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1}; +send (16) 0 g90.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1}; +send (16) 0 g95.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1}; +jmpi g2.24<1,1,1>D; +//U +add (16) g78.0<1>UW g86.0<16,8,1>UB g87.0<16,8,1>UB {align1}; +add (16) g79.0<1>UW g87.0<16,8,1>UB g88.0<16,8,1>UB {align1}; +add (16) g80.0<1>UW g88.0<16,8,1>UB g89.0<16,8,1>UB {align1}; +add (16) g81.0<1>UW g89.0<16,8,1>UB g90.0<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g86.1<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g87.1<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g88.1<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g89.1<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g87.1<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g88.1<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g89.1<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g90.1<16,8,1>UB {align1}; +//V +add (16) g82.0<1>UW g91.0<16,8,1>UB g92.0<16,8,1>UB {align1}; +add (16) g83.0<1>UW g92.0<16,8,1>UB g93.0<16,8,1>UB {align1}; +add (16) g84.0<1>UW g93.0<16,8,1>UB g94.0<16,8,1>UB {align1}; +add (16) g85.0<1>UW g94.0<16,8,1>UB g95.0<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g91.1<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g92.1<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g93.1<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g94.1<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g92.1<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g93.1<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g94.1<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g95.1<16,8,1>UB {align1}; +jmpi out; +//U +add (16) g78.0<1>UW g86.1<16,8,1>UB g87.1<16,8,1>UB {align1}; +add (16) g79.0<1>UW g87.1<16,8,1>UB g88.1<16,8,1>UB {align1}; +add (16) g80.0<1>UW g88.1<16,8,1>UB g89.1<16,8,1>UB {align1}; +add (16) g81.0<1>UW g89.1<16,8,1>UB g90.1<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g86.2<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g87.2<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g88.2<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g89.2<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g87.2<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g88.2<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g89.2<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g90.2<16,8,1>UB {align1}; +//V +add (16) g82.0<1>UW g91.1<16,8,1>UB g92.1<16,8,1>UB {align1}; +add (16) g83.0<1>UW g92.1<16,8,1>UB g93.1<16,8,1>UB {align1}; +add (16) g84.0<1>UW g93.1<16,8,1>UB g94.1<16,8,1>UB {align1}; +add (16) g85.0<1>UW g94.1<16,8,1>UB g95.1<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g91.2<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g92.2<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g93.2<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g94.2<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g92.2<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g93.2<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g94.2<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g95.2<16,8,1>UB {align1}; +jmpi out; +//U +add (16) g78.0<1>UW g86.2<16,8,1>UB g87.2<16,8,1>UB {align1}; +add (16) g79.0<1>UW g87.2<16,8,1>UB g88.2<16,8,1>UB {align1}; +add (16) g80.0<1>UW g88.2<16,8,1>UB g89.2<16,8,1>UB {align1}; +add (16) g81.0<1>UW g89.2<16,8,1>UB g90.2<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g86.3<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g87.3<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g88.3<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g89.3<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g87.3<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g88.3<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g89.3<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g90.3<16,8,1>UB {align1}; +//V +add (16) g82.0<1>UW g91.2<16,8,1>UB g92.2<16,8,1>UB {align1}; +add (16) g83.0<1>UW g92.2<16,8,1>UB g93.2<16,8,1>UB {align1}; +add (16) g84.0<1>UW g93.2<16,8,1>UB g94.2<16,8,1>UB {align1}; +add (16) g85.0<1>UW g94.2<16,8,1>UB g95.2<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g91.3<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g92.3<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g93.3<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g94.3<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g92.3<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g93.3<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g94.3<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g95.3<16,8,1>UB {align1}; +jmpi out; +//U +add (16) g78.0<1>UW g86.3<16,8,1>UB g87.3<16,8,1>UB {align1}; +add (16) g79.0<1>UW g87.3<16,8,1>UB g88.3<16,8,1>UB {align1}; +add (16) g80.0<1>UW g88.3<16,8,1>UB g89.3<16,8,1>UB {align1}; +add (16) g81.0<1>UW g89.3<16,8,1>UB g90.3<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g86.4<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g87.4<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g88.4<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g89.4<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g87.4<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g88.4<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g89.4<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g90.4<16,8,1>UB {align1}; +//V +add (16) g82.0<1>UW g91.3<16,8,1>UB g92.3<16,8,1>UB {align1}; +add (16) g83.0<1>UW g92.3<16,8,1>UB g93.3<16,8,1>UB {align1}; +add (16) g84.0<1>UW g93.3<16,8,1>UB g94.3<16,8,1>UB {align1}; +add (16) g85.0<1>UW g94.3<16,8,1>UB g95.3<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g91.4<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g92.4<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g93.4<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g94.4<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g92.4<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g93.4<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g94.4<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g95.4<16,8,1>UB {align1}; + +out: +shr.sat (16) g78.0<1>UW g78.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g79.0<1>UW g79.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g80.0<1>UW g80.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g81.0<1>UW g81.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g82.0<1>UW g82.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g83.0<1>UW g83.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g84.0<1>UW g84.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g85.0<1>UW g85.0<16,16,1>UW 2UW {align1}; + diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x1y1_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x1y1_uv_igd.g4i new file mode 100644 index 000000000..10f48c8b7 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x1y1_uv_igd.g4i @@ -0,0 +1,75 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x07000FUD {align1}; +send (16) 0 g86.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 4 {align1};//U +send (16) 0 g91.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 4 {align1};//V +mov (1) g115.8<1>UD 0x01000FUD {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1}; +send (16) 0 g90.0<1>UW g115<16,8,1>UW read(surface_u, 2, 0, 2) mlen 1 rlen 1 {align1}; +send (16) 0 g95.0<1>UW g115<16,8,1>UW read(surface_v, 2, 0, 2) mlen 1 rlen 1 {align1}; +//U +add (16) g78.0<1>UW g86.0<16,8,1>UB g87.0<16,8,1>UB {align1}; +add (16) g79.0<1>UW g87.0<16,8,1>UB g88.0<16,8,1>UB {align1}; +add (16) g80.0<1>UW g88.0<16,8,1>UB g89.0<16,8,1>UB {align1}; +add (16) g81.0<1>UW g89.0<16,8,1>UB g90.0<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g86.1<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g87.1<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g88.1<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g89.1<16,8,1>UB {align1}; + +add (16) g78.0<1>UW g78.0<16,8,1>UW g87.1<16,8,1>UB {align1}; +add (16) g79.0<1>UW g79.0<16,8,1>UW g88.1<16,8,1>UB {align1}; +add (16) g80.0<1>UW g80.0<16,8,1>UW g89.1<16,8,1>UB {align1}; +add (16) g81.0<1>UW g81.0<16,8,1>UW g90.1<16,8,1>UB {align1}; +//V +add (16) g82.0<1>UW g91.0<16,8,1>UB g92.0<16,8,1>UB {align1}; +add (16) g83.0<1>UW g92.0<16,8,1>UB g93.0<16,8,1>UB {align1}; +add (16) g84.0<1>UW g93.0<16,8,1>UB g94.0<16,8,1>UB {align1}; +add (16) g85.0<1>UW g94.0<16,8,1>UB g95.0<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g91.1<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g92.1<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g93.1<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g94.1<16,8,1>UB {align1}; + +add (16) g82.0<1>UW g82.0<16,8,1>UW g92.1<16,8,1>UB {align1}; +add (16) g83.0<1>UW g83.0<16,8,1>UW g93.1<16,8,1>UB {align1}; +add (16) g84.0<1>UW g84.0<16,8,1>UW g94.1<16,8,1>UB {align1}; +add (16) g85.0<1>UW g85.0<16,8,1>UW g95.1<16,8,1>UB {align1}; + +shr.sat (16) g78.0<1>UW g78.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g79.0<1>UW g79.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g80.0<1>UW g80.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g81.0<1>UW g81.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g82.0<1>UW g82.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g83.0<1>UW g83.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g84.0<1>UW g84.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g85.0<1>UW g85.0<16,16,1>UW 2UW {align1}; + diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x1y1_y.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x1y1_y.g4i new file mode 100644 index 000000000..7c017012e --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x1y1_y.g4i @@ -0,0 +1,166 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x01FUD {align1}; +send (16) 0 g78.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g80.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g82.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g84.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +mov (1) g115.8<1>UD 0x07001FUD {align1}; +send (16) 0 g86.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1}; +mov (1) g115.8<1>UD 0x1FUD {align1}; +send (16) 0 g94.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +and (1) g2.24<1>UD g115.0<1,1,1>UD 3UD {align1}; +mul (1) g2.24<1>UD g2.24<1,1,1>UD 25UD {align1}; +jmpi g2.24<1,1,1>D; + +add (16) g96.0<1>UW g78.0<16,16,1>UB g80.0<16,16,1>UB {align1}; +add (16) g97.0<1>UW g80.0<16,16,1>UB g82.0<16,16,1>UB {align1}; +add (16) g98.0<1>UW g82.0<16,16,1>UB g84.0<16,16,1>UB {align1}; +add (16) g99.0<1>UW g84.0<16,16,1>UB g86.0<16,16,1>UB {align1}; +add (16) g100.0<1>UW g86.0<16,16,1>UB g88.0<16,16,1>UB {align1}; +add (16) g101.0<1>UW g88.0<16,16,1>UB g90.0<16,16,1>UB {align1}; +add (16) g102.0<1>UW g90.0<16,16,1>UB g92.0<16,16,1>UB {align1}; +add (16) g103.0<1>UW g92.0<16,16,1>UB g94.0<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g78.1<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g80.1<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g82.1<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g84.1<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g86.1<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g88.1<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g90.1<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g92.1<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g80.1<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g82.1<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g84.1<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g86.1<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g88.1<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g90.1<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g92.1<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g94.1<16,16,1>UB {align1}; +jmpi out; + +add (16) g96.0<1>UW g78.1<16,16,1>UB g80.1<16,16,1>UB {align1}; +add (16) g97.0<1>UW g80.1<16,16,1>UB g82.1<16,16,1>UB {align1}; +add (16) g98.0<1>UW g82.1<16,16,1>UB g84.1<16,16,1>UB {align1}; +add (16) g99.0<1>UW g84.1<16,16,1>UB g86.1<16,16,1>UB {align1}; +add (16) g100.0<1>UW g86.1<16,16,1>UB g88.1<16,16,1>UB {align1}; +add (16) g101.0<1>UW g88.1<16,16,1>UB g90.1<16,16,1>UB {align1}; +add (16) g102.0<1>UW g90.1<16,16,1>UB g92.1<16,16,1>UB {align1}; +add (16) g103.0<1>UW g92.1<16,16,1>UB g94.1<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g78.2<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g80.2<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g82.2<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g84.2<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g86.2<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g88.2<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g90.2<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g92.2<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g80.2<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g82.2<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g84.2<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g86.2<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g88.2<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g90.2<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g92.2<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g94.2<16,16,1>UB {align1}; +jmpi out; + +add (16) g96.0<1>UW g78.2<16,16,1>UB g80.2<16,16,1>UB {align1}; +add (16) g97.0<1>UW g80.2<16,16,1>UB g82.2<16,16,1>UB {align1}; +add (16) g98.0<1>UW g82.2<16,16,1>UB g84.2<16,16,1>UB {align1}; +add (16) g99.0<1>UW g84.2<16,16,1>UB g86.2<16,16,1>UB {align1}; +add (16) g100.0<1>UW g86.2<16,16,1>UB g88.2<16,16,1>UB {align1}; +add (16) g101.0<1>UW g88.2<16,16,1>UB g90.2<16,16,1>UB {align1}; +add (16) g102.0<1>UW g90.2<16,16,1>UB g92.2<16,16,1>UB {align1}; +add (16) g103.0<1>UW g92.2<16,16,1>UB g94.2<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g78.3<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g80.3<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g82.3<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g84.3<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g86.3<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g88.3<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g90.3<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g92.3<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g80.3<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g82.3<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g84.3<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g86.3<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g88.3<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g90.3<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g92.3<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g94.3<16,16,1>UB {align1}; +jmpi out; + +add (16) g96.0<1>UW g78.3<16,16,1>UB g80.3<16,16,1>UB {align1}; +add (16) g97.0<1>UW g80.3<16,16,1>UB g82.3<16,16,1>UB {align1}; +add (16) g98.0<1>UW g82.3<16,16,1>UB g84.3<16,16,1>UB {align1}; +add (16) g99.0<1>UW g84.3<16,16,1>UB g86.3<16,16,1>UB {align1}; +add (16) g100.0<1>UW g86.3<16,16,1>UB g88.3<16,16,1>UB {align1}; +add (16) g101.0<1>UW g88.3<16,16,1>UB g90.3<16,16,1>UB {align1}; +add (16) g102.0<1>UW g90.3<16,16,1>UB g92.3<16,16,1>UB {align1}; +add (16) g103.0<1>UW g92.3<16,16,1>UB g94.3<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g78.4<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g80.4<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g82.4<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g84.4<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g86.4<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g88.4<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g90.4<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g92.4<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g80.4<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g82.4<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g84.4<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g86.4<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g88.4<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g90.4<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g92.4<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g94.4<16,16,1>UB {align1}; + +out: +shr (16) g96.0<1>UW g96.0<16,16,1>UW 2UW {align1}; +shr (16) g97.0<1>UW g97.0<16,16,1>UW 2UW {align1}; +shr (16) g98.0<1>UW g98.0<16,16,1>UW 2UW {align1}; +shr (16) g99.0<1>UW g99.0<16,16,1>UW 2UW {align1}; +shr (16) g100.0<1>UW g100.0<16,16,1>UW 2UW {align1}; +shr (16) g101.0<1>UW g101.0<16,16,1>UW 2UW {align1}; +shr (16) g102.0<1>UW g102.0<16,16,1>UW 2UW {align1}; +shr (16) g103.0<1>UW g103.0<16,16,1>UW 2UW {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_field_x1y1_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_field_x1y1_y_igd.g4i new file mode 100644 index 000000000..39526c89e --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_field_x1y1_y_igd.g4i @@ -0,0 +1,78 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g115.8<1>UD 0x01FUD {align1}; +send (16) 0 g78.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g80.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g82.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +send (16) 0 g84.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 2UD {align1}; +mov (1) g115.8<1>UD 0x07001FUD {align1}; +send (16) 0 g86.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 8 {align1}; +add (1) g115.4<1>UD g115.4<1,1,1>UD 8UD {align1}; +mov (1) g115.8<1>UD 0x1FUD {align1}; +send (16) 0 g94.0<1>UW g115<8,8,1>UW read(surface,2,0,2) mlen 1 rlen 1 {align1}; + +add (16) g96.0<1>UW g78.0<16,16,1>UB g80.0<16,16,1>UB {align1}; +add (16) g97.0<1>UW g80.0<16,16,1>UB g82.0<16,16,1>UB {align1}; +add (16) g98.0<1>UW g82.0<16,16,1>UB g84.0<16,16,1>UB {align1}; +add (16) g99.0<1>UW g84.0<16,16,1>UB g86.0<16,16,1>UB {align1}; +add (16) g100.0<1>UW g86.0<16,16,1>UB g88.0<16,16,1>UB {align1}; +add (16) g101.0<1>UW g88.0<16,16,1>UB g90.0<16,16,1>UB {align1}; +add (16) g102.0<1>UW g90.0<16,16,1>UB g92.0<16,16,1>UB {align1}; +add (16) g103.0<1>UW g92.0<16,16,1>UB g94.0<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g78.1<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g80.1<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g82.1<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g84.1<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g86.1<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g88.1<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g90.1<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g92.1<16,16,1>UB {align1}; + +add (16) g96.0<1>UW g96.0<16,16,1>UW g80.1<16,16,1>UB {align1}; +add (16) g97.0<1>UW g97.0<16,16,1>UW g82.1<16,16,1>UB {align1}; +add (16) g98.0<1>UW g98.0<16,16,1>UW g84.1<16,16,1>UB {align1}; +add (16) g99.0<1>UW g99.0<16,16,1>UW g86.1<16,16,1>UB {align1}; +add (16) g100.0<1>UW g100.0<16,16,1>UW g88.1<16,16,1>UB {align1}; +add (16) g101.0<1>UW g101.0<16,16,1>UW g90.1<16,16,1>UB {align1}; +add (16) g102.0<1>UW g102.0<16,16,1>UW g92.1<16,16,1>UB {align1}; +add (16) g103.0<1>UW g103.0<16,16,1>UW g94.1<16,16,1>UB {align1}; + +shr (16) g96.0<1>UW g96.0<16,16,1>UW 2UW {align1}; +shr (16) g97.0<1>UW g97.0<16,16,1>UW 2UW {align1}; +shr (16) g98.0<1>UW g98.0<16,16,1>UW 2UW {align1}; +shr (16) g99.0<1>UW g99.0<16,16,1>UW 2UW {align1}; +shr (16) g100.0<1>UW g100.0<16,16,1>UW 2UW {align1}; +shr (16) g101.0<1>UW g101.0<16,16,1>UW 2UW {align1}; +shr (16) g102.0<1>UW g102.0<16,16,1>UW 2UW {align1}; +shr (16) g103.0<1>UW g103.0<16,16,1>UW 2UW {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_uv.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_uv.g4i new file mode 100644 index 000000000..43f77a8f3 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_uv.g4i @@ -0,0 +1,73 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +and (1) g2.24<1>UD g2.0<1,1,1>UD 0x3UD {align1}; +send (16) 0 g86.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1}; +send (16) 0 g90.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1}; +mul(1) g2.24<1>UD g2.24<1,1,1>UD 0x9UD {align1}; +jmpi g2.24<1,1,1>D; + +mov (16) g44.0<1>UW g86.0<16,8,1>UB {align1}; +mov (16) g45.0<1>UW g87.0<16,8,1>UB {align1}; +mov (16) g46.0<1>UW g88.0<16,8,1>UB {align1}; +mov (16) g47.0<1>UW g89.0<16,8,1>UB {align1}; +mov (16) g48.0<1>UW g90.0<16,8,1>UB {align1}; +mov (16) g49.0<1>UW g91.0<16,8,1>UB {align1}; +mov (16) g50.0<1>UW g92.0<16,8,1>UB {align1}; +mov (16) g51.0<1>UW g93.0<16,8,1>UB {align1}; +jmpi out; + +mov (16) g44.0<1>UW g86.1<16,8,1>UB {align1}; +mov (16) g45.0<1>UW g87.1<16,8,1>UB {align1}; +mov (16) g46.0<1>UW g88.1<16,8,1>UB {align1}; +mov (16) g47.0<1>UW g89.1<16,8,1>UB {align1}; +mov (16) g48.0<1>UW g90.1<16,8,1>UB {align1}; +mov (16) g49.0<1>UW g91.1<16,8,1>UB {align1}; +mov (16) g50.0<1>UW g92.1<16,8,1>UB {align1}; +mov (16) g51.0<1>UW g93.1<16,8,1>UB {align1}; +jmpi out; + +mov (16) g44.0<1>UW g86.2<16,8,1>UB {align1}; +mov (16) g45.0<1>UW g87.2<16,8,1>UB {align1}; +mov (16) g46.0<1>UW g88.2<16,8,1>UB {align1}; +mov (16) g47.0<1>UW g89.2<16,8,1>UB {align1}; +mov (16) g48.0<1>UW g90.2<16,8,1>UB {align1}; +mov (16) g49.0<1>UW g91.2<16,8,1>UB {align1}; +mov (16) g50.0<1>UW g92.2<16,8,1>UB {align1}; +mov (16) g51.0<1>UW g93.2<16,8,1>UB {align1}; +jmpi out; + +mov (16) g44.0<1>UW g86.3<16,8,1>UB {align1}; +mov (16) g45.0<1>UW g87.3<16,8,1>UB {align1}; +mov (16) g46.0<1>UW g88.3<16,8,1>UB {align1}; +mov (16) g47.0<1>UW g89.3<16,8,1>UB {align1}; +mov (16) g48.0<1>UW g90.3<16,8,1>UB {align1}; +mov (16) g49.0<1>UW g91.3<16,8,1>UB {align1}; +mov (16) g50.0<1>UW g92.3<16,8,1>UB {align1}; +mov (16) g51.0<1>UW g93.3<16,8,1>UB {align1}; +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_uv_igd.g4i new file mode 100644 index 000000000..d522d0ef2 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_uv_igd.g4i @@ -0,0 +1,39 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +send (16) 0 g86.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1}; +send (16) 0 g90.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1}; + +mov (16) g44.0<1>UW g86.0<16,8,1>UB {align1}; +mov (16) g45.0<1>UW g87.0<16,8,1>UB {align1}; +mov (16) g46.0<1>UW g88.0<16,8,1>UB {align1}; +mov (16) g47.0<1>UW g89.0<16,8,1>UB {align1}; +mov (16) g48.0<1>UW g90.0<16,8,1>UB {align1}; +mov (16) g49.0<1>UW g91.0<16,8,1>UB {align1}; +mov (16) g50.0<1>UW g92.0<16,8,1>UB {align1}; +mov (16) g51.0<1>UW g93.0<16,8,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_y.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_y.g4i new file mode 100644 index 000000000..20f577d6b --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_y.g4i @@ -0,0 +1,109 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g2.8<1>UD 0x007001FUD {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g106.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + +and (1) g2.24<1>UD g2.0<1,1,1>UD 3UD {align1}; +mul(1) g2.24<1>UD g2.24<1,1,1>UD 17UD {align1}; +jmpi g2.24<1,1,1>D; + +mov (16) g28.0<1>UW g98.0<16,16,1>UB {align1}; +mov (16) g29.0<1>UW g99.0<16,16,1>UB {align1}; +mov (16) g30.0<1>UW g100.0<16,16,1>UB {align1}; +mov (16) g31.0<1>UW g101.0<16,16,1>UB {align1}; +mov (16) g32.0<1>UW g102.0<16,16,1>UB {align1}; +mov (16) g33.0<1>UW g103.0<16,16,1>UB {align1}; +mov (16) g34.0<1>UW g104.0<16,16,1>UB {align1}; +mov (16) g35.0<1>UW g105.0<16,16,1>UB {align1}; +mov (16) g36.0<1>UW g106.0<16,16,1>UB {align1}; +mov (16) g37.0<1>UW g107.0<16,16,1>UB {align1}; +mov (16) g38.0<1>UW g108.0<16,16,1>UB {align1}; +mov (16) g39.0<1>UW g109.0<16,16,1>UB {align1}; +mov (16) g40.0<1>UW g110.0<16,16,1>UB {align1}; +mov (16) g41.0<1>UW g111.0<16,16,1>UB {align1}; +mov (16) g42.0<1>UW g112.0<16,16,1>UB {align1}; +mov (16) g43.0<1>UW g113.0<16,16,1>UB {align1}; +jmpi out; + +mov (16) g28.0<1>UW g98.1<16,16,1>UB {align1}; +mov (16) g29.0<1>UW g99.1<16,16,1>UB {align1}; +mov (16) g30.0<1>UW g100.1<16,16,1>UB {align1}; +mov (16) g31.0<1>UW g101.1<16,16,1>UB {align1}; +mov (16) g32.0<1>UW g102.1<16,16,1>UB {align1}; +mov (16) g33.0<1>UW g103.1<16,16,1>UB {align1}; +mov (16) g34.0<1>UW g104.1<16,16,1>UB {align1}; +mov (16) g35.0<1>UW g105.1<16,16,1>UB {align1}; +mov (16) g36.0<1>UW g106.1<16,16,1>UB {align1}; +mov (16) g37.0<1>UW g107.1<16,16,1>UB {align1}; +mov (16) g38.0<1>UW g108.1<16,16,1>UB {align1}; +mov (16) g39.0<1>UW g109.1<16,16,1>UB {align1}; +mov (16) g40.0<1>UW g110.1<16,16,1>UB {align1}; +mov (16) g41.0<1>UW g111.1<16,16,1>UB {align1}; +mov (16) g42.0<1>UW g112.1<16,16,1>UB {align1}; +mov (16) g43.0<1>UW g113.1<16,16,1>UB {align1}; +jmpi out; + +mov (16) g28.0<1>UW g98.2<16,16,1>UB {align1}; +mov (16) g29.0<1>UW g99.2<16,16,1>UB {align1}; +mov (16) g30.0<1>UW g100.2<16,16,1>UB {align1}; +mov (16) g31.0<1>UW g101.2<16,16,1>UB {align1}; +mov (16) g32.0<1>UW g102.2<16,16,1>UB {align1}; +mov (16) g33.0<1>UW g103.2<16,16,1>UB {align1}; +mov (16) g34.0<1>UW g104.2<16,16,1>UB {align1}; +mov (16) g35.0<1>UW g105.2<16,16,1>UB {align1}; +mov (16) g36.0<1>UW g106.2<16,16,1>UB {align1}; +mov (16) g37.0<1>UW g107.2<16,16,1>UB {align1}; +mov (16) g38.0<1>UW g108.2<16,16,1>UB {align1}; +mov (16) g39.0<1>UW g109.2<16,16,1>UB {align1}; +mov (16) g40.0<1>UW g110.2<16,16,1>UB {align1}; +mov (16) g41.0<1>UW g111.2<16,16,1>UB {align1}; +mov (16) g42.0<1>UW g112.2<16,16,1>UB {align1}; +mov (16) g43.0<1>UW g113.2<16,16,1>UB {align1}; +jmpi out; + +mov (16) g28.0<1>UW g98.3<16,16,1>UB {align1}; +mov (16) g29.0<1>UW g99.3<16,16,1>UB {align1}; +mov (16) g30.0<1>UW g100.3<16,16,1>UB {align1}; +mov (16) g31.0<1>UW g101.3<16,16,1>UB {align1}; +mov (16) g32.0<1>UW g102.3<16,16,1>UB {align1}; +mov (16) g33.0<1>UW g103.3<16,16,1>UB {align1}; +mov (16) g34.0<1>UW g104.3<16,16,1>UB {align1}; +mov (16) g35.0<1>UW g105.3<16,16,1>UB {align1}; +mov (16) g36.0<1>UW g106.3<16,16,1>UB {align1}; +mov (16) g37.0<1>UW g107.3<16,16,1>UB {align1}; +mov (16) g38.0<1>UW g108.3<16,16,1>UB {align1}; +mov (16) g39.0<1>UW g109.3<16,16,1>UB {align1}; +mov (16) g40.0<1>UW g110.3<16,16,1>UB {align1}; +mov (16) g41.0<1>UW g111.3<16,16,1>UB {align1}; +mov (16) g42.0<1>UW g112.3<16,16,1>UB {align1}; +mov (16) g43.0<1>UW g113.3<16,16,1>UB {align1}; + +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_y_igd.g4i new file mode 100644 index 000000000..6191abf13 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x0y0_y_igd.g4i @@ -0,0 +1,50 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g2.8<1>UD 0x007001FUD {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g106.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + + +mov (16) g28.0<1>UW g98.0<16,16,1>UB {align1}; +mov (16) g29.0<1>UW g99.0<16,16,1>UB {align1}; +mov (16) g30.0<1>UW g100.0<16,16,1>UB {align1}; +mov (16) g31.0<1>UW g101.0<16,16,1>UB {align1}; +mov (16) g32.0<1>UW g102.0<16,16,1>UB {align1}; +mov (16) g33.0<1>UW g103.0<16,16,1>UB {align1}; +mov (16) g34.0<1>UW g104.0<16,16,1>UB {align1}; +mov (16) g35.0<1>UW g105.0<16,16,1>UB {align1}; +mov (16) g36.0<1>UW g106.0<16,16,1>UB {align1}; +mov (16) g37.0<1>UW g107.0<16,16,1>UB {align1}; +mov (16) g38.0<1>UW g108.0<16,16,1>UB {align1}; +mov (16) g39.0<1>UW g109.0<16,16,1>UB {align1}; +mov (16) g40.0<1>UW g110.0<16,16,1>UB {align1}; +mov (16) g41.0<1>UW g111.0<16,16,1>UB {align1}; +mov (16) g42.0<1>UW g112.0<16,16,1>UB {align1}; +mov (16) g43.0<1>UW g113.0<16,16,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_uv.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_uv.g4i new file mode 100644 index 000000000..58bebbc07 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_uv.g4i @@ -0,0 +1,79 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDINg BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINgEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIgHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAgES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +and (1) g2.24<1>UD g2.0<1,1,1>UD 0x3UD {align1}; +send (16) 0 g86.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1}; +send (16) 0 g94.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1}; +mov (1) g2.8<1>UD 0x01001FUD {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g90.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 1 {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 1 {align1}; +mov (1) g2.8<1>UD 0x007000fUD {align1}; +mul(1) g2.24<1>UD g2.24<1,1,1>UD 0x9UD {align1}; +jmpi g2.24<1,1,1>D; + +avg.sat (16) g44.0<1>UW g86.0<16,8,1>UB g87.0<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.0<16,8,1>UB g88.0<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.0<16,8,1>UB g89.0<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.0<16,8,1>UB g90.0<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g94.0<16,8,1>UB g95.0<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g95.0<16,8,1>UB g96.0<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g96.0<16,8,1>UB g97.0<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g97.0<16,8,1>UB g98.0<16,8,1>UB{align1}; +jmpi out; + +avg.sat (16) g44.0<1>UW g86.1<16,8,1>UB g87.1<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.1<16,8,1>UB g88.1<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.1<16,8,1>UB g89.1<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.1<16,8,1>UB g90.1<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g94.1<16,8,1>UB g95.1<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g95.1<16,8,1>UB g96.1<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g96.1<16,8,1>UB g97.1<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g97.1<16,8,1>UB g98.1<16,8,1>UB{align1}; +jmpi out; + +avg.sat (16) g44.0<1>UW g86.2<16,8,1>UB g87.2<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.2<16,8,1>UB g88.2<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.2<16,8,1>UB g89.2<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.2<16,8,1>UB g90.2<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g94.2<16,8,1>UB g95.2<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g95.2<16,8,1>UB g96.2<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g96.2<16,8,1>UB g97.2<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g97.2<16,8,1>UB g98.2<16,8,1>UB{align1}; +jmpi out; + +avg.sat (16) g44.0<1>UW g86.3<16,8,1>UB g87.3<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.3<16,8,1>UB g88.3<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.3<16,8,1>UB g89.3<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.3<16,8,1>UB g90.3<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g94.3<16,8,1>UB g95.3<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g95.3<16,8,1>UB g96.3<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g96.3<16,8,1>UB g97.3<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g97.3<16,8,1>UB g98.3<16,8,1>UB{align1}; + +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_uv_igd.g4i new file mode 100644 index 000000000..7240b3f2e --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_uv_igd.g4i @@ -0,0 +1,44 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDINg BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINgEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIgHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAgES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +send (16) 0 g86.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1}; +send (16) 0 g94.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1}; +mov (1) g2.8<1>UD 0x01001FUD {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g90.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 1 {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 1 {align1}; +mov (1) g2.8<1>UD 0x007000fUD {align1}; + +avg.sat (16) g44.0<1>UW g86.0<16,8,1>UB g87.0<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.0<16,8,1>UB g88.0<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.0<16,8,1>UB g89.0<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.0<16,8,1>UB g90.0<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g94.0<16,8,1>UB g95.0<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g95.0<16,8,1>UB g96.0<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g96.0<16,8,1>UB g97.0<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g97.0<16,8,1>UB g98.0<16,8,1>UB{align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_y.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_y.g4i new file mode 100644 index 000000000..bbc0d7875 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_y.g4i @@ -0,0 +1,113 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g2.8<1>UD 0x007001FUD {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + +and (1) g2.24<1>UD g2.0<1,1,1>UD 3UD {align1}; +mul(1) g2.24<1>UD g2.24<1,1,1>UD 17UD {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g106.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +mov (1) g2.8<1>UD 0x1FUD {align1}; +send (16) 0 g120.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 1 {align1}; + +jmpi g2.24<1,1,1>D; + +avg.sat (16) g28.0<1>UW g98.0<16,16,1>UB g99.0<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.0<16,16,1>UB g100.0<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.0<16,16,1>UB g101.0<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.0<16,16,1>UB g102.0<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.0<16,16,1>UB g103.0<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.0<16,16,1>UB g104.0<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.0<16,16,1>UB g105.0<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.0<16,16,1>UB g106.0<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.0<16,16,1>UB g107.0<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.0<16,16,1>UB g108.0<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.0<16,16,1>UB g109.0<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.0<16,16,1>UB g110.0<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.0<16,16,1>UB g111.0<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.0<16,16,1>UB g112.0<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.0<16,16,1>UB g113.0<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.0<16,16,1>UB g120.0<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g28.0<1>UW g98.1<16,16,1>UB g99.1<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.1<16,16,1>UB g100.1<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.1<16,16,1>UB g101.1<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.1<16,16,1>UB g102.1<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.1<16,16,1>UB g103.1<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.1<16,16,1>UB g104.1<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.1<16,16,1>UB g105.1<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.1<16,16,1>UB g106.1<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.1<16,16,1>UB g107.1<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.1<16,16,1>UB g108.1<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.1<16,16,1>UB g109.1<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.1<16,16,1>UB g110.1<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.1<16,16,1>UB g111.1<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.1<16,16,1>UB g112.1<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.1<16,16,1>UB g113.1<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.1<16,16,1>UB g120.1<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g28.0<1>UW g98.2<16,16,1>UB g99.2<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.2<16,16,1>UB g100.2<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.2<16,16,1>UB g101.2<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.2<16,16,1>UB g102.2<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.2<16,16,1>UB g103.2<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.2<16,16,1>UB g104.2<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.2<16,16,1>UB g105.2<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.2<16,16,1>UB g106.2<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.2<16,16,1>UB g107.2<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.2<16,16,1>UB g108.2<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.2<16,16,1>UB g109.2<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.2<16,16,1>UB g110.2<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.2<16,16,1>UB g111.2<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.2<16,16,1>UB g112.2<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.2<16,16,1>UB g113.2<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.2<16,16,1>UB g120.2<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g28.0<1>UW g98.3<16,16,1>UB g99.3<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.3<16,16,1>UB g100.3<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.3<16,16,1>UB g101.3<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.3<16,16,1>UB g102.3<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.3<16,16,1>UB g103.3<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.3<16,16,1>UB g104.3<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.3<16,16,1>UB g105.3<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.3<16,16,1>UB g106.3<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.3<16,16,1>UB g107.3<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.3<16,16,1>UB g108.3<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.3<16,16,1>UB g109.3<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.3<16,16,1>UB g110.3<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.3<16,16,1>UB g111.3<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.3<16,16,1>UB g112.3<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.3<16,16,1>UB g113.3<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.3<16,16,1>UB g120.3<16,16,1>UB {align1}; + +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_y_igd.g4i new file mode 100644 index 000000000..106296bb0 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x0y1_y_igd.g4i @@ -0,0 +1,54 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g2.8<1>UD 0x007001FUD {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g106.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +mov (1) g2.8<1>UD 0x1FUD {align1}; +send (16) 0 g120.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 1 {align1}; + + +avg.sat (16) g28.0<1>UW g98.0<16,16,1>UB g99.0<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.0<16,16,1>UB g100.0<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.0<16,16,1>UB g101.0<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.0<16,16,1>UB g102.0<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.0<16,16,1>UB g103.0<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.0<16,16,1>UB g104.0<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.0<16,16,1>UB g105.0<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.0<16,16,1>UB g106.0<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.0<16,16,1>UB g107.0<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.0<16,16,1>UB g108.0<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.0<16,16,1>UB g109.0<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.0<16,16,1>UB g110.0<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.0<16,16,1>UB g111.0<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.0<16,16,1>UB g112.0<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.0<16,16,1>UB g113.0<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.0<16,16,1>UB g120.0<16,16,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_uv.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_uv.g4i new file mode 100644 index 000000000..bed4abe5d --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_uv.g4i @@ -0,0 +1,75 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + +mov (1) g2.8<1>UD 0x007000FUD {align1}; +and (1) g2.24<1>UD g2.0<1,1,1>UD 0x3UD {align1}; +send (16) 0 g86.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1}; +send (16) 0 g90.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1}; +mul(1) g2.24<1>UD g2.24<1,1,1>UD 0x9UD {align1}; +jmpi g2.24<1,1,1>D; + +avg.sat (16) g44.0<1>UW g86.0<16,8,1>UB g86.1<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.0<16,8,1>UB g87.1<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.0<16,8,1>UB g88.1<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.0<16,8,1>UB g89.1<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g90.0<16,8,1>UB g90.1<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g91.0<16,8,1>UB g91.1<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g92.0<16,8,1>UB g92.1<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g93.0<16,8,1>UB g93.1<16,8,1>UB{align1}; +jmpi out; + +avg.sat (16) g44.0<1>UW g86.1<16,8,1>UB g86.2<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.1<16,8,1>UB g87.2<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.1<16,8,1>UB g88.2<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.1<16,8,1>UB g89.2<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g90.1<16,8,1>UB g90.2<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g91.1<16,8,1>UB g91.2<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g92.1<16,8,1>UB g92.2<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g93.1<16,8,1>UB g93.2<16,8,1>UB{align1}; +jmpi out; + +avg.sat (16) g44.0<1>UW g86.2<16,8,1>UB g86.3<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.2<16,8,1>UB g87.3<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.2<16,8,1>UB g88.3<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.2<16,8,1>UB g89.3<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g90.2<16,8,1>UB g90.3<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g91.2<16,8,1>UB g91.3<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g92.2<16,8,1>UB g92.3<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g93.2<16,8,1>UB g93.3<16,8,1>UB{align1}; +jmpi out; + +avg.sat (16) g44.0<1>UW g86.3<16,8,1>UB g86.4<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.3<16,8,1>UB g87.4<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.3<16,8,1>UB g88.4<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.3<16,8,1>UB g89.4<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g90.3<16,8,1>UB g90.4<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g91.3<16,8,1>UB g91.4<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g92.3<16,8,1>UB g92.4<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g93.3<16,8,1>UB g93.4<16,8,1>UB{align1}; +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_uv_igd.g4i new file mode 100644 index 000000000..c63e8ecd3 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_uv_igd.g4i @@ -0,0 +1,41 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ + +mov (1) g2.8<1>UD 0x007000FUD {align1}; +send (16) 0 g86.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1}; +send (16) 0 g90.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1}; + +avg.sat (16) g44.0<1>UW g86.0<16,8,1>UB g86.1<16,8,1>UB{align1}; +avg.sat (16) g45.0<1>UW g87.0<16,8,1>UB g87.1<16,8,1>UB{align1}; +avg.sat (16) g46.0<1>UW g88.0<16,8,1>UB g88.1<16,8,1>UB{align1}; +avg.sat (16) g47.0<1>UW g89.0<16,8,1>UB g89.1<16,8,1>UB{align1}; +avg.sat (16) g48.0<1>UW g90.0<16,8,1>UB g90.1<16,8,1>UB{align1}; +avg.sat (16) g49.0<1>UW g91.0<16,8,1>UB g91.1<16,8,1>UB{align1}; +avg.sat (16) g50.0<1>UW g92.0<16,8,1>UB g92.1<16,8,1>UB{align1}; +avg.sat (16) g51.0<1>UW g93.0<16,8,1>UB g93.1<16,8,1>UB{align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_y.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_y.g4i new file mode 100644 index 000000000..3af3e085b --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_y.g4i @@ -0,0 +1,110 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g2.8<1>UD 0x007001FUD {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + +and (1) g2.24<1>UD g2.0<1,1,1>UD 3UD {align1}; +mul(1) g2.24<1>UD g2.24<1,1,1>UD 17D {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g106.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + +jmpi g2.24<1,1,1>D; + +avg.sat (16) g28.0<1>UW g98.0<16,16,1>UB g98.1<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.0<16,16,1>UB g99.1<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.0<16,16,1>UB g100.1<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.0<16,16,1>UB g101.1<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.0<16,16,1>UB g102.1<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.0<16,16,1>UB g103.1<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.0<16,16,1>UB g104.1<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.0<16,16,1>UB g105.1<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.0<16,16,1>UB g106.1<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.0<16,16,1>UB g107.1<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.0<16,16,1>UB g108.1<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.0<16,16,1>UB g109.1<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.0<16,16,1>UB g110.1<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.0<16,16,1>UB g111.1<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.0<16,16,1>UB g112.1<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.0<16,16,1>UB g113.1<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g28.0<1>UW g98.1<16,16,1>UB g98.2<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.1<16,16,1>UB g99.2<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.1<16,16,1>UB g100.2<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.1<16,16,1>UB g101.2<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.1<16,16,1>UB g102.2<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.1<16,16,1>UB g103.2<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.1<16,16,1>UB g104.2<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.1<16,16,1>UB g105.2<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.1<16,16,1>UB g106.2<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.1<16,16,1>UB g107.2<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.1<16,16,1>UB g108.2<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.1<16,16,1>UB g109.2<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.1<16,16,1>UB g110.2<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.1<16,16,1>UB g111.2<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.1<16,16,1>UB g112.2<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.1<16,16,1>UB g113.2<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g28.0<1>UW g98.2<16,16,1>UB g98.3<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.2<16,16,1>UB g99.3<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.2<16,16,1>UB g100.3<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.2<16,16,1>UB g101.3<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.2<16,16,1>UB g102.3<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.2<16,16,1>UB g103.3<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.2<16,16,1>UB g104.3<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.2<16,16,1>UB g105.3<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.2<16,16,1>UB g106.3<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.2<16,16,1>UB g107.3<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.2<16,16,1>UB g108.3<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.2<16,16,1>UB g109.3<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.2<16,16,1>UB g110.3<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.2<16,16,1>UB g111.3<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.2<16,16,1>UB g112.3<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.2<16,16,1>UB g113.3<16,16,1>UB {align1}; +jmpi out; + +avg.sat (16) g28.0<1>UW g98.3<16,16,1>UB g98.4<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.3<16,16,1>UB g99.4<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.3<16,16,1>UB g100.4<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.3<16,16,1>UB g101.4<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.3<16,16,1>UB g102.4<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.3<16,16,1>UB g103.4<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.3<16,16,1>UB g104.4<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.3<16,16,1>UB g105.4<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.3<16,16,1>UB g106.4<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.3<16,16,1>UB g107.4<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.3<16,16,1>UB g108.4<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.3<16,16,1>UB g109.4<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.3<16,16,1>UB g110.4<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.3<16,16,1>UB g111.4<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.3<16,16,1>UB g112.4<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.3<16,16,1>UB g113.4<16,16,1>UB {align1}; + +out: diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_y_igd.g4i new file mode 100644 index 000000000..03ee54bd0 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x1y0_y_igd.g4i @@ -0,0 +1,51 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g2.8<1>UD 0x007001FUD {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g106.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + + +avg.sat (16) g28.0<1>UW g98.0<16,16,1>UB g98.1<16,16,1>UB {align1}; +avg.sat (16) g29.0<1>UW g99.0<16,16,1>UB g99.1<16,16,1>UB {align1}; +avg.sat (16) g30.0<1>UW g100.0<16,16,1>UB g100.1<16,16,1>UB {align1}; +avg.sat (16) g31.0<1>UW g101.0<16,16,1>UB g101.1<16,16,1>UB {align1}; +avg.sat (16) g32.0<1>UW g102.0<16,16,1>UB g102.1<16,16,1>UB {align1}; +avg.sat (16) g33.0<1>UW g103.0<16,16,1>UB g103.1<16,16,1>UB {align1}; +avg.sat (16) g34.0<1>UW g104.0<16,16,1>UB g104.1<16,16,1>UB {align1}; +avg.sat (16) g35.0<1>UW g105.0<16,16,1>UB g105.1<16,16,1>UB {align1}; +avg.sat (16) g36.0<1>UW g106.0<16,16,1>UB g106.1<16,16,1>UB {align1}; +avg.sat (16) g37.0<1>UW g107.0<16,16,1>UB g107.1<16,16,1>UB {align1}; +avg.sat (16) g38.0<1>UW g108.0<16,16,1>UB g108.1<16,16,1>UB {align1}; +avg.sat (16) g39.0<1>UW g109.0<16,16,1>UB g109.1<16,16,1>UB {align1}; +avg.sat (16) g40.0<1>UW g110.0<16,16,1>UB g110.1<16,16,1>UB {align1}; +avg.sat (16) g41.0<1>UW g111.0<16,16,1>UB g111.1<16,16,1>UB {align1}; +avg.sat (16) g42.0<1>UW g112.0<16,16,1>UB g112.1<16,16,1>UB {align1}; +avg.sat (16) g43.0<1>UW g113.0<16,16,1>UB g113.1<16,16,1>UB {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_uv.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_uv.g4i new file mode 100644 index 000000000..d124d2988 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_uv.g4i @@ -0,0 +1,159 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +and (1) g2.24<1>UD g2.0<1,1,1>UD 0x3UD {align1}; +send (16) 0 g86.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1}; +send (16) 0 g94.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1}; +mov (1) g2.8<1>UD 0x01001FUD {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8D {align1}; +send (16) 0 g90.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 1 {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 1 {align1}; +mov (1) g2.8<1>UD 0x007000fUD {align1}; +mul(1) g2.24<1>UD g2.24<1,1,1>UD 25UD {align1}; +jmpi g2.24<1,1,1>D; + +add (16) g44.0<1>UW g86.0<16,8,1>UB g86.1<16,8,1>UB{align1}; +add (16) g45.0<1>UW g87.0<16,8,1>UB g87.1<16,8,1>UB{align1}; +add (16) g46.0<1>UW g88.0<16,8,1>UB g88.1<16,8,1>UB{align1}; +add (16) g47.0<1>UW g89.0<16,8,1>UB g89.1<16,8,1>UB{align1}; +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.0<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.0<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.0<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.0<16,8,1>UB{align1}; + +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.1<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.1<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.1<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.1<16,8,1>UB{align1}; +add (16) g48.0<1>UW g94.0<16,8,1>UB g95.0<16,8,1>UB{align1}; +add (16) g49.0<1>UW g95.0<16,8,1>UB g96.0<16,8,1>UB{align1}; +add (16) g50.0<1>UW g96.0<16,8,1>UB g97.0<16,8,1>UB{align1}; +add (16) g51.0<1>UW g97.0<16,8,1>UB g98.0<16,8,1>UB{align1}; + +add (16) g48.0<1>UW g48.0<16,16,1>UW g94.1<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g95.1<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g96.1<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g97.1<16,8,1>UB{align1}; +add (16) g48.0<1>UW g48.0<16,16,1>UW g95.1<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g96.1<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g97.1<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g98.1<16,8,1>UB{align1}; +jmpi out; + +add (16) g44.0<1>UW g86.1<16,8,1>UB g86.2<16,8,1>UB{align1}; +add (16) g45.0<1>UW g87.1<16,8,1>UB g87.2<16,8,1>UB{align1}; +add (16) g46.0<1>UW g88.1<16,8,1>UB g88.2<16,8,1>UB{align1}; +add (16) g47.0<1>UW g89.1<16,8,1>UB g89.2<16,8,1>UB{align1}; +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.1<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.1<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.1<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.1<16,8,1>UB{align1}; + +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.2<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.2<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.2<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.2<16,8,1>UB{align1}; +add (16) g48.0<1>UW g94.1<16,8,1>UB g95.1<16,8,1>UB{align1}; +add (16) g49.0<1>UW g95.1<16,8,1>UB g96.1<16,8,1>UB{align1}; +add (16) g50.0<1>UW g96.1<16,8,1>UB g97.1<16,8,1>UB{align1}; +add (16) g51.0<1>UW g97.1<16,8,1>UB g98.1<16,8,1>UB{align1}; + +add (16) g48.0<1>UW g48.0<16,16,1>UW g94.2<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g95.2<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g96.2<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g97.2<16,8,1>UB{align1}; +add (16) g48.0<1>UW g48.0<16,16,1>UW g95.2<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g96.2<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g97.2<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g98.2<16,8,1>UB{align1}; +jmpi out; + +add (16) g44.0<1>UW g86.2<16,8,1>UB g86.3<16,8,1>UB{align1}; +add (16) g45.0<1>UW g87.2<16,8,1>UB g87.3<16,8,1>UB{align1}; +add (16) g46.0<1>UW g88.2<16,8,1>UB g88.3<16,8,1>UB{align1}; +add (16) g47.0<1>UW g89.2<16,8,1>UB g89.3<16,8,1>UB{align1}; +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.2<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.2<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.2<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.2<16,8,1>UB{align1}; + +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.3<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.3<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.3<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.3<16,8,1>UB{align1}; +add (16) g48.0<1>UW g94.2<16,8,1>UB g95.2<16,8,1>UB{align1}; +add (16) g49.0<1>UW g95.2<16,8,1>UB g96.2<16,8,1>UB{align1}; +add (16) g50.0<1>UW g96.2<16,8,1>UB g97.2<16,8,1>UB{align1}; +add (16) g51.0<1>UW g97.2<16,8,1>UB g98.2<16,8,1>UB{align1}; + +add (16) g48.0<1>UW g48.0<16,16,1>UW g94.3<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g95.3<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g96.3<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g97.3<16,8,1>UB{align1}; +add (16) g48.0<1>UW g48.0<16,16,1>UW g95.3<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g96.3<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g97.3<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g98.3<16,8,1>UB{align1}; +jmpi out; + +add (16) g44.0<1>UW g86.3<16,8,1>UB g86.4<16,8,1>UB{align1}; +add (16) g45.0<1>UW g87.3<16,8,1>UB g87.4<16,8,1>UB{align1}; +add (16) g46.0<1>UW g88.3<16,8,1>UB g88.4<16,8,1>UB{align1}; +add (16) g47.0<1>UW g89.3<16,8,1>UB g89.4<16,8,1>UB{align1}; +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.3<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.3<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.3<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.3<16,8,1>UB{align1}; + +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.4<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.4<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.4<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.4<16,8,1>UB{align1}; +add (16) g48.0<1>UW g94.3<16,8,1>UB g95.3<16,8,1>UB{align1}; +add (16) g49.0<1>UW g95.3<16,8,1>UB g96.3<16,8,1>UB{align1}; +add (16) g50.0<1>UW g96.3<16,8,1>UB g97.3<16,8,1>UB{align1}; +add (16) g51.0<1>UW g97.3<16,8,1>UB g98.3<16,8,1>UB{align1}; + +add (16) g48.0<1>UW g48.0<16,16,1>UW g94.4<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g95.4<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g96.4<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g97.4<16,8,1>UB{align1}; +add (16) g48.0<1>UW g48.0<16,16,1>UW g95.4<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g96.4<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g97.4<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g98.4<16,8,1>UB{align1}; +out: + +shr.sat (16) g44.0<1>UW g44.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g45.0<1>UW g45.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g46.0<1>UW g46.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g47.0<1>UW g47.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g48.0<1>UW g48.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g49.0<1>UW g49.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g50.0<1>UW g50.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g51.0<1>UW g51.0<16,16,1>UW 2UW {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_uv_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_uv_igd.g4i new file mode 100644 index 000000000..96aada87a --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_uv_igd.g4i @@ -0,0 +1,71 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +send (16) 0 g86.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 4 {align1}; +send (16) 0 g94.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 4 {align1}; +mov (1) g2.8<1>UD 0x01001FUD {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8D {align1}; +send (16) 0 g90.0<1>UW g2<8,8,1>UW read(input_surface1, 2, 0, 2) mlen 1 rlen 1 {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface2, 2, 0, 2) mlen 1 rlen 1 {align1}; +mov (1) g2.8<1>UD 0x007000fUD {align1}; + +add (16) g44.0<1>UW g86.0<16,8,1>UB g86.1<16,8,1>UB{align1}; +add (16) g45.0<1>UW g87.0<16,8,1>UB g87.1<16,8,1>UB{align1}; +add (16) g46.0<1>UW g88.0<16,8,1>UB g88.1<16,8,1>UB{align1}; +add (16) g47.0<1>UW g89.0<16,8,1>UB g89.1<16,8,1>UB{align1}; +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.0<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.0<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.0<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.0<16,8,1>UB{align1}; + +add (16) g44.0<1>UW g44.0<16,16,1>UW g87.1<16,8,1>UB{align1}; +add (16) g45.0<1>UW g45.0<16,16,1>UW g88.1<16,8,1>UB{align1}; +add (16) g46.0<1>UW g46.0<16,16,1>UW g89.1<16,8,1>UB{align1}; +add (16) g47.0<1>UW g47.0<16,16,1>UW g90.1<16,8,1>UB{align1}; +add (16) g48.0<1>UW g94.0<16,8,1>UB g95.0<16,8,1>UB{align1}; +add (16) g49.0<1>UW g95.0<16,8,1>UB g96.0<16,8,1>UB{align1}; +add (16) g50.0<1>UW g96.0<16,8,1>UB g97.0<16,8,1>UB{align1}; +add (16) g51.0<1>UW g97.0<16,8,1>UB g98.0<16,8,1>UB{align1}; + +add (16) g48.0<1>UW g48.0<16,16,1>UW g94.1<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g95.1<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g96.1<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g97.1<16,8,1>UB{align1}; +add (16) g48.0<1>UW g48.0<16,16,1>UW g95.1<16,8,1>UB{align1}; +add (16) g49.0<1>UW g49.0<16,16,1>UW g96.1<16,8,1>UB{align1}; +add (16) g50.0<1>UW g50.0<16,16,1>UW g97.1<16,8,1>UB{align1}; +add (16) g51.0<1>UW g51.0<16,16,1>UW g98.1<16,8,1>UB{align1}; + +shr.sat (16) g44.0<1>UW g44.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g45.0<1>UW g45.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g46.0<1>UW g46.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g47.0<1>UW g47.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g48.0<1>UW g48.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g49.0<1>UW g49.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g50.0<1>UW g50.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g51.0<1>UW g51.0<16,16,1>UW 2UW {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_y.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_y.g4i new file mode 100644 index 000000000..fa55d8654 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_y.g4i @@ -0,0 +1,264 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g2.8<1>UD 0x007001FUD {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + +and (1) g2.24<1>UD g2.0<1,1,1>UD 3UD {align1}; +mul(1) g2.24<1>UD g2.24<1,1,1>UD 49UD {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g106.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +mov (1) g2.8<1>UD 0x1FUD {align1}; +send (16) 0 g120.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 1 {align1}; + +jmpi g2.24<1,1,1>D; + +add (16) g28.0<1>UW g98.0<16,16,1>UB g98.1<16,16,1>UB {align1}; +add (16) g29.0<1>UW g99.0<16,16,1>UB g99.1<16,16,1>UB {align1}; +add (16) g30.0<1>UW g100.0<16,16,1>UB g100.1<16,16,1>UB {align1}; +add (16) g31.0<1>UW g101.0<16,16,1>UB g101.1<16,16,1>UB {align1}; +add (16) g32.0<1>UW g102.0<16,16,1>UB g102.1<16,16,1>UB {align1}; +add (16) g33.0<1>UW g103.0<16,16,1>UB g103.1<16,16,1>UB {align1}; +add (16) g34.0<1>UW g104.0<16,16,1>UB g104.1<16,16,1>UB {align1}; +add (16) g35.0<1>UW g105.0<16,16,1>UB g105.1<16,16,1>UB {align1}; +add (16) g36.0<1>UW g106.0<16,16,1>UB g106.1<16,16,1>UB {align1}; +add (16) g37.0<1>UW g107.0<16,16,1>UB g107.1<16,16,1>UB {align1}; +add (16) g38.0<1>UW g108.0<16,16,1>UB g108.1<16,16,1>UB {align1}; +add (16) g39.0<1>UW g109.0<16,16,1>UB g109.1<16,16,1>UB {align1}; +add (16) g40.0<1>UW g110.0<16,16,1>UB g110.1<16,16,1>UB {align1}; +add (16) g41.0<1>UW g111.0<16,16,1>UB g111.1<16,16,1>UB {align1}; +add (16) g42.0<1>UW g112.0<16,16,1>UB g112.1<16,16,1>UB {align1}; +add (16) g43.0<1>UW g113.0<16,16,1>UB g113.1<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.0<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.0<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.0<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.0<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.0<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.0<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.0<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.0<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.0<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.0<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.0<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.0<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.0<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.0<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.0<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.0<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.1<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.1<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.1<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.1<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.1<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.1<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.1<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.1<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.1<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.1<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.1<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.1<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.1<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.1<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.1<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.1<16,16,1>UB {align1}; +jmpi out; + +add (16) g28.0<1>UW g98.1<16,16,1>UB g98.2<16,16,1>UB {align1}; +add (16) g29.0<1>UW g99.1<16,16,1>UB g99.2<16,16,1>UB {align1}; +add (16) g30.0<1>UW g100.1<16,16,1>UB g100.2<16,16,1>UB {align1}; +add (16) g31.0<1>UW g101.1<16,16,1>UB g101.2<16,16,1>UB {align1}; +add (16) g32.0<1>UW g102.1<16,16,1>UB g102.2<16,16,1>UB {align1}; +add (16) g33.0<1>UW g103.1<16,16,1>UB g103.2<16,16,1>UB {align1}; +add (16) g34.0<1>UW g104.1<16,16,1>UB g104.2<16,16,1>UB {align1}; +add (16) g35.0<1>UW g105.1<16,16,1>UB g105.2<16,16,1>UB {align1}; +add (16) g36.0<1>UW g106.1<16,16,1>UB g106.2<16,16,1>UB {align1}; +add (16) g37.0<1>UW g107.1<16,16,1>UB g107.2<16,16,1>UB {align1}; +add (16) g38.0<1>UW g108.1<16,16,1>UB g108.2<16,16,1>UB {align1}; +add (16) g39.0<1>UW g109.1<16,16,1>UB g109.2<16,16,1>UB {align1}; +add (16) g40.0<1>UW g110.1<16,16,1>UB g110.2<16,16,1>UB {align1}; +add (16) g41.0<1>UW g111.1<16,16,1>UB g111.2<16,16,1>UB {align1}; +add (16) g42.0<1>UW g112.1<16,16,1>UB g112.2<16,16,1>UB {align1}; +add (16) g43.0<1>UW g113.1<16,16,1>UB g113.2<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.1<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.1<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.1<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.1<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.1<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.1<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.1<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.1<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.1<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.1<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.1<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.1<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.1<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.1<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.1<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.1<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.2<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.2<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.2<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.2<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.2<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.2<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.2<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.2<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.2<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.2<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.2<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.2<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.2<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.2<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.2<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.2<16,16,1>UB {align1}; +jmpi out; + +add (16) g28.0<1>UW g98.2<16,16,1>UB g98.3<16,16,1>UB {align1}; +add (16) g29.0<1>UW g99.2<16,16,1>UB g99.3<16,16,1>UB {align1}; +add (16) g30.0<1>UW g100.2<16,16,1>UB g100.3<16,16,1>UB {align1}; +add (16) g31.0<1>UW g101.2<16,16,1>UB g101.3<16,16,1>UB {align1}; +add (16) g32.0<1>UW g102.2<16,16,1>UB g102.3<16,16,1>UB {align1}; +add (16) g33.0<1>UW g103.2<16,16,1>UB g103.3<16,16,1>UB {align1}; +add (16) g34.0<1>UW g104.2<16,16,1>UB g104.3<16,16,1>UB {align1}; +add (16) g35.0<1>UW g105.2<16,16,1>UB g105.3<16,16,1>UB {align1}; +add (16) g36.0<1>UW g106.2<16,16,1>UB g106.3<16,16,1>UB {align1}; +add (16) g37.0<1>UW g107.2<16,16,1>UB g107.3<16,16,1>UB {align1}; +add (16) g38.0<1>UW g108.2<16,16,1>UB g108.3<16,16,1>UB {align1}; +add (16) g39.0<1>UW g109.2<16,16,1>UB g109.3<16,16,1>UB {align1}; +add (16) g40.0<1>UW g110.2<16,16,1>UB g110.3<16,16,1>UB {align1}; +add (16) g41.0<1>UW g111.2<16,16,1>UB g111.3<16,16,1>UB {align1}; +add (16) g42.0<1>UW g112.2<16,16,1>UB g112.3<16,16,1>UB {align1}; +add (16) g43.0<1>UW g113.2<16,16,1>UB g113.3<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.2<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.2<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.2<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.2<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.2<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.2<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.2<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.2<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.2<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.2<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.2<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.2<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.2<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.2<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.2<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.2<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.3<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.3<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.3<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.3<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.3<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.3<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.3<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.3<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.3<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.3<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.3<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.3<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.3<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.3<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.3<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.3<16,16,1>UB {align1}; +jmpi out; +add (16) g28.0<1>UW g98.3<16,16,1>UB g98.4<16,16,1>UB {align1}; +add (16) g29.0<1>UW g99.3<16,16,1>UB g99.4<16,16,1>UB {align1}; +add (16) g30.0<1>UW g100.3<16,16,1>UB g100.4<16,16,1>UB {align1}; +add (16) g31.0<1>UW g101.3<16,16,1>UB g101.4<16,16,1>UB {align1}; +add (16) g32.0<1>UW g102.3<16,16,1>UB g102.4<16,16,1>UB {align1}; +add (16) g33.0<1>UW g103.3<16,16,1>UB g103.4<16,16,1>UB {align1}; +add (16) g34.0<1>UW g104.3<16,16,1>UB g104.4<16,16,1>UB {align1}; +add (16) g35.0<1>UW g105.3<16,16,1>UB g105.4<16,16,1>UB {align1}; +add (16) g36.0<1>UW g106.3<16,16,1>UB g106.4<16,16,1>UB {align1}; +add (16) g37.0<1>UW g107.3<16,16,1>UB g107.4<16,16,1>UB {align1}; +add (16) g38.0<1>UW g108.3<16,16,1>UB g108.4<16,16,1>UB {align1}; +add (16) g39.0<1>UW g109.3<16,16,1>UB g109.4<16,16,1>UB {align1}; +add (16) g40.0<1>UW g110.3<16,16,1>UB g110.4<16,16,1>UB {align1}; +add (16) g41.0<1>UW g111.3<16,16,1>UB g111.4<16,16,1>UB {align1}; +add (16) g42.0<1>UW g112.3<16,16,1>UB g112.4<16,16,1>UB {align1}; +add (16) g43.0<1>UW g113.3<16,16,1>UB g113.4<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.3<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.3<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.3<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.3<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.3<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.3<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.3<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.3<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.3<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.3<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.3<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.3<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.3<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.3<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.3<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.3<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.4<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.4<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.4<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.4<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.4<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.4<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.4<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.4<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.4<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.4<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.4<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.4<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.4<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.4<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.4<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.4<16,16,1>UB {align1}; + +out: +shr.sat (16) g28.0<1>UW g28.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g29.0<1>UW g29.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g30.0<1>UW g30.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g31.0<1>UW g31.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g32.0<1>UW g32.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g33.0<1>UW g33.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g34.0<1>UW g34.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g35.0<1>UW g35.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g36.0<1>UW g36.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g37.0<1>UW g37.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g38.0<1>UW g38.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g39.0<1>UW g39.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g40.0<1>UW g40.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g41.0<1>UW g41.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g42.0<1>UW g42.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g43.0<1>UW g43.0<16,16,1>UW 2UW {align1}; diff --git a/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_y_igd.g4i b/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_y_igd.g4i new file mode 100644 index 000000000..89adc3857 --- /dev/null +++ b/driver/xf86-video-intel/src/xvmc/read_frame_x1y1_y_igd.g4i @@ -0,0 +1,105 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER 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. + * + * Author: + * Zou Nan hai <nanhai.zou@intel.com> + * Zhang Hua jun <huajun.zhang@intel.com> + * Xing Dong sheng <dongsheng.xing@intel.com> + * + */ +mov (1) g2.8<1>UD 0x007001FUD {align1}; +send (16) 0 g98.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; + +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +send (16) 0 g106.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 8 {align1}; +add (1) g2.4<1>UD g2.4<1,1,1>UD 8UD {align1}; +mov (1) g2.8<1>UD 0x1FUD {align1}; +send (16) 0 g120.0<1>UW g2<8,8,1>UW read(input_surface, 2, 0, 2) mlen 1 rlen 1 {align1}; + + +add (16) g28.0<1>UW g98.0<16,16,1>UB g98.1<16,16,1>UB {align1}; +add (16) g29.0<1>UW g99.0<16,16,1>UB g99.1<16,16,1>UB {align1}; +add (16) g30.0<1>UW g100.0<16,16,1>UB g100.1<16,16,1>UB {align1}; +add (16) g31.0<1>UW g101.0<16,16,1>UB g101.1<16,16,1>UB {align1}; +add (16) g32.0<1>UW g102.0<16,16,1>UB g102.1<16,16,1>UB {align1}; +add (16) g33.0<1>UW g103.0<16,16,1>UB g103.1<16,16,1>UB {align1}; +add (16) g34.0<1>UW g104.0<16,16,1>UB g104.1<16,16,1>UB {align1}; +add (16) g35.0<1>UW g105.0<16,16,1>UB g105.1<16,16,1>UB {align1}; +add (16) g36.0<1>UW g106.0<16,16,1>UB g106.1<16,16,1>UB {align1}; +add (16) g37.0<1>UW g107.0<16,16,1>UB g107.1<16,16,1>UB {align1}; +add (16) g38.0<1>UW g108.0<16,16,1>UB g108.1<16,16,1>UB {align1}; +add (16) g39.0<1>UW g109.0<16,16,1>UB g109.1<16,16,1>UB {align1}; +add (16) g40.0<1>UW g110.0<16,16,1>UB g110.1<16,16,1>UB {align1}; +add (16) g41.0<1>UW g111.0<16,16,1>UB g111.1<16,16,1>UB {align1}; +add (16) g42.0<1>UW g112.0<16,16,1>UB g112.1<16,16,1>UB {align1}; +add (16) g43.0<1>UW g113.0<16,16,1>UB g113.1<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.0<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.0<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.0<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.0<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.0<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.0<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.0<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.0<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.0<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.0<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.0<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.0<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.0<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.0<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.0<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.0<16,16,1>UB {align1}; + +add (16) g28.0<1>UW g28.0<16,16,1>UW g99.1<16,16,1>UB {align1}; +add (16) g29.0<1>UW g29.0<16,16,1>UW g100.1<16,16,1>UB {align1}; +add (16) g30.0<1>UW g30.0<16,16,1>UW g101.1<16,16,1>UB {align1}; +add (16) g31.0<1>UW g31.0<16,16,1>UW g102.1<16,16,1>UB {align1}; +add (16) g32.0<1>UW g32.0<16,16,1>UW g103.1<16,16,1>UB {align1}; +add (16) g33.0<1>UW g33.0<16,16,1>UW g104.1<16,16,1>UB {align1}; +add (16) g34.0<1>UW g34.0<16,16,1>UW g105.1<16,16,1>UB {align1}; +add (16) g35.0<1>UW g35.0<16,16,1>UW g106.1<16,16,1>UB {align1}; +add (16) g36.0<1>UW g36.0<16,16,1>UW g107.1<16,16,1>UB {align1}; +add (16) g37.0<1>UW g37.0<16,16,1>UW g108.1<16,16,1>UB {align1}; +add (16) g38.0<1>UW g38.0<16,16,1>UW g109.1<16,16,1>UB {align1}; +add (16) g39.0<1>UW g39.0<16,16,1>UW g110.1<16,16,1>UB {align1}; +add (16) g40.0<1>UW g40.0<16,16,1>UW g111.1<16,16,1>UB {align1}; +add (16) g41.0<1>UW g41.0<16,16,1>UW g112.1<16,16,1>UB {align1}; +add (16) g42.0<1>UW g42.0<16,16,1>UW g113.1<16,16,1>UB {align1}; +add (16) g43.0<1>UW g43.0<16,16,1>UW g120.1<16,16,1>UB {align1}; + +shr.sat (16) g28.0<1>UW g28.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g29.0<1>UW g29.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g30.0<1>UW g30.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g31.0<1>UW g31.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g32.0<1>UW g32.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g33.0<1>UW g33.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g34.0<1>UW g34.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g35.0<1>UW g35.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g36.0<1>UW g36.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g37.0<1>UW g37.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g38.0<1>UW g38.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g39.0<1>UW g39.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g40.0<1>UW g40.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g41.0<1>UW g41.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g42.0<1>UW g42.0<16,16,1>UW 2UW {align1}; +shr.sat (16) g43.0<1>UW g43.0<16,16,1>UW 2UW {align1}; diff --git a/driver/xf86-video-intel/uxa/Makefile.am b/driver/xf86-video-intel/uxa/Makefile.am new file mode 100644 index 000000000..641b41461 --- /dev/null +++ b/driver/xf86-video-intel/uxa/Makefile.am @@ -0,0 +1,20 @@ +noinst_LTLIBRARIES = libuxa.la + +# Override these since UXA doesn't need them and the needed files aren't +# built (in hw/xfree86/os-support/solaris) until after UXA is built +SOLARIS_ASM_CFLAGS="" + +INCLUDES = \ + $(XORG_INCS) + +AM_CFLAGS = $(WARN_CFLAGS) $(XORG_CFLAGS) $(DIX_CFLAGS) + +libuxa_la_SOURCES = \ + uxa.c \ + uxa.h \ + uxa-accel.c \ + uxa-glyphs.c \ + uxa-render.c \ + uxa-priv.h \ + uxa-unaccel.c + diff --git a/driver/xf86-video-intel/uxa/Makefile.in b/driver/xf86-video-intel/uxa/Makefile.in new file mode 100644 index 000000000..2ff99ac35 --- /dev/null +++ b/driver/xf86-video-intel/uxa/Makefile.in @@ -0,0 +1,509 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = uxa +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libuxa_la_LIBADD = +am_libuxa_la_OBJECTS = uxa.lo uxa-accel.lo uxa-glyphs.lo uxa-render.lo \ + uxa-unaccel.lo +libuxa_la_OBJECTS = $(am_libuxa_la_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libuxa_la_SOURCES) +DIST_SOURCES = $(libuxa_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ +ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +APP_MAN_DIR = @APP_MAN_DIR@ +APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BUILD_LINUXDOC_FALSE = @BUILD_LINUXDOC_FALSE@ +BUILD_LINUXDOC_TRUE = @BUILD_LINUXDOC_TRUE@ +BUILD_PDFDOC_FALSE = @BUILD_PDFDOC_FALSE@ +BUILD_PDFDOC_TRUE = @BUILD_PDFDOC_TRUE@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DOLT_BASH = @DOLT_BASH@ +DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ +DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ +DRIVER_NAME = @DRIVER_NAME@ +DRI_CFLAGS = @DRI_CFLAGS@ +DRI_FALSE = @DRI_FALSE@ +DRI_LIBS = @DRI_LIBS@ +DRI_TRUE = @DRI_TRUE@ +DRM_CFLAGS = @DRM_CFLAGS@ +DRM_LIBS = @DRM_LIBS@ +DRM_MODE_CFLAGS = @DRM_MODE_CFLAGS@ +DRM_MODE_LIBS = @DRM_MODE_LIBS@ +DSYMUTIL = @DSYMUTIL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +FILE_MAN_DIR = @FILE_MAN_DIR@ +FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ +GREP = @GREP@ +HAVE_GEN4ASM_FALSE = @HAVE_GEN4ASM_FALSE@ +HAVE_GEN4ASM_TRUE = @HAVE_GEN4ASM_TRUE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBPCIACCESS_FALSE = @LIBPCIACCESS_FALSE@ +LIBPCIACCESS_TRUE = @LIBPCIACCESS_TRUE@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_MAN_DIR = @LIB_MAN_DIR@ +LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ +LINUXDOC = @LINUXDOC@ +LN_S = @LN_S@ +LTCOMPILE = @LTCOMPILE@ +LTCXXCOMPILE = @LTCXXCOMPILE@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +MAKE_HTML = @MAKE_HTML@ +MAKE_PDF = @MAKE_PDF@ +MAKE_PS = @MAKE_PS@ +MAKE_TEXT = @MAKE_TEXT@ +MISC_MAN_DIR = @MISC_MAN_DIR@ +MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ +NMEDIT = @NMEDIT@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCIACCESS_CFLAGS = @PCIACCESS_CFLAGS@ +PCIACCESS_LIBS = @PCIACCESS_LIBS@ +PKG_CONFIG = @PKG_CONFIG@ +PS2PDF = @PS2PDF@ +RANLIB = @RANLIB@ +SED = @SED@ +SERVER_1_5_CFLAGS = @SERVER_1_5_CFLAGS@ +SERVER_1_5_LIBS = @SERVER_1_5_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +VIDEO_DEBUG_FALSE = @VIDEO_DEBUG_FALSE@ +VIDEO_DEBUG_TRUE = @VIDEO_DEBUG_TRUE@ +WARN_CFLAGS = @WARN_CFLAGS@ +XEXT_CFLAGS = @XEXT_CFLAGS@ +XEXT_LIBS = @XEXT_LIBS@ +XMODES_CFLAGS = @XMODES_CFLAGS@ +XMODES_FALSE = @XMODES_FALSE@ +XMODES_TRUE = @XMODES_TRUE@ +XORG_CFLAGS = @XORG_CFLAGS@ +XORG_LIBS = @XORG_LIBS@ +XSERVER_LIBPCIACCESS_FALSE = @XSERVER_LIBPCIACCESS_FALSE@ +XSERVER_LIBPCIACCESS_TRUE = @XSERVER_LIBPCIACCESS_TRUE@ +XVMCLIB_CFLAGS = @XVMCLIB_CFLAGS@ +XVMCLIB_LIBS = @XVMCLIB_LIBS@ +XVMC_FALSE = @XVMC_FALSE@ +XVMC_TRUE = @XVMC_TRUE@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gen4asm = @gen4asm@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +moduledir = @moduledir@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +noinst_LTLIBRARIES = libuxa.la + +# Override these since UXA doesn't need them and the needed files aren't +# built (in hw/xfree86/os-support/solaris) until after UXA is built +SOLARIS_ASM_CFLAGS = "" +INCLUDES = \ + $(XORG_INCS) + +AM_CFLAGS = $(WARN_CFLAGS) $(XORG_CFLAGS) $(DIX_CFLAGS) +libuxa_la_SOURCES = \ + uxa.c \ + uxa.h \ + uxa-accel.c \ + uxa-glyphs.c \ + uxa-render.c \ + uxa-priv.h \ + uxa-unaccel.c + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu uxa/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu uxa/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libuxa.la: $(libuxa_la_OBJECTS) $(libuxa_la_DEPENDENCIES) + $(LINK) $(libuxa_la_LDFLAGS) $(libuxa_la_OBJECTS) $(libuxa_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uxa-accel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uxa-glyphs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uxa-render.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uxa-unaccel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uxa.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/driver/xf86-video-intel/uxa/uxa-accel.c b/driver/xf86-video-intel/uxa/uxa-accel.c new file mode 100644 index 000000000..e32205439 --- /dev/null +++ b/driver/xf86-video-intel/uxa/uxa-accel.c @@ -0,0 +1,1102 @@ +/* + * Copyright © 2001 Keith Packard + * + * Partly based on code that is Copyright © The XFree86 Project Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + * Authors: + * Eric Anholt <eric@anholt.net> + * Michel Dänzer <michel@tungstengraphics.com> + * + */ + +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif +#include "uxa-priv.h" +#include <X11/fonts/fontstruct.h> +#include "dixfontstr.h" +#include "uxa.h" + +static void +uxa_fill_spans(DrawablePtr pDrawable, GCPtr pGC, int n, + DDXPointPtr ppt, int *pwidth, int fSorted) +{ + ScreenPtr pScreen = pDrawable->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + RegionPtr pClip = fbGetCompositeClip(pGC); + PixmapPtr pPixmap = uxa_get_drawable_pixmap (pDrawable); + BoxPtr pextent, pbox; + int nbox; + int extentX1, extentX2, extentY1, extentY2; + int fullX1, fullX2, fullY1; + int partX1, partX2; + int off_x, off_y; + + if (uxa_screen->swappedOut || pGC->fillStyle != FillSolid || + !(pPixmap = uxa_get_offscreen_pixmap (pDrawable, &off_x, &off_y)) || + !(*uxa_screen->info->prepare_solid) (pPixmap, + pGC->alu, + pGC->planemask, + pGC->fgPixel)) + { + uxa_check_fill_spans (pDrawable, pGC, n, ppt, pwidth, fSorted); + return; + } + + pextent = REGION_EXTENTS(pGC->pScreen, pClip); + extentX1 = pextent->x1; + extentY1 = pextent->y1; + extentX2 = pextent->x2; + extentY2 = pextent->y2; + while (n--) + { + fullX1 = ppt->x; + fullY1 = ppt->y; + fullX2 = fullX1 + (int) *pwidth; + ppt++; + pwidth++; + + if (fullY1 < extentY1 || extentY2 <= fullY1) + continue; + + if (fullX1 < extentX1) + fullX1 = extentX1; + + if (fullX2 > extentX2) + fullX2 = extentX2; + + if (fullX1 >= fullX2) + continue; + + nbox = REGION_NUM_RECTS (pClip); + if (nbox == 1) + { + (*uxa_screen->info->solid) (pPixmap, + fullX1 + off_x, fullY1 + off_y, + fullX2 + off_x, fullY1 + 1 + off_y); + } + else + { + pbox = REGION_RECTS(pClip); + while(nbox--) + { + if (pbox->y1 <= fullY1 && fullY1 < pbox->y2) + { + partX1 = pbox->x1; + if (partX1 < fullX1) + partX1 = fullX1; + partX2 = pbox->x2; + if (partX2 > fullX2) + partX2 = fullX2; + if (partX2 > partX1) { + (*uxa_screen->info->solid) (pPixmap, + partX1 + off_x, fullY1 + off_y, + partX2 + off_x, fullY1 + 1 + off_y); + } + } + pbox++; + } + } + } + (*uxa_screen->info->done_solid) (pPixmap); +} + +static Bool +uxa_do_put_image (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y, + int w, int h, int format, char *bits, int src_stride) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDrawable->pScreen); + PixmapPtr pPix = uxa_get_drawable_pixmap (pDrawable); + RegionPtr pClip; + BoxPtr pbox; + int nbox; + int xoff, yoff; + int bpp = pDrawable->bitsPerPixel; + Bool access_prepared = FALSE; + + /* Don't bother with under 8bpp, XYPixmaps. */ + if (format != ZPixmap || bpp < 8) + return FALSE; + + /* Only accelerate copies: no rop or planemask. */ + if (!UXA_PM_IS_SOLID(pDrawable, pGC->planemask) || pGC->alu != GXcopy) + return FALSE; + + if (uxa_screen->swappedOut) + return FALSE; + + pPix = uxa_get_offscreen_pixmap (pDrawable, &xoff, &yoff); + + if (!pPix || !uxa_screen->info->put_image) + return FALSE; + + x += pDrawable->x; + y += pDrawable->y; + + pClip = fbGetCompositeClip(pGC); + for (nbox = REGION_NUM_RECTS(pClip), + pbox = REGION_RECTS(pClip); + nbox--; + pbox++) + { + int x1 = x; + int y1 = y; + int x2 = x + w; + int y2 = y + h; + char *src; + Bool ok; + + if (x1 < pbox->x1) + x1 = pbox->x1; + if (y1 < pbox->y1) + y1 = pbox->y1; + if (x2 > pbox->x2) + x2 = pbox->x2; + if (y2 > pbox->y2) + y2 = pbox->y2; + if (x1 >= x2 || y1 >= y2) + continue; + + src = bits + (y1 - y) * src_stride + (x1 - x) * (bpp / 8); + ok = uxa_screen->info->put_image(pPix, x1 + xoff, y1 + yoff, + x2 - x1, y2 - y1, src, src_stride); + /* If we fail to accelerate the upload, fall back to using unaccelerated + * fb calls. + */ + if (!ok) { + FbStip *dst; + FbStride dst_stride; + int dstBpp; + int dstXoff, dstYoff; + + if (!access_prepared) { + if (!uxa_prepare_access(pDrawable, UXA_ACCESS_RW)) + return FALSE; + access_prepared = TRUE; + } + + fbGetStipDrawable(pDrawable, dst, dst_stride, dstBpp, + dstXoff, dstYoff); + + fbBltStip((FbStip *)bits + (y1 - y) * (src_stride / sizeof(FbStip)), + src_stride / sizeof(FbStip), + (x1 - x) * dstBpp, + dst + (y1 + dstYoff) * dst_stride, + dst_stride, + (x1 + dstXoff) * dstBpp, + (x2 - x1) * dstBpp, + y2 - y1, + GXcopy, FB_ALLONES, dstBpp); + } + } + + if (access_prepared) + uxa_finish_access(pDrawable); + + return TRUE; +} + +#ifdef MITSHM + +static Bool +uxa_do_shm_put_image(DrawablePtr pDrawable, GCPtr pGC, int depth, + unsigned int format, int w, int h, int sx, int sy, int sw, + int sh, int dx, int dy, char *data) +{ + int src_stride = PixmapBytePad(w, depth); + + if (uxa_do_put_image(pDrawable, pGC, depth, dx, dy, sw, sh, format, data + + sy * src_stride + sx * BitsPerPixel(depth) / 8, + src_stride)) + return TRUE; + + if (format == ZPixmap) + { + PixmapPtr pPixmap; + + pPixmap = GetScratchPixmapHeader(pDrawable->pScreen, w, h, depth, + BitsPerPixel(depth), PixmapBytePad(w, depth), + (pointer)data); + if (!pPixmap) + return FALSE; + + if (!uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) + return FALSE; + fbCopyArea((DrawablePtr)pPixmap, pDrawable, pGC, sx, sy, sw, sh, dx, dy); + uxa_finish_access(pDrawable); + + FreeScratchPixmapHeader(pPixmap); + + return TRUE; + } + + return FALSE; +} + +/* The actual ShmPutImage isn't wrapped by the damage layer, so we need to + * inform any interested parties of the damage incurred to the drawable. + * + * We also need to set the pending damage to ensure correct migration in all + * cases. + */ +void +uxa_shm_put_image(DrawablePtr pDrawable, GCPtr pGC, int depth, unsigned int format, + int w, int h, int sx, int sy, int sw, int sh, int dx, int dy, + char *data) +{ + if (!uxa_do_shm_put_image(pDrawable, pGC, depth, format, w, h, sx, sy, sw, sh, + dx, dy, data)) { + if (!uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) + return; + fbShmPutImage(pDrawable, pGC, depth, format, w, h, sx, sy, sw, sh, dx, dy, + data); + uxa_finish_access(pDrawable); + } +} + +ShmFuncs uxa_shm_funcs = { NULL, uxa_shm_put_image }; + +#endif + +static void +uxa_put_image (DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y, + int w, int h, int leftPad, int format, char *bits) +{ +#ifdef MITSHM + if (!uxa_do_shm_put_image(pDrawable, pGC, depth, format, w, h, 0, 0, w, h, x, y, + bits)) +#else + if (!uxa_do_put_image(pDrawable, pGC, depth, x, y, w, h, format, bits, + PixmapBytePad(w, pDrawable->depth))) +#endif + uxa_check_put_image(pDrawable, pGC, depth, x, y, w, h, leftPad, format, + bits); +} + +static Bool inline +uxa_copy_n_to_n_two_dir (DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, + GCPtr pGC, BoxPtr pbox, int nbox, int dx, int dy) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDstDrawable->pScreen); + PixmapPtr pSrcPixmap, pDstPixmap; + int src_off_x, src_off_y, dst_off_x, dst_off_y; + int dirsetup; + + /* Need to get both pixmaps to call the driver routines */ + pSrcPixmap = uxa_get_offscreen_pixmap (pSrcDrawable, &src_off_x, &src_off_y); + pDstPixmap = uxa_get_offscreen_pixmap (pDstDrawable, &dst_off_x, &dst_off_y); + if (!pSrcPixmap || !pDstPixmap) + return FALSE; + + /* + * Now the case of a chip that only supports xdir = ydir = 1 or + * xdir = ydir = -1, but we have xdir != ydir. + */ + dirsetup = 0; /* No direction set up yet. */ + for (; nbox; pbox++, nbox--) { + if (dx >= 0 && (src_off_y + pbox->y1 + dy) != pbox->y1) { + /* Do a xdir = ydir = -1 blit instead. */ + if (dirsetup != -1) { + if (dirsetup != 0) + uxa_screen->info->done_copy(pDstPixmap); + dirsetup = -1; + if (!(*uxa_screen->info->prepare_copy)(pSrcPixmap, + pDstPixmap, + -1, -1, + pGC ? pGC->alu : GXcopy, + pGC ? pGC->planemask : + FB_ALLONES)) + return FALSE; + } + (*uxa_screen->info->copy)(pDstPixmap, + src_off_x + pbox->x1 + dx, + src_off_y + pbox->y1 + dy, + dst_off_x + pbox->x1, + dst_off_y + pbox->y1, + pbox->x2 - pbox->x1, + pbox->y2 - pbox->y1); + } else if (dx < 0 && (src_off_y + pbox->y1 + dy) != pbox->y1) { + /* Do a xdir = ydir = 1 blit instead. */ + if (dirsetup != 1) { + if (dirsetup != 0) + uxa_screen->info->done_copy(pDstPixmap); + dirsetup = 1; + if (!(*uxa_screen->info->prepare_copy)(pSrcPixmap, + pDstPixmap, + 1, 1, + pGC ? pGC->alu : GXcopy, + pGC ? pGC->planemask : + FB_ALLONES)) + return FALSE; + } + (*uxa_screen->info->copy)(pDstPixmap, + src_off_x + pbox->x1 + dx, + src_off_y + pbox->y1 + dy, + dst_off_x + pbox->x1, + dst_off_y + pbox->y1, + pbox->x2 - pbox->x1, + pbox->y2 - pbox->y1); + } else if (dx >= 0) { + /* + * xdir = 1, ydir = -1. + * Perform line-by-line xdir = ydir = 1 blits, going up. + */ + int i; + if (dirsetup != 1) { + if (dirsetup != 0) + uxa_screen->info->done_copy(pDstPixmap); + dirsetup = 1; + if (!(*uxa_screen->info->prepare_copy)(pSrcPixmap, + pDstPixmap, + 1, 1, + pGC ? pGC->alu : GXcopy, + pGC ? pGC->planemask : + FB_ALLONES)) + return FALSE; + } + for (i = pbox->y2 - pbox->y1 - 1; i >= 0; i--) + (*uxa_screen->info->copy)(pDstPixmap, + src_off_x + pbox->x1 + dx, + src_off_y + pbox->y1 + dy + i, + dst_off_x + pbox->x1, + dst_off_y + pbox->y1 + i, + pbox->x2 - pbox->x1, 1); + } else { + /* + * xdir = -1, ydir = 1. + * Perform line-by-line xdir = ydir = -1 blits, going down. + */ + int i; + if (dirsetup != -1) { + if (dirsetup != 0) + uxa_screen->info->done_copy(pDstPixmap); + dirsetup = -1; + if (!(*uxa_screen->info->prepare_copy)(pSrcPixmap, + pDstPixmap, + -1, -1, + pGC ? pGC->alu : GXcopy, + pGC ? pGC->planemask : + FB_ALLONES)) + return FALSE; + } + for (i = 0; i < pbox->y2 - pbox->y1; i++) + (*uxa_screen->info->copy)(pDstPixmap, + src_off_x + pbox->x1 + dx, + src_off_y + pbox->y1 + dy + i, + dst_off_x + pbox->x1, + dst_off_y + pbox->y1 + i, + pbox->x2 - pbox->x1, 1); + } + } + if (dirsetup != 0) + uxa_screen->info->done_copy(pDstPixmap); + return TRUE; +} + +void +uxa_copy_n_to_n (DrawablePtr pSrcDrawable, + DrawablePtr pDstDrawable, + GCPtr pGC, + BoxPtr pbox, + int nbox, + int dx, + int dy, + Bool reverse, + Bool upsidedown, + Pixel bitplane, + void *closure) +{ + ScreenPtr screen = pDstDrawable->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(screen); + int src_off_x, src_off_y; + int dst_off_x, dst_off_y; + PixmapPtr pSrcPixmap, pDstPixmap; + + pSrcPixmap = uxa_get_drawable_pixmap (pSrcDrawable); + pDstPixmap = uxa_get_drawable_pixmap (pDstDrawable); + + uxa_get_drawable_deltas (pSrcDrawable, pSrcPixmap, &src_off_x, &src_off_y); + uxa_get_drawable_deltas (pDstDrawable, pDstPixmap, &dst_off_x, &dst_off_y); + + /* Mixed directions must be handled specially if the card is lame */ + if ((uxa_screen->info->flags & UXA_TWO_BITBLT_DIRECTIONS) && + reverse != upsidedown) { + if (uxa_copy_n_to_n_two_dir(pSrcDrawable, pDstDrawable, pGC, pbox, nbox, + dx, dy)) + return; + goto fallback; + } + + if (!uxa_pixmap_is_offscreen(pSrcPixmap) || + !uxa_pixmap_is_offscreen(pDstPixmap) || + !(*uxa_screen->info->prepare_copy) (pSrcPixmap, pDstPixmap, reverse ? -1 : 1, + upsidedown ? -1 : 1, + pGC ? pGC->alu : GXcopy, + pGC ? pGC->planemask : FB_ALLONES)) { + goto fallback; + } + + while (nbox--) + { + (*uxa_screen->info->copy) (pDstPixmap, + pbox->x1 + dx + src_off_x, + pbox->y1 + dy + src_off_y, + pbox->x1 + dst_off_x, pbox->y1 + dst_off_y, + pbox->x2 - pbox->x1, pbox->y2 - pbox->y1); + pbox++; + } + + (*uxa_screen->info->done_copy) (pDstPixmap); + + return; + +fallback: + UXA_FALLBACK(("from %p to %p (%c,%c)\n", pSrcDrawable, pDstDrawable, + uxa_drawable_location(pSrcDrawable), + uxa_drawable_location(pDstDrawable))); + if (uxa_prepare_access (pDstDrawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access (pSrcDrawable, UXA_ACCESS_RO)) { + fbCopyNtoN (pSrcDrawable, pDstDrawable, pGC, pbox, nbox, dx, dy, + reverse, upsidedown, bitplane, closure); + uxa_finish_access (pSrcDrawable); + } + uxa_finish_access (pDstDrawable); + } +} + +RegionPtr +uxa_copy_area(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, + int srcx, int srcy, int width, int height, int dstx, int dsty) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDstDrawable->pScreen); + + if (uxa_screen->swappedOut) { + return uxa_check_copy_area(pSrcDrawable, pDstDrawable, pGC, + srcx, srcy, width, height, dstx, dsty); + } + + return miDoCopy (pSrcDrawable, pDstDrawable, pGC, + srcx, srcy, width, height, + dstx, dsty, uxa_copy_n_to_n, 0, NULL); +} + +static void +uxa_poly_point(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, + DDXPointPtr ppt) +{ + int i; + xRectangle *prect; + + /* If we can't reuse the current GC as is, don't bother accelerating the + * points. + */ + if (pGC->fillStyle != FillSolid) { + uxa_check_poly_point(pDrawable, pGC, mode, npt, ppt); + return; + } + + prect = xalloc(sizeof(xRectangle) * npt); + if (!prect) + return; + for (i = 0; i < npt; i++) { + prect[i].x = ppt[i].x; + prect[i].y = ppt[i].y; + if (i > 0 && mode == CoordModePrevious) { + prect[i].x += prect[i - 1].x; + prect[i].y += prect[i - 1].y; + } + prect[i].width = 1; + prect[i].height = 1; + } + pGC->ops->PolyFillRect(pDrawable, pGC, npt, prect); + xfree(prect); +} + +/** + * uxa_poly_lines() checks if it can accelerate the lines as a group of + * horizontal or vertical lines (rectangles), and uses existing rectangle fill + * acceleration if so. + */ +static void +uxa_poly_lines(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, + DDXPointPtr ppt) +{ + xRectangle *prect; + int x1, x2, y1, y2; + int i; + + /* Don't try to do wide lines or non-solid fill style. */ + if (pGC->lineWidth != 0 || pGC->lineStyle != LineSolid || + pGC->fillStyle != FillSolid) { + uxa_check_poly_lines(pDrawable, pGC, mode, npt, ppt); + return; + } + + prect = xalloc(sizeof(xRectangle) * (npt - 1)); + if (!prect) + return; + x1 = ppt[0].x; + y1 = ppt[0].y; + /* If we have any non-horizontal/vertical, fall back. */ + for (i = 0; i < npt - 1; i++) { + if (mode == CoordModePrevious) { + x2 = x1 + ppt[i + 1].x; + y2 = y1 + ppt[i + 1].y; + } else { + x2 = ppt[i + 1].x; + y2 = ppt[i + 1].y; + } + + if (x1 != x2 && y1 != y2) { + xfree(prect); + uxa_check_poly_lines(pDrawable, pGC, mode, npt, ppt); + return; + } + + if (x1 < x2) { + prect[i].x = x1; + prect[i].width = x2 - x1 + 1; + } else { + prect[i].x = x2; + prect[i].width = x1 - x2 + 1; + } + if (y1 < y2) { + prect[i].y = y1; + prect[i].height = y2 - y1 + 1; + } else { + prect[i].y = y2; + prect[i].height = y1 - y2 + 1; + } + + x1 = x2; + y1 = y2; + } + pGC->ops->PolyFillRect(pDrawable, pGC, npt - 1, prect); + xfree(prect); +} + +/** + * uxa_poly_segment() checks if it can accelerate the lines as a group of + * horizontal or vertical lines (rectangles), and uses existing rectangle fill + * acceleration if so. + */ +static void +uxa_poly_segment (DrawablePtr pDrawable, GCPtr pGC, int nseg, + xSegment *pSeg) +{ + xRectangle *prect; + int i; + + /* Don't try to do wide lines or non-solid fill style. */ + if (pGC->lineWidth != 0 || pGC->lineStyle != LineSolid || + pGC->fillStyle != FillSolid) + { + uxa_check_poly_segment(pDrawable, pGC, nseg, pSeg); + return; + } + + /* If we have any non-horizontal/vertical, fall back. */ + for (i = 0; i < nseg; i++) { + if (pSeg[i].x1 != pSeg[i].x2 && pSeg[i].y1 != pSeg[i].y2) { + uxa_check_poly_segment(pDrawable, pGC, nseg, pSeg); + return; + } + } + + prect = xalloc(sizeof(xRectangle) * nseg); + if (!prect) + return; + for (i = 0; i < nseg; i++) { + if (pSeg[i].x1 < pSeg[i].x2) { + prect[i].x = pSeg[i].x1; + prect[i].width = pSeg[i].x2 - pSeg[i].x1 + 1; + } else { + prect[i].x = pSeg[i].x2; + prect[i].width = pSeg[i].x1 - pSeg[i].x2 + 1; + } + if (pSeg[i].y1 < pSeg[i].y2) { + prect[i].y = pSeg[i].y1; + prect[i].height = pSeg[i].y2 - pSeg[i].y1 + 1; + } else { + prect[i].y = pSeg[i].y2; + prect[i].height = pSeg[i].y1 - pSeg[i].y2 + 1; + } + + /* don't paint last pixel */ + if (pGC->capStyle == CapNotLast) { + if (prect[i].width == 1) + prect[i].height--; + else + prect[i].width--; + } + } + pGC->ops->PolyFillRect(pDrawable, pGC, nseg, prect); + xfree(prect); +} + +static Bool uxa_fill_region_solid (DrawablePtr pDrawable, RegionPtr pRegion, + Pixel pixel, CARD32 planemask, CARD32 alu); + +static void +uxa_poly_fill_rect(DrawablePtr pDrawable, + GCPtr pGC, + int nrect, + xRectangle *prect) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDrawable->pScreen); + RegionPtr pClip = fbGetCompositeClip(pGC); + PixmapPtr pPixmap = uxa_get_drawable_pixmap(pDrawable); + register BoxPtr pbox; + BoxPtr pextent; + int extentX1, extentX2, extentY1, extentY2; + int fullX1, fullX2, fullY1, fullY2; + int partX1, partX2, partY1, partY2; + int xoff, yoff; + int xorg, yorg; + int n; + RegionPtr pReg = RECTS_TO_REGION(pScreen, nrect, prect, CT_UNSORTED); + + /* Compute intersection of rects and clip region */ + REGION_TRANSLATE(pScreen, pReg, pDrawable->x, pDrawable->y); + REGION_INTERSECT(pScreen, pReg, pClip, pReg); + + if (!REGION_NUM_RECTS(pReg)) + goto out; + + uxa_get_drawable_deltas(pDrawable, pPixmap, &xoff, &yoff); + + if (uxa_screen->swappedOut) + goto fallback; + + /* For ROPs where overlaps don't matter, convert rectangles to region and + * call uxa_fill_region_{solid,tiled}. + */ + if ((pGC->fillStyle == FillSolid || pGC->fillStyle == FillTiled) && + (nrect == 1 || pGC->alu == GXcopy || pGC->alu == GXclear || + pGC->alu == GXnoop || pGC->alu == GXcopyInverted || + pGC->alu == GXset)) { + if (((pGC->fillStyle == FillSolid || pGC->tileIsPixel) && + uxa_fill_region_solid(pDrawable, pReg, pGC->fillStyle == FillSolid ? + pGC->fgPixel : pGC->tile.pixel, pGC->planemask, + pGC->alu)) || + (pGC->fillStyle == FillTiled && !pGC->tileIsPixel && + uxa_fill_region_tiled(pDrawable, pReg, pGC->tile.pixmap, &pGC->patOrg, + pGC->planemask, pGC->alu))) { + goto out; + } + } + + if (pGC->fillStyle != FillSolid && + !(pGC->tileIsPixel && pGC->fillStyle == FillTiled)) + { + goto fallback; + } + + if (!uxa_pixmap_is_offscreen (pPixmap) || + !(*uxa_screen->info->prepare_solid) (pPixmap, + pGC->alu, + pGC->planemask, + pGC->fgPixel)) + { +fallback: + uxa_check_poly_fill_rect (pDrawable, pGC, nrect, prect); + goto out; + } + + xorg = pDrawable->x; + yorg = pDrawable->y; + + pextent = REGION_EXTENTS(pGC->pScreen, pClip); + extentX1 = pextent->x1; + extentY1 = pextent->y1; + extentX2 = pextent->x2; + extentY2 = pextent->y2; + while (nrect--) + { + fullX1 = prect->x + xorg; + fullY1 = prect->y + yorg; + fullX2 = fullX1 + (int) prect->width; + fullY2 = fullY1 + (int) prect->height; + prect++; + + if (fullX1 < extentX1) + fullX1 = extentX1; + + if (fullY1 < extentY1) + fullY1 = extentY1; + + if (fullX2 > extentX2) + fullX2 = extentX2; + + if (fullY2 > extentY2) + fullY2 = extentY2; + + if ((fullX1 >= fullX2) || (fullY1 >= fullY2)) + continue; + n = REGION_NUM_RECTS (pClip); + if (n == 1) + { + (*uxa_screen->info->solid) (pPixmap, + fullX1 + xoff, fullY1 + yoff, + fullX2 + xoff, fullY2 + yoff); + } + else + { + pbox = REGION_RECTS(pClip); + /* + * clip the rectangle to each box in the clip region + * this is logically equivalent to calling Intersect(), + * but rectangles may overlap each other here. + */ + while(n--) + { + partX1 = pbox->x1; + if (partX1 < fullX1) + partX1 = fullX1; + partY1 = pbox->y1; + if (partY1 < fullY1) + partY1 = fullY1; + partX2 = pbox->x2; + if (partX2 > fullX2) + partX2 = fullX2; + partY2 = pbox->y2; + if (partY2 > fullY2) + partY2 = fullY2; + + pbox++; + + if (partX1 < partX2 && partY1 < partY2) { + (*uxa_screen->info->solid) (pPixmap, + partX1 + xoff, partY1 + yoff, + partX2 + xoff, partY2 + yoff); + } + } + } + } + (*uxa_screen->info->done_solid) (pPixmap); + +out: + REGION_UNINIT(pScreen, pReg); + REGION_DESTROY(pScreen, pReg); +} + +const GCOps uxa_ops = { + uxa_fill_spans, + uxa_check_set_spans, + uxa_put_image, + uxa_copy_area, + uxa_check_copy_plane, + uxa_poly_point, + uxa_poly_lines, + uxa_poly_segment, + miPolyRectangle, + uxa_check_poly_arc, + miFillPolygon, + uxa_poly_fill_rect, + miPolyFillArc, + miPolyText8, + miPolyText16, + miImageText8, + miImageText16, + uxa_check_image_glyph_blt, + uxa_check_poly_glyph_blt, + uxa_check_push_pixels, +}; + +void +uxa_copy_window(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) +{ + RegionRec rgnDst; + int dx, dy; + PixmapPtr pPixmap = (*pWin->drawable.pScreen->GetWindowPixmap) (pWin); + + dx = ptOldOrg.x - pWin->drawable.x; + dy = ptOldOrg.y - pWin->drawable.y; + REGION_TRANSLATE(pWin->drawable.pScreen, prgnSrc, -dx, -dy); + + REGION_INIT (pWin->drawable.pScreen, &rgnDst, NullBox, 0); + + REGION_INTERSECT(pWin->drawable.pScreen, &rgnDst, &pWin->borderClip, prgnSrc); +#ifdef COMPOSITE + if (pPixmap->screen_x || pPixmap->screen_y) + REGION_TRANSLATE (pWin->drawable.pScreen, &rgnDst, + -pPixmap->screen_x, -pPixmap->screen_y); +#endif + + miCopyRegion (&pPixmap->drawable, &pPixmap->drawable, + NULL, + &rgnDst, dx, dy, uxa_copy_n_to_n, 0, NULL); + + REGION_UNINIT(pWin->drawable.pScreen, &rgnDst); +} + +static Bool +uxa_fill_region_solid (DrawablePtr pDrawable, + RegionPtr pRegion, + Pixel pixel, + CARD32 planemask, + CARD32 alu) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDrawable->pScreen); + PixmapPtr pPixmap = uxa_get_drawable_pixmap (pDrawable); + int xoff, yoff; + Bool ret = FALSE; + + uxa_get_drawable_deltas(pDrawable, pPixmap, &xoff, &yoff); + REGION_TRANSLATE(pScreen, pRegion, xoff, yoff); + + if (uxa_pixmap_is_offscreen (pPixmap) && + (*uxa_screen->info->prepare_solid) (pPixmap, alu, planemask, pixel)) + { + int nbox; + BoxPtr pBox; + + nbox = REGION_NUM_RECTS (pRegion); + pBox = REGION_RECTS (pRegion); + + while (nbox--) + { + (*uxa_screen->info->solid) (pPixmap, pBox->x1, pBox->y1, pBox->x2, + pBox->y2); + pBox++; + } + (*uxa_screen->info->done_solid) (pPixmap); + + ret = TRUE; + } + + REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff); + + return ret; +} + +/* Try to do an accelerated tile of the pTile into pRegion of pDrawable. + * Based on fbFillRegionTiled(), fbTile(). + */ +Bool +uxa_fill_region_tiled (DrawablePtr pDrawable, + RegionPtr pRegion, + PixmapPtr pTile, + DDXPointPtr pPatOrg, + CARD32 planemask, + CARD32 alu) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDrawable->pScreen); + PixmapPtr pPixmap; + int xoff, yoff; + int tileWidth, tileHeight; + int nbox = REGION_NUM_RECTS (pRegion); + BoxPtr pBox = REGION_RECTS (pRegion); + Bool ret = FALSE; + + tileWidth = pTile->drawable.width; + tileHeight = pTile->drawable.height; + + /* If we're filling with a solid color, grab it out and go to + * FillRegionsolid, saving numerous copies. + */ + if (tileWidth == 1 && tileHeight == 1) + return uxa_fill_region_solid(pDrawable, pRegion, + uxa_get_pixmap_first_pixel (pTile), planemask, + alu); + + pPixmap = uxa_get_drawable_pixmap (pDrawable); + uxa_get_drawable_deltas(pDrawable, pPixmap, &xoff, &yoff); + REGION_TRANSLATE(pScreen, pRegion, xoff, yoff); + + pPixmap = uxa_get_offscreen_pixmap (pDrawable, &xoff, &yoff); + + if (!pPixmap || !uxa_pixmap_is_offscreen(pTile)) + goto out; + + if ((*uxa_screen->info->prepare_copy) (pTile, pPixmap, 1, 1, alu, planemask)) + { + while (nbox--) + { + int height = pBox->y2 - pBox->y1; + int dstY = pBox->y1; + int tileY; + + modulus(dstY - yoff - pDrawable->y - pPatOrg->y, tileHeight, tileY); + + while (height > 0) { + int width = pBox->x2 - pBox->x1; + int dstX = pBox->x1; + int tileX; + int h = tileHeight - tileY; + + if (h > height) + h = height; + height -= h; + + modulus(dstX - xoff - pDrawable->x - pPatOrg->x, tileWidth, + tileX); + + while (width > 0) { + int w = tileWidth - tileX; + if (w > width) + w = width; + width -= w; + + (*uxa_screen->info->copy) (pPixmap, tileX, tileY, dstX, dstY, + w, h); + dstX += w; + tileX = 0; + } + dstY += h; + tileY = 0; + } + pBox++; + } + (*uxa_screen->info->done_copy) (pPixmap); + + ret = TRUE; + } + +out: + REGION_TRANSLATE(pScreen, pRegion, -xoff, -yoff); + + return ret; +} + +#ifndef SERVER_1_5 +void +uxa_paint_window(WindowPtr pWin, RegionPtr pRegion, int what) +{ + ScreenPtr screen = pWin->drawable.pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(screen); + DDXPointRec zeros = { 0, 0 }; + + if (REGION_NIL(pRegion)) + return; + + if (uxa_screen->swappedOut) { + uxa_check_paint_window(pWin, pRegion, what); + return; + } + + switch (what) { + case PW_BACKGROUND: + switch (pWin->backgroundState) { + case None: + return; + case ParentRelative: + do { + pWin = pWin->parent; + } while (pWin->backgroundState == ParentRelative); + (*pWin->drawable.pScreen->PaintWindowBackground)(pWin, pRegion, + what); + return; + case BackgroundPixel: + if (uxa_fill_region_solid(&pWin->drawable, pRegion, + pWin->background.pixel, + FB_ALLONES, GXcopy)) + return; + break; + case BackgroundPixmap: + if (uxa_fill_region_tiled(&pWin->drawable, pRegion, + pWin->background.pixmap, + &zeros, FB_ALLONES, GXcopy)) + return; + break; + } + break; + case PW_BORDER: + if (pWin->borderIsPixel) { + if (uxa_fill_region_solid(&pWin->drawable, pRegion, + pWin->border.pixel, + FB_ALLONES, GXcopy)) + return; + break; + } else { + if (uxa_fill_region_tiled(&pWin->drawable, pRegion, + pWin->border.pixmap, + &zeros, FB_ALLONES, GXcopy)) + return; + break; + } + break; + } + + uxa_check_paint_window(pWin, pRegion, what); +} +#endif /* !SERVER_1_5 */ + +/** + * Accelerates GetImage for solid ZPixmap downloads from framebuffer memory. + * + * This is probably the only case we actually care about. The rest fall through + * to migration and fbGetImage, which hopefully will result in migration pushing + * the pixmap out of framebuffer. + */ +void +uxa_get_image (DrawablePtr pDrawable, int x, int y, int w, int h, + unsigned int format, unsigned long planeMask, char *d) +{ + ScreenPtr screen = pDrawable->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(screen); + BoxRec Box; + PixmapPtr pPix = uxa_get_drawable_pixmap (pDrawable); + int xoff, yoff; + Bool ok; + + uxa_get_drawable_deltas (pDrawable, pPix, &xoff, &yoff); + + Box.x1 = pDrawable->y + x + xoff; + Box.y1 = pDrawable->y + y + yoff; + Box.x2 = Box.x1 + w; + Box.y2 = Box.y1 + h; + + if (uxa_screen->swappedOut) + goto fallback; + + pPix = uxa_get_offscreen_pixmap (pDrawable, &xoff, &yoff); + + if (pPix == NULL || uxa_screen->info->get_image == NULL) + goto fallback; + + /* Only cover the ZPixmap, solid copy case. */ + if (format != ZPixmap || !UXA_PM_IS_SOLID(pDrawable, planeMask)) + goto fallback; + + /* Only try to handle the 8bpp and up cases, since we don't want to think + * about <8bpp. + */ + if (pDrawable->bitsPerPixel < 8) + goto fallback; + + ok = uxa_screen->info->get_image(pPix, pDrawable->x + x + xoff, + pDrawable->y + y + yoff, w, h, d, + PixmapBytePad(w, pDrawable->depth)); + if (ok) + return; + +fallback: + UXA_FALLBACK(("from %p (%c)\n", pDrawable, + uxa_drawable_location(pDrawable))); + + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RO)) { + fbGetImage (pDrawable, x, y, w, h, format, planeMask, d); + uxa_finish_access (pDrawable); + } + + return; +} diff --git a/driver/xf86-video-intel/uxa/uxa-glyphs.c b/driver/xf86-video-intel/uxa/uxa-glyphs.c new file mode 100644 index 000000000..3cb03f598 --- /dev/null +++ b/driver/xf86-video-intel/uxa/uxa-glyphs.c @@ -0,0 +1,877 @@ +/* + * Copyright © 2008 Red Hat, Inc. + * Partly based on code Copyright © 2000 SuSE, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Red Hat not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. Red Hat makes no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * Red Hat DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL Red Hat + * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of SuSE not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. SuSE makes no representations about the + * suitability of this software for any purpose. It is provided "as is" + * without express or implied warranty. + * + * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE + * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Author: Owen Taylor <otaylor@fishsoup.net> + * Based on code by: Keith Packard + */ + +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <stdlib.h> + +#include "uxa-priv.h" + +#include "mipict.h" + +#ifdef SERVER_1_5 + +#if DEBUG_GLYPH_CACHE +#define DBG_GLYPH_CACHE(a) ErrorF a +#else +#define DBG_GLYPH_CACHE(a) +#endif + +/* Width of the pixmaps we use for the caches; this should be less than + * max texture size of the driver; this may need to actually come from + * the driver. + */ +#define CACHE_PICTURE_WIDTH 1024 + +/* Maximum number of glyphs we buffer on the stack before flushing + * rendering to the mask or destination surface. + */ +#define GLYPH_BUFFER_SIZE 256 + +typedef struct { + PicturePtr source; + uxa_composite_rect_t rects[GLYPH_BUFFER_SIZE]; + int count; +} uxa_glyph_buffer_t; + +typedef enum { + UXA_GLYPH_SUCCESS, /* Glyph added to render buffer */ + UXA_GLYPH_FAIL, /* out of memory, etc */ + UXA_GLYPH_NEED_FLUSH, /* would evict a glyph already in the buffer */ +} uxa_glyph_cache_result_t; + +void +uxa_glyphs_init(ScreenPtr pScreen) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + int i = 0; + + memset(uxa_screen->glyphCaches, 0, sizeof(uxa_screen->glyphCaches)); + + uxa_screen->glyphCaches[i].format = PICT_a8; + uxa_screen->glyphCaches[i].glyphWidth = uxa_screen->glyphCaches[i].glyphHeight = 16; + i++; + uxa_screen->glyphCaches[i].format = PICT_a8; + uxa_screen->glyphCaches[i].glyphWidth = uxa_screen->glyphCaches[i].glyphHeight = 32; + i++; + uxa_screen->glyphCaches[i].format = PICT_a8r8g8b8; + uxa_screen->glyphCaches[i].glyphWidth = uxa_screen->glyphCaches[i].glyphHeight = 16; + i++; + uxa_screen->glyphCaches[i].format = PICT_a8r8g8b8; + uxa_screen->glyphCaches[i].glyphWidth = uxa_screen->glyphCaches[i].glyphHeight = 32; + i++; + + assert(i == UXA_NUM_GLYPH_CACHES); + + for (i = 0; i < UXA_NUM_GLYPH_CACHES; i++) { + uxa_screen->glyphCaches[i].columns = CACHE_PICTURE_WIDTH / uxa_screen->glyphCaches[i].glyphWidth; + uxa_screen->glyphCaches[i].size = 256; + uxa_screen->glyphCaches[i].hashSize = 557; + } +} + +static void +uxa_unrealize_glyph_caches(ScreenPtr pScreen, + unsigned int format) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + int i; + + for (i = 0; i < UXA_NUM_GLYPH_CACHES; i++) { + uxa_glyph_cache_t *cache = &uxa_screen->glyphCaches[i]; + + if (cache->format != format) + continue; + + if (cache->picture) { + FreePicture ((pointer) cache->picture, (XID) 0); + cache->picture = NULL; + } + + if (cache->hashEntries) { + xfree(cache->hashEntries); + cache->hashEntries = NULL; + } + + if (cache->glyphs) { + xfree(cache->glyphs); + cache->glyphs = NULL; + } + cache->glyphCount = 0; + } +} + +#define NeedsComponent(f) (PICT_FORMAT_A(f) != 0 && PICT_FORMAT_RGB(f) != 0) + +/* All caches for a single format share a single pixmap for glyph storage, + * allowing mixing glyphs of different sizes without paying a penalty + * for switching between source pixmaps. (Note that for a size of font + * right at the border between two sizes, we might be switching for almost + * every glyph.) + * + * This function allocates the storage pixmap, and then fills in the + * rest of the allocated structures for all caches with the given format. + */ +static Bool +uxa_realize_glyph_caches(ScreenPtr pScreen, + unsigned int format) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + int depth = PIXMAN_FORMAT_DEPTH(format); + PictFormatPtr pPictFormat; + PixmapPtr pPixmap; + PicturePtr pPicture; + CARD32 component_alpha; + int height; + int i; + int error; + + pPictFormat = PictureMatchFormat(pScreen, depth, format); + if (!pPictFormat) + return FALSE; + + /* Compute the total vertical size needed for the format */ + + height = 0; + for (i = 0; i < UXA_NUM_GLYPH_CACHES; i++) { + uxa_glyph_cache_t *cache = &uxa_screen->glyphCaches[i]; + int rows; + + if (cache->format != format) + continue; + + cache->yOffset = height; + + rows = (cache->size + cache->columns - 1) / cache->columns; + height += rows * cache->glyphHeight; + } + + /* Now allocate the pixmap and picture */ + + pPixmap = (*pScreen->CreatePixmap) (pScreen, + CACHE_PICTURE_WIDTH, + height, depth, 0); + if (!pPixmap) + return FALSE; + + component_alpha = NeedsComponent(pPictFormat->format); + pPicture = CreatePicture(0, &pPixmap->drawable, pPictFormat, + CPComponentAlpha, &component_alpha, serverClient, + &error); + + (*pScreen->DestroyPixmap) (pPixmap); /* picture holds a refcount */ + + if (!pPicture) + return FALSE; + + /* And store the picture in all the caches for the format */ + + for (i = 0; i < UXA_NUM_GLYPH_CACHES; i++) { + uxa_glyph_cache_t *cache = &uxa_screen->glyphCaches[i]; + int j; + + if (cache->format != format) + continue; + + cache->picture = pPicture; + cache->picture->refcnt++; + cache->hashEntries = xalloc(sizeof(int) * cache->hashSize); + cache->glyphs = xalloc(sizeof(uxa_cached_glyph_t) * cache->size); + cache->glyphCount = 0; + + if (!cache->hashEntries || !cache->glyphs) + goto bail; + + for (j = 0; j < cache->hashSize; j++) + cache->hashEntries[j] = -1; + + cache->evictionPosition = rand() % cache->size; + } + + /* Each cache references the picture individually */ + FreePicture ((pointer) pPicture, (XID) 0); + return TRUE; + +bail: + uxa_unrealize_glyph_caches(pScreen, format); + return FALSE; +} + +void +uxa_glyphs_fini (ScreenPtr pScreen) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + int i; + + for (i = 0; i < UXA_NUM_GLYPH_CACHES; i++) { + uxa_glyph_cache_t *cache = &uxa_screen->glyphCaches[i]; + + if (cache->picture) + uxa_unrealize_glyph_caches(pScreen, cache->format); + } +} + +static int +uxa_glyph_cache_hash_lookup(uxa_glyph_cache_t *cache, GlyphPtr pGlyph) +{ + int slot; + + slot = (*(CARD32 *) pGlyph->sha1) % cache->hashSize; + + while (TRUE) { /* hash table can never be full */ + int entryPos = cache->hashEntries[slot]; + if (entryPos == -1) + return -1; + + if (memcmp(pGlyph->sha1, cache->glyphs[entryPos].sha1, sizeof(pGlyph->sha1)) == 0){ + return entryPos; + } + + slot--; + if (slot < 0) + slot = cache->hashSize - 1; + } +} + +static void +uxa_glyph_cache_hash_insert(uxa_glyph_cache_t *cache, + GlyphPtr pGlyph, + int pos) +{ + int slot; + + memcpy(cache->glyphs[pos].sha1, pGlyph->sha1, sizeof(pGlyph->sha1)); + + slot = (*(CARD32 *) pGlyph->sha1) % cache->hashSize; + + while (TRUE) { /* hash table can never be full */ + if (cache->hashEntries[slot] == -1) { + cache->hashEntries[slot] = pos; + return; + } + + slot--; + if (slot < 0) + slot = cache->hashSize - 1; + } +} + +static void +uxa_glyph_cache_hash_remove(uxa_glyph_cache_t *cache, + int pos) +{ + int slot; + int emptiedSlot = -1; + + slot = (*(CARD32 *) cache->glyphs[pos].sha1) % cache->hashSize; + + while (TRUE) { /* hash table can never be full */ + int entryPos = cache->hashEntries[slot]; + + if (entryPos == -1) + return; + + if (entryPos == pos) { + cache->hashEntries[slot] = -1; + emptiedSlot = slot; + } else if (emptiedSlot != -1) { + /* See if we can move this entry into the emptied slot, we can't + * do that if if entry would have hashed between the current position + * and the emptied slot. (taking wrapping into account). Bad positions + * are: + * + * | XXXXXXXXXX | + * i j + * + * |XXX XXXX| + * j i + * + * i - slot, j - emptiedSlot + * + * (Knuth 6.4R) + */ + + int entrySlot = (*(CARD32 *) cache->glyphs[entryPos].sha1) % cache->hashSize; + + if (!((entrySlot >= slot && entrySlot < emptiedSlot) || + (emptiedSlot < slot && (entrySlot < emptiedSlot || entrySlot >= slot)))) + { + cache->hashEntries[emptiedSlot] = entryPos; + cache->hashEntries[slot] = -1; + emptiedSlot = slot; + } + } + + slot--; + if (slot < 0) + slot = cache->hashSize - 1; + } +} + +#define CACHE_X(pos) (((pos) % cache->columns) * cache->glyphWidth) +#define CACHE_Y(pos) (cache->yOffset + ((pos) / cache->columns) * cache->glyphHeight) + +/* The most efficient thing to way to upload the glyph to the screen + * is to use CopyArea; uxa pixmaps are always offscreen. + */ +static Bool +uxa_glyph_cache_upload_glyph(ScreenPtr pScreen, + uxa_glyph_cache_t *cache, + int pos, + GlyphPtr pGlyph) +{ + PicturePtr pGlyphPicture = GlyphPicture(pGlyph)[pScreen->myNum]; + PixmapPtr pGlyphPixmap = (PixmapPtr)pGlyphPicture->pDrawable; + PixmapPtr pCachePixmap = (PixmapPtr)cache->picture->pDrawable; + GCPtr pGC; + + /* UploadToScreen only works if bpp match */ + if (pGlyphPixmap->drawable.bitsPerPixel != pCachePixmap->drawable.bitsPerPixel) + return FALSE; + + pGC = GetScratchGC(pCachePixmap->drawable.depth, pScreen); + ValidateGC(&pCachePixmap->drawable, pGC); + (void) uxa_copy_area (&pGlyphPixmap->drawable, + &pCachePixmap->drawable, + pGC, + 0, 0, pGlyph->info.width, pGlyph->info.height, + CACHE_X(pos), CACHE_Y(pos)); + FreeScratchGC (pGC); + return TRUE; +} + +static uxa_glyph_cache_result_t +uxa_glyph_cache_buffer_glyph(ScreenPtr pScreen, + uxa_glyph_cache_t *cache, + uxa_glyph_buffer_t *buffer, + GlyphPtr pGlyph, + int xGlyph, + int yGlyph) +{ + uxa_composite_rect_t *rect; + int pos; + + if (buffer->source && buffer->source != cache->picture) + return UXA_GLYPH_NEED_FLUSH; + + if (!cache->picture) { + if (!uxa_realize_glyph_caches(pScreen, cache->format)) + return UXA_GLYPH_FAIL; + } + + DBG_GLYPH_CACHE(("(%d,%d,%s): buffering glyph %lx\n", + cache->glyphWidth, cache->glyphHeight, cache->format == PICT_a8 ? "A" : "ARGB", + (long)*(CARD32 *) pGlyph->sha1)); + + pos = uxa_glyph_cache_hash_lookup(cache, pGlyph); + if (pos != -1) { + DBG_GLYPH_CACHE((" found existing glyph at %d\n", pos)); + } else { + if (cache->glyphCount < cache->size) { + /* Space remaining; we fill from the start */ + pos = cache->glyphCount; + cache->glyphCount++; + DBG_GLYPH_CACHE((" storing glyph in free space at %d\n", pos)); + + uxa_glyph_cache_hash_insert(cache, pGlyph, pos); + + } else { + /* Need to evict an entry. We have to see if any glyphs + * already in the output buffer were at this position in + * the cache + */ + + pos = cache->evictionPosition; + DBG_GLYPH_CACHE((" evicting glyph at %d\n", pos)); + if (buffer->count) { + int x, y; + int i; + + x = CACHE_X(pos); + y = CACHE_Y(pos); + + for (i = 0; i < buffer->count; i++) { + if (buffer->rects[i].xSrc == x && buffer->rects[i].ySrc == y) { + DBG_GLYPH_CACHE((" must flush buffer\n")); + return UXA_GLYPH_NEED_FLUSH; + } + } + } + + /* OK, we're all set, swap in the new glyph */ + uxa_glyph_cache_hash_remove(cache, pos); + uxa_glyph_cache_hash_insert(cache, pGlyph, pos); + + /* And pick a new eviction position */ + cache->evictionPosition = rand() % cache->size; + } + + /* Now actually upload the glyph into the cache picture; if + * we can't do it with UploadToScreen (because the glyph is + * offscreen, etc), we fall back to CompositePicture. + */ + if (!uxa_glyph_cache_upload_glyph(pScreen, cache, pos, pGlyph)) { + CompositePicture (PictOpSrc, + GlyphPicture(pGlyph)[pScreen->myNum], + None, + cache->picture, + 0, 0, + 0, 0, + CACHE_X(pos), + CACHE_Y(pos), + pGlyph->info.width, + pGlyph->info.height); + } + + } + + + buffer->source = cache->picture; + + rect = &buffer->rects[buffer->count]; + rect->xSrc = CACHE_X(pos); + rect->ySrc = CACHE_Y(pos); + rect->xDst = xGlyph - pGlyph->info.x; + rect->yDst = yGlyph - pGlyph->info.y; + rect->width = pGlyph->info.width; + rect->height = pGlyph->info.height; + + buffer->count++; + + return UXA_GLYPH_SUCCESS; +} + +#undef CACHE_X +#undef CACHE_Y + +static uxa_glyph_cache_result_t +uxa_buffer_glyph(ScreenPtr pScreen, + uxa_glyph_buffer_t *buffer, + GlyphPtr pGlyph, + int xGlyph, + int yGlyph) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + unsigned int format = (GlyphPicture(pGlyph)[pScreen->myNum])->format; + int width = pGlyph->info.width; + int height = pGlyph->info.height; + uxa_composite_rect_t *rect; + PicturePtr source; + int i; + + if (buffer->count == GLYPH_BUFFER_SIZE) + return UXA_GLYPH_NEED_FLUSH; + + if (PICT_FORMAT_BPP(format) == 1) + format = PICT_a8; + + for (i = 0; i < UXA_NUM_GLYPH_CACHES; i++) { + uxa_glyph_cache_t *cache = &uxa_screen->glyphCaches[i]; + + if (format == cache->format && + width <= cache->glyphWidth && + height <= cache->glyphHeight) { + uxa_glyph_cache_result_t result = uxa_glyph_cache_buffer_glyph(pScreen, &uxa_screen->glyphCaches[i], + buffer, + pGlyph, xGlyph, yGlyph); + switch (result) { + case UXA_GLYPH_FAIL: + break; + case UXA_GLYPH_SUCCESS: + case UXA_GLYPH_NEED_FLUSH: + return result; + } + } + } + + /* Couldn't find the glyph in the cache, use the glyph picture directly */ + + source = GlyphPicture(pGlyph)[pScreen->myNum]; + if (buffer->source && buffer->source != source) + return UXA_GLYPH_NEED_FLUSH; + + buffer->source = source; + + rect = &buffer->rects[buffer->count]; + rect->xSrc = 0; + rect->ySrc = 0; + rect->xDst = xGlyph - pGlyph->info.x; + rect->yDst = yGlyph - pGlyph->info.y; + rect->width = pGlyph->info.width; + rect->height = pGlyph->info.height; + + buffer->count++; + + return UXA_GLYPH_SUCCESS; +} + +static void +uxa_glyphs_to_mask(PicturePtr pMask, + uxa_glyph_buffer_t *buffer) +{ + uxa_composite_rects(PictOpAdd, buffer->source, pMask, + buffer->count, buffer->rects); + + buffer->count = 0; + buffer->source = NULL; +} + +static void +uxa_glyphs_to_dst(CARD8 op, + PicturePtr pSrc, + PicturePtr pDst, + uxa_glyph_buffer_t *buffer, + INT16 xSrc, + INT16 ySrc, + INT16 xDst, + INT16 yDst) +{ + int i; + + for (i = 0; i < buffer->count; i++) { + uxa_composite_rect_t *rect = &buffer->rects[i]; + + CompositePicture (op, + pSrc, + buffer->source, + pDst, + xSrc + rect->xDst - xDst, + ySrc + rect->yDst - yDst, + rect->xSrc, + rect->ySrc, + rect->xDst, + rect->yDst, + rect->width, + rect->height); + } + + buffer->count = 0; + buffer->source = NULL; +} + +/* Cut and paste from render/glyph.c - probably should export it instead */ +static void +uxa_glyph_extents (int nlist, + GlyphListPtr list, + GlyphPtr *glyphs, + BoxPtr extents) +{ + int x1, x2, y1, y2; + int n; + GlyphPtr glyph; + int x, y; + + x = 0; + y = 0; + extents->x1 = MAXSHORT; + extents->x2 = MINSHORT; + extents->y1 = MAXSHORT; + extents->y2 = MINSHORT; + while (nlist--) + { + x += list->xOff; + y += list->yOff; + n = list->len; + list++; + while (n--) + { + glyph = *glyphs++; + x1 = x - glyph->info.x; + if (x1 < MINSHORT) + x1 = MINSHORT; + y1 = y - glyph->info.y; + if (y1 < MINSHORT) + y1 = MINSHORT; + x2 = x1 + glyph->info.width; + if (x2 > MAXSHORT) + x2 = MAXSHORT; + y2 = y1 + glyph->info.height; + if (y2 > MAXSHORT) + y2 = MAXSHORT; + if (x1 < extents->x1) + extents->x1 = x1; + if (x2 > extents->x2) + extents->x2 = x2; + if (y1 < extents->y1) + extents->y1 = y1; + if (y2 > extents->y2) + extents->y2 = y2; + x += glyph->info.xOff; + y += glyph->info.yOff; + } + } +} + +/** + * Returns TRUE if the glyphs in the lists intersect. Only checks based on + * bounding box, which appears to be good enough to catch most cases at least. + */ +static Bool +uxa_glyphs_intersect(int nlist, GlyphListPtr list, GlyphPtr *glyphs) +{ + int x1, x2, y1, y2; + int n; + GlyphPtr glyph; + int x, y; + BoxRec extents; + Bool first = TRUE; + + x = 0; + y = 0; + extents.x1 = 0; + extents.y1 = 0; + extents.x2 = 0; + extents.y2 = 0; + while (nlist--) { + x += list->xOff; + y += list->yOff; + n = list->len; + list++; + while (n--) { + glyph = *glyphs++; + + if (glyph->info.width == 0 || glyph->info.height == 0) { + x += glyph->info.xOff; + y += glyph->info.yOff; + continue; + } + + x1 = x - glyph->info.x; + if (x1 < MINSHORT) + x1 = MINSHORT; + y1 = y - glyph->info.y; + if (y1 < MINSHORT) + y1 = MINSHORT; + x2 = x1 + glyph->info.width; + if (x2 > MAXSHORT) + x2 = MAXSHORT; + y2 = y1 + glyph->info.height; + if (y2 > MAXSHORT) + y2 = MAXSHORT; + + if (first) { + extents.x1 = x1; + extents.y1 = y1; + extents.x2 = x2; + extents.y2 = y2; + first = FALSE; + } else { + if (x1 < extents.x2 && x2 > extents.x1 && + y1 < extents.y2 && y2 > extents.y1) + { + return TRUE; + } + + if (x1 < extents.x1) + extents.x1 = x1; + if (x2 > extents.x2) + extents.x2 = x2; + if (y1 < extents.y1) + extents.y1 = y1; + if (y2 > extents.y2) + extents.y2 = y2; + } + x += glyph->info.xOff; + y += glyph->info.yOff; + } + } + + return FALSE; +} + +void +uxa_glyphs (CARD8 op, + PicturePtr pSrc, + PicturePtr pDst, + PictFormatPtr maskFormat, + INT16 xSrc, + INT16 ySrc, + int nlist, + GlyphListPtr list, + GlyphPtr *glyphs) +{ + PicturePtr pPicture; + PixmapPtr pMaskPixmap = 0; + PicturePtr pMask; + ScreenPtr pScreen = pDst->pDrawable->pScreen; + int width = 0, height = 0; + int x, y; + int xDst = list->xOff, yDst = list->yOff; + int n; + GlyphPtr glyph; + int error; + BoxRec extents = {0, 0, 0, 0}; + CARD32 component_alpha; + uxa_glyph_buffer_t buffer; + + /* If we don't have a mask format but all the glyphs have the same format + * and don't intersect, use the glyph format as mask format for the full + * benefits of the glyph cache. + */ + if (!maskFormat) { + Bool sameFormat = TRUE; + int i; + + maskFormat = list[0].format; + + for (i = 0; i < nlist; i++) { + if (maskFormat->format != list[i].format->format) { + sameFormat = FALSE; + break; + } + } + + if (!sameFormat || (maskFormat->depth != 1 && + uxa_glyphs_intersect(nlist, list, glyphs))) { + maskFormat = NULL; + } + } + + if (maskFormat) + { + GCPtr pGC; + xRectangle rect; + + uxa_glyph_extents (nlist, list, glyphs, &extents); + + if (extents.x2 <= extents.x1 || extents.y2 <= extents.y1) + return; + width = extents.x2 - extents.x1; + height = extents.y2 - extents.y1; + + if (maskFormat->depth == 1) { + PictFormatPtr a8Format = PictureMatchFormat (pScreen, 8, PICT_a8); + + if (a8Format) + maskFormat = a8Format; + } + + pMaskPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, + maskFormat->depth, + CREATE_PIXMAP_USAGE_SCRATCH); + if (!pMaskPixmap) + return; + component_alpha = NeedsComponent(maskFormat->format); + pMask = CreatePicture (0, &pMaskPixmap->drawable, + maskFormat, CPComponentAlpha, &component_alpha, + serverClient, &error); + if (!pMask) + { + (*pScreen->DestroyPixmap) (pMaskPixmap); + return; + } + pGC = GetScratchGC (pMaskPixmap->drawable.depth, pScreen); + ValidateGC (&pMaskPixmap->drawable, pGC); + rect.x = 0; + rect.y = 0; + rect.width = width; + rect.height = height; + (*pGC->ops->PolyFillRect) (&pMaskPixmap->drawable, pGC, 1, &rect); + FreeScratchGC (pGC); + x = -extents.x1; + y = -extents.y1; + } + else + { + pMask = pDst; + x = 0; + y = 0; + } + buffer.count = 0; + buffer.source = NULL; + while (nlist--) + { + x += list->xOff; + y += list->yOff; + n = list->len; + while (n--) + { + glyph = *glyphs++; + pPicture = GlyphPicture (glyph)[pScreen->myNum]; + + if (glyph->info.width > 0 && glyph->info.height > 0 && + uxa_buffer_glyph(pScreen, &buffer, glyph, x, y) == UXA_GLYPH_NEED_FLUSH) + { + if (maskFormat) + uxa_glyphs_to_mask(pMask, &buffer); + else + uxa_glyphs_to_dst(op, pSrc, pDst, &buffer, + xSrc, ySrc, xDst, yDst); + + uxa_buffer_glyph(pScreen, &buffer, glyph, x, y); + } + + x += glyph->info.xOff; + y += glyph->info.yOff; + } + list++; + } + + if (buffer.count) { + if (maskFormat) + uxa_glyphs_to_mask(pMask, &buffer); + else + uxa_glyphs_to_dst(op, pSrc, pDst, &buffer, + xSrc, ySrc, xDst, yDst); + } + + if (maskFormat) + { + x = extents.x1; + y = extents.y1; + CompositePicture (op, + pSrc, + pMask, + pDst, + xSrc + x - xDst, + ySrc + y - yDst, + 0, 0, + x, y, + width, height); + FreePicture ((pointer) pMask, (XID) 0); + (*pScreen->DestroyPixmap) (pMaskPixmap); + } +} + +#endif /* SERVER_1_5 */ diff --git a/driver/xf86-video-intel/uxa/uxa-priv.h b/driver/xf86-video-intel/uxa/uxa-priv.h new file mode 100644 index 000000000..d1cd341eb --- /dev/null +++ b/driver/xf86-video-intel/uxa/uxa-priv.h @@ -0,0 +1,468 @@ +/* + * + * Copyright © 2000,2008 Keith Packard + * 2005 Zack Rusin, Trolltech + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +#ifndef UXAPRIV_H +#define UXAPRIV_H + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#else +#include <xorg-server.h> +#endif +#include "xf86.h" + +#include "uxa.h" + +#include <X11/X.h> +#define NEED_EVENTS +#include <X11/Xproto.h> +#ifdef MITSHM +#define _XSHM_SERVER_ +#include <X11/extensions/shmstr.h> +#endif +#include "scrnintstr.h" +#include "pixmapstr.h" +#include "windowstr.h" +#include "servermd.h" +#include "mibstore.h" +#include "colormapst.h" +#include "gcstruct.h" +#include "input.h" +#include "mipointer.h" +#include "mi.h" +#include "dix.h" +#include "fb.h" +#include "fboverlay.h" +#ifdef RENDER +//#include "fbpict.h" +#include "glyphstr.h" +#endif +#include "damage.h" + +/* 1.6 and earlier server compat */ +#ifndef miGetCompositeClip +#define miCopyRegion fbCopyRegion +#define miDoCopy fbDoCopy +#endif + +#define DEBUG_MIGRATE 0 +#define DEBUG_PIXMAP 0 +#define DEBUG_OFFSCREEN 0 +#define DEBUG_GLYPH_CACHE 0 + +#define UXA_FALLBACK(x) \ +if (uxa_get_screen(screen)->fallback_debug) { \ + ErrorF("UXA fallback at %s: ", __FUNCTION__); \ + ErrorF x; \ +} + +char +uxa_drawable_location(DrawablePtr pDrawable); + +#if DEBUG_PIXMAP +#define DBG_PIXMAP(a) ErrorF a +#else +#define DBG_PIXMAP(a) +#endif + +typedef struct { + unsigned char sha1[20]; +} uxa_cached_glyph_t; + +typedef struct { + /* The identity of the cache, statically configured at initialization */ + unsigned int format; + int glyphWidth; + int glyphHeight; + + int size; /* Size of cache; eventually this should be dynamically determined */ + + /* Hash table mapping from glyph sha1 to position in the glyph; we use + * open addressing with a hash table size determined based on size and large + * enough so that we always have a good amount of free space, so we can + * use linear probing. (Linear probing is preferrable to double hashing + * here because it allows us to easily remove entries.) + */ + int *hashEntries; + int hashSize; + + uxa_cached_glyph_t *glyphs; + int glyphCount; /* Current number of glyphs */ + + PicturePtr picture; /* Where the glyphs of the cache are stored */ + int yOffset; /* y location within the picture where the cache starts */ + int columns; /* Number of columns the glyphs are layed out in */ + int evictionPosition; /* Next random position to evict a glyph */ +} uxa_glyph_cache_t; + +#define UXA_NUM_GLYPH_CACHES 4 + +typedef void (*EnableDisableFBAccessProcPtr)(int, Bool); +typedef struct { + uxa_driver_t *info; + CreateGCProcPtr SavedCreateGC; + CloseScreenProcPtr SavedCloseScreen; + GetImageProcPtr SavedGetImage; + GetSpansProcPtr SavedGetSpans; +#ifndef SERVER_1_5 + PaintWindowBackgroundProcPtr SavedPaintWindowBackground; + PaintWindowBorderProcPtr SavedPaintWindowBorder; +#endif + CreatePixmapProcPtr SavedCreatePixmap; + DestroyPixmapProcPtr SavedDestroyPixmap; + CopyWindowProcPtr SavedCopyWindow; + ChangeWindowAttributesProcPtr SavedChangeWindowAttributes; + BitmapToRegionProcPtr SavedBitmapToRegion; +#ifdef RENDER + CompositeProcPtr SavedComposite; + TrianglesProcPtr SavedTriangles; + GlyphsProcPtr SavedGlyphs; + TrapezoidsProcPtr SavedTrapezoids; + AddTrapsProcPtr SavedAddTraps; +#endif + EnableDisableFBAccessProcPtr SavedEnableDisableFBAccess; + + Bool fallback_debug; + Bool swappedOut; + unsigned disableFbCount; + unsigned offScreenCounter; + + uxa_glyph_cache_t glyphCaches[UXA_NUM_GLYPH_CACHES]; +} uxa_screen_t; + +/* + * This is the only completely portable way to + * compute this info. + */ +#ifndef BitsPerPixel +#define BitsPerPixel(d) (\ + PixmapWidthPaddingInfo[d].notPower2 ? \ + (PixmapWidthPaddingInfo[d].bytesPerPixel * 8) : \ + ((1 << PixmapWidthPaddingInfo[d].padBytesLog2) * 8 / \ + (PixmapWidthPaddingInfo[d].padRoundUp+1))) +#endif + +extern int uxa_screen_index; +static inline uxa_screen_t * +uxa_get_screen(ScreenPtr screen) +{ +#ifdef SERVER_1_5 + return (uxa_screen_t *)dixLookupPrivate(&screen->devPrivates, + &uxa_screen_index); +#else + return screen->devPrivates[uxa_screen_index].ptr; +#endif +} + +/** Align an offset to an arbitrary alignment */ +#define UXA_ALIGN(offset, align) (((offset) + (align) - 1) - \ + (((offset) + (align) - 1) % (align))) +/** Align an offset to a power-of-two alignment */ +#define UXA_ALIGN2(offset, align) (((offset) + (align) - 1) & ~((align) - 1)) + +typedef struct { + INT16 xSrc; + INT16 ySrc; + INT16 xDst; + INT16 yDst; + INT16 width; + INT16 height; +} uxa_composite_rect_t; + +/** + * exaDDXDriverInit must be implemented by the DDX using EXA, and is the place + * to set EXA options or hook in screen functions to handle using EXA as the AA. + */ +void exaDDXDriverInit (ScreenPtr pScreen); + +Bool +uxa_prepare_access_window(WindowPtr pWin); + +void +uxa_finish_access_window(WindowPtr pWin); + +/* uxa-unaccel.c */ +Bool +uxa_prepare_access_gc(GCPtr pGC); + +void +uxa_finish_access_gc(GCPtr pGC); + +void +uxa_check_fill_spans (DrawablePtr pDrawable, GCPtr pGC, int nspans, + DDXPointPtr ppt, int *pwidth, int fSorted); + +void +uxa_check_set_spans (DrawablePtr pDrawable, GCPtr pGC, char *psrc, + DDXPointPtr ppt, int *pwidth, int nspans, int fSorted); + +void +uxa_check_put_image (DrawablePtr pDrawable, GCPtr pGC, int depth, + int x, int y, int w, int h, int leftPad, int format, + char *bits); + +RegionPtr +uxa_check_copy_area (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, + int srcx, int srcy, int w, int h, int dstx, int dsty); + +RegionPtr +uxa_check_copy_plane (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, + int srcx, int srcy, int w, int h, int dstx, int dsty, + unsigned long bitPlane); + +void +uxa_check_poly_point (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, + DDXPointPtr pptInit); + +void +uxa_check_poly_lines (DrawablePtr pDrawable, GCPtr pGC, + int mode, int npt, DDXPointPtr ppt); + +void +uxa_check_poly_segment (DrawablePtr pDrawable, GCPtr pGC, + int nsegInit, xSegment *pSegInit); + +void +uxa_check_poly_arc (DrawablePtr pDrawable, GCPtr pGC, + int narcs, xArc *pArcs); + +void +uxa_check_poly_fill_rect (DrawablePtr pDrawable, GCPtr pGC, + int nrect, xRectangle *prect); + +void +uxa_check_image_glyph_blt (DrawablePtr pDrawable, GCPtr pGC, + int x, int y, unsigned int nglyph, + CharInfoPtr *ppci, pointer pglyphBase); + +void +uxa_check_poly_glyph_blt (DrawablePtr pDrawable, GCPtr pGC, + int x, int y, unsigned int nglyph, + CharInfoPtr *ppci, pointer pglyphBase); + +void +uxa_check_push_pixels (GCPtr pGC, PixmapPtr pBitmap, + DrawablePtr pDrawable, + int w, int h, int x, int y); + +void +uxa_check_get_spans (DrawablePtr pDrawable, + int wMax, + DDXPointPtr ppt, + int *pwidth, + int nspans, + char *pdstStart); + +void uxa_check_paint_window (WindowPtr pWin, RegionPtr pRegion, int what); + +void +uxa_check_add_traps (PicturePtr pPicture, + INT16 x_off, + INT16 y_off, + int ntrap, + xTrap *traps); + +/* uxa-accel.c */ + +static _X_INLINE Bool +uxa_gc_reads_destination(DrawablePtr pDrawable, unsigned long planemask, + unsigned int fillStyle, unsigned char alu) +{ + return ((alu != GXcopy && alu != GXclear &&alu != GXset && + alu != GXcopyInverted) || fillStyle == FillStippled || + !UXA_PM_IS_SOLID(pDrawable, planemask)); +} + +void +uxa_copy_window(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc); + +Bool +uxa_fill_region_tiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile, + DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu); + +void +uxa_shm_put_image(DrawablePtr pDrawable, GCPtr pGC, int depth, unsigned int format, + int w, int h, int sx, int sy, int sw, int sh, int dx, int dy, + char *data); + +void uxa_paint_window(WindowPtr pWin, RegionPtr pRegion, int what); + +void +uxa_get_image (DrawablePtr pDrawable, int x, int y, int w, int h, + unsigned int format, unsigned long planeMask, char *d); + +extern const GCOps uxa_ops; + +#ifdef MITSHM +extern ShmFuncs uxa_shm_funcs; + +/* XXX these come from shmint.h, which isn't exported by the server */ +void +ShmRegisterFuncs(ScreenPtr pScreen, ShmFuncsPtr funcs); + +void +ShmSetPixmapFormat(ScreenPtr pScreen, int format); + +void +fbShmPutImage(XSHM_PUT_IMAGE_ARGS); + +#endif + +#ifdef RENDER + +/* XXX these are in fbpict.h, which is not installed */ +void +fbComposite (CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height); + +void +fbAddTraps (PicturePtr pPicture, + INT16 xOff, + INT16 yOff, + int ntrap, + xTrap *traps); + +void +uxa_check_composite (CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height); +#endif + +/* uxa.c */ +Bool +uxa_prepare_access(DrawablePtr pDrawable, uxa_access_t access); + +void +uxa_finish_access(DrawablePtr pDrawable); + +void +uxa_get_drawable_deltas (DrawablePtr pDrawable, PixmapPtr pPixmap, + int *xp, int *yp); + +Bool +uxa_drawable_is_offscreen (DrawablePtr pDrawable); + +Bool +uxa_pixmap_is_offscreen(PixmapPtr p); + +PixmapPtr +uxa_get_offscreen_pixmap (DrawablePtr pDrawable, int *xp, int *yp); + +PixmapPtr +uxa_get_drawable_pixmap(DrawablePtr pDrawable); + +RegionPtr +uxa_copy_area(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC, + int srcx, int srcy, int width, int height, int dstx, int dsty); + +void +uxa_copy_n_to_n (DrawablePtr pSrcDrawable, + DrawablePtr pDstDrawable, + GCPtr pGC, + BoxPtr pbox, + int nbox, + int dx, + int dy, + Bool reverse, + Bool upsidedown, + Pixel bitplane, + void *closure); + +/* uxa_render.c */ +Bool +uxa_op_reads_destination (CARD8 op); + +void +uxa_composite(CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height); + +void +uxa_composite_rects(CARD8 op, + PicturePtr pSrc, + PicturePtr pDst, + int nrect, + uxa_composite_rect_t *rects); + +void +uxa_trapezoids (CARD8 op, PicturePtr pSrc, PicturePtr pDst, + PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, + int ntrap, xTrapezoid *traps); + +void +uxa_triangles (CARD8 op, PicturePtr pSrc, PicturePtr pDst, + PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, + int ntri, xTriangle *tris); + +/* uxa_glyph.c */ +void +uxa_glyphs_init(ScreenPtr pScreen); + +void +uxa_glyphs_fini (ScreenPtr pScreen); + +void +uxa_glyphs (CARD8 op, + PicturePtr pSrc, + PicturePtr pDst, + PictFormatPtr maskFormat, + INT16 xSrc, + INT16 ySrc, + int nlist, + GlyphListPtr list, + GlyphPtr *glyphs); + +#endif /* UXAPRIV_H */ diff --git a/driver/xf86-video-intel/uxa/uxa-render.c b/driver/xf86-video-intel/uxa/uxa-render.c new file mode 100644 index 000000000..edbf0d8c4 --- /dev/null +++ b/driver/xf86-video-intel/uxa/uxa-render.c @@ -0,0 +1,1019 @@ +/* + * Copyright © 2001 Keith Packard + * + * Partly based on code that is Copyright © The XFree86 Project Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <stdlib.h> + +#include "uxa-priv.h" + +#ifdef RENDER +#include "mipict.h" + +static void uxa_composite_fallback_pict_desc(PicturePtr pict, char *string, int n) +{ + char format[20]; + char size[20]; + char loc; + + if (!pict) { + snprintf(string, n, "None"); + return; + } + + switch (pict->format) + { + case PICT_a8r8g8b8: + snprintf(format, 20, "ARGB8888"); + break; + case PICT_x8r8g8b8: + snprintf(format, 20, "XRGB8888"); + break; + case PICT_r5g6b5: + snprintf(format, 20, "RGB565 "); + break; + case PICT_x1r5g5b5: + snprintf(format, 20, "RGB555 "); + break; + case PICT_a8: + snprintf(format, 20, "A8 "); + break; + case PICT_a1: + snprintf(format, 20, "A1 "); + break; + default: + snprintf(format, 20, "0x%x", (int)pict->format); + break; + } + + loc = uxa_drawable_is_offscreen(pict->pDrawable) ? 's' : 'm'; + + snprintf(size, 20, "%dx%d%s", pict->pDrawable->width, + pict->pDrawable->height, pict->repeat ? + " R" : ""); + + snprintf(string, n, "%p:%c fmt %s (%s)", pict->pDrawable, loc, format, size); +} + +static void +uxa_print_composite_fallback(CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst) +{ + char sop[20]; + char srcdesc[40], maskdesc[40], dstdesc[40]; + + switch(op) + { + case PictOpSrc: + sprintf(sop, "Src"); + break; + case PictOpOver: + sprintf(sop, "Over"); + break; + default: + sprintf(sop, "0x%x", (int)op); + break; + } + + uxa_composite_fallback_pict_desc(pSrc, srcdesc, 40); + uxa_composite_fallback_pict_desc(pMask, maskdesc, 40); + uxa_composite_fallback_pict_desc(pDst, dstdesc, 40); + + ErrorF("Composite fallback: op %s, \n" + " src %s, \n" + " mask %s, \n" + " dst %s, \n", + sop, srcdesc, maskdesc, dstdesc); +} + +Bool +uxa_op_reads_destination (CARD8 op) +{ + /* FALSE (does not read destination) is the list of ops in the protocol + * document with "0" in the "Fb" column and no "Ab" in the "Fa" column. + * That's just Clear and Src. ReduceCompositeOp() will already have + * converted con/disjoint clear/src to Clear or Src. + */ + switch (op) { + case PictOpClear: + case PictOpSrc: + return FALSE; + default: + return TRUE; + } +} + + +static Bool +uxa_get_pixel_from_rgba(CARD32 *pixel, + CARD16 red, + CARD16 green, + CARD16 blue, + CARD16 alpha, + CARD32 format) +{ + int rbits, bbits, gbits, abits; + int rshift, bshift, gshift, ashift; + + *pixel = 0; + + if (!PICT_FORMAT_COLOR(format)) + return FALSE; + + rbits = PICT_FORMAT_R(format); + gbits = PICT_FORMAT_G(format); + bbits = PICT_FORMAT_B(format); + abits = PICT_FORMAT_A(format); + + if (PICT_FORMAT_TYPE(format) == PICT_TYPE_ARGB) { + bshift = 0; + gshift = bbits; + rshift = gshift + gbits; + ashift = rshift + rbits; + } else { /* PICT_TYPE_ABGR */ + rshift = 0; + gshift = rbits; + bshift = gshift + gbits; + ashift = bshift + bbits; + } + + *pixel |= ( blue >> (16 - bbits)) << bshift; + *pixel |= ( red >> (16 - rbits)) << rshift; + *pixel |= (green >> (16 - gbits)) << gshift; + *pixel |= (alpha >> (16 - abits)) << ashift; + + return TRUE; +} + +static Bool +uxa_get_rgba_from_pixel(CARD32 pixel, + CARD16 *red, + CARD16 *green, + CARD16 *blue, + CARD16 *alpha, + CARD32 format) +{ + int rbits, bbits, gbits, abits; + int rshift, bshift, gshift, ashift; + + if (!PICT_FORMAT_COLOR(format)) + return FALSE; + + rbits = PICT_FORMAT_R(format); + gbits = PICT_FORMAT_G(format); + bbits = PICT_FORMAT_B(format); + abits = PICT_FORMAT_A(format); + + if (PICT_FORMAT_TYPE(format) == PICT_TYPE_ARGB) { + bshift = 0; + gshift = bbits; + rshift = gshift + gbits; + ashift = rshift + rbits; + } else { /* PICT_TYPE_ABGR */ + rshift = 0; + gshift = rbits; + bshift = gshift + gbits; + ashift = bshift + bbits; + } + + *red = ((pixel >> rshift ) & ((1 << rbits) - 1)) << (16 - rbits); + while (rbits < 16) { + *red |= *red >> rbits; + rbits <<= 1; + } + + *green = ((pixel >> gshift ) & ((1 << gbits) - 1)) << (16 - gbits); + while (gbits < 16) { + *green |= *green >> gbits; + gbits <<= 1; + } + + *blue = ((pixel >> bshift ) & ((1 << bbits) - 1)) << (16 - bbits); + while (bbits < 16) { + *blue |= *blue >> bbits; + bbits <<= 1; + } + + if (abits) { + *alpha = ((pixel >> ashift ) & ((1 << abits) - 1)) << (16 - abits); + while (abits < 16) { + *alpha |= *alpha >> abits; + abits <<= 1; + } + } else + *alpha = 0xffff; + + return TRUE; +} + +static int +uxa_try_driver_solid_fill(PicturePtr pSrc, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDst->pDrawable->pScreen); + RegionRec region; + BoxPtr pbox; + int nbox; + int dst_off_x, dst_off_y; + PixmapPtr pSrcPix, pDstPix; + CARD32 pixel; + CARD16 red, green, blue, alpha; + + pDstPix = uxa_get_drawable_pixmap (pDst->pDrawable); + pSrcPix = uxa_get_drawable_pixmap (pSrc->pDrawable); + + xDst += pDst->pDrawable->x; + yDst += pDst->pDrawable->y; + xSrc += pSrc->pDrawable->x; + ySrc += pSrc->pDrawable->y; + + if (!miComputeCompositeRegion (®ion, pSrc, NULL, pDst, + xSrc, ySrc, 0, 0, xDst, yDst, + width, height)) + return 1; + + uxa_get_drawable_deltas (pDst->pDrawable, pDstPix, &dst_off_x, &dst_off_y); + + REGION_TRANSLATE(pScreen, ®ion, dst_off_x, dst_off_y); + + pixel = uxa_get_pixmap_first_pixel (pSrcPix); + + if (!uxa_pixmap_is_offscreen(pDstPix)) { + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + return 0; + } + + if (!uxa_get_rgba_from_pixel(pixel, &red, &green, &blue, &alpha, + pSrc->format)) + { + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + return -1; + } + + if (!uxa_get_pixel_from_rgba(&pixel, red, green, blue, alpha, + pDst->format)) + { + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + return -1; + } + + if (!(*uxa_screen->info->prepare_solid) (pDstPix, GXcopy, 0xffffffff, pixel)) + { + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + return -1; + } + + nbox = REGION_NUM_RECTS(®ion); + pbox = REGION_RECTS(®ion); + + while (nbox--) + { + (*uxa_screen->info->solid) (pDstPix, pbox->x1, pbox->y1, pbox->x2, pbox->y2); + pbox++; + } + + (*uxa_screen->info->done_solid) (pDstPix); + + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + return 1; +} + +static int +uxa_try_driver_composite_rects(CARD8 op, + PicturePtr pSrc, + PicturePtr pDst, + int nrect, + uxa_composite_rect_t *rects) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDst->pDrawable->pScreen); + int src_off_x, src_off_y, dst_off_x, dst_off_y; + PixmapPtr pSrcPix, pDstPix; + + if (!uxa_screen->info->prepare_composite || uxa_screen->swappedOut) + return -1; + + if (uxa_screen->info->check_composite && + !(*uxa_screen->info->check_composite) (op, pSrc, NULL, pDst)) + { + return -1; + } + + pDstPix = uxa_get_offscreen_pixmap(pDst->pDrawable, &dst_off_x, &dst_off_y); + if (!pDstPix) + return 0; + + pSrcPix = uxa_get_offscreen_pixmap(pSrc->pDrawable, &src_off_x, &src_off_y); + if (!pSrcPix) + return 0; + + if (!(*uxa_screen->info->prepare_composite) (op, pSrc, NULL, pDst, pSrcPix, + NULL, pDstPix)) + return -1; + + while (nrect--) + { + INT16 xDst = rects->xDst + pDst->pDrawable->x; + INT16 yDst = rects->yDst + pDst->pDrawable->y; + INT16 xSrc = rects->xSrc + pSrc->pDrawable->x; + INT16 ySrc = rects->ySrc + pSrc->pDrawable->y; + + RegionRec region; + BoxPtr pbox; + int nbox; + + if (!miComputeCompositeRegion (®ion, pSrc, NULL, pDst, + xSrc, ySrc, 0, 0, xDst, yDst, + rects->width, rects->height)) + goto next_rect; + + REGION_TRANSLATE(pScreen, ®ion, dst_off_x, dst_off_y); + + nbox = REGION_NUM_RECTS(®ion); + pbox = REGION_RECTS(®ion); + + xSrc = xSrc + src_off_x - xDst - dst_off_x; + ySrc = ySrc + src_off_y - yDst - dst_off_y; + + while (nbox--) + { + (*uxa_screen->info->composite) (pDstPix, + pbox->x1 + xSrc, + pbox->y1 + ySrc, + 0, 0, + pbox->x1, + pbox->y1, + pbox->x2 - pbox->x1, + pbox->y2 - pbox->y1); + pbox++; + } + + next_rect: + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + + rects++; + } + (*uxa_screen->info->done_composite) (pDstPix); + + return 1; +} + +/** + * Copy a number of rectangles from source to destination in a single + * operation. This is specialized for building a glyph mask: we don'y + * have a mask argument because we don't need it for that, and we + * don't have he special-case fallbacks found in uxa_composite() - if the + * driver can support it, we use the driver functionality, otherwise we + * fallback straight to software. + */ +void +uxa_composite_rects(CARD8 op, + PicturePtr pSrc, + PicturePtr pDst, + int nrect, + uxa_composite_rect_t *rects) +{ + int n; + uxa_composite_rect_t *r; + + /************************************************************/ + + ValidatePicture (pSrc); + ValidatePicture (pDst); + + if (uxa_try_driver_composite_rects(op, pSrc, pDst, nrect, rects) != 1) { + n = nrect; + r = rects; + while (n--) { + uxa_check_composite (op, pSrc, NULL, pDst, + r->xSrc, r->ySrc, + 0, 0, + r->xDst, r->yDst, + r->width, r->height); + r++; + } + } + + /************************************************************/ + +} + +static int +uxa_try_driver_composite(CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDst->pDrawable->pScreen); + RegionRec region; + BoxPtr pbox; + int nbox; + int src_off_x, src_off_y, mask_off_x, mask_off_y, dst_off_x, dst_off_y; + PixmapPtr pSrcPix, pMaskPix = NULL, pDstPix; + + xDst += pDst->pDrawable->x; + yDst += pDst->pDrawable->y; + + if (pMask) { + xMask += pMask->pDrawable->x; + yMask += pMask->pDrawable->y; + } + + xSrc += pSrc->pDrawable->x; + ySrc += pSrc->pDrawable->y; + + if (uxa_screen->info->check_composite && + !(*uxa_screen->info->check_composite) (op, pSrc, pMask, pDst)) + { + return -1; + } + + if (!miComputeCompositeRegion (®ion, pSrc, pMask, pDst, + xSrc, ySrc, xMask, yMask, xDst, yDst, + width, height)) + return 1; + + pDstPix = uxa_get_offscreen_pixmap (pDst->pDrawable, &dst_off_x, &dst_off_y); + + pSrcPix = uxa_get_offscreen_pixmap (pSrc->pDrawable, &src_off_x, &src_off_y); + + if (pMask) + pMaskPix = uxa_get_offscreen_pixmap (pMask->pDrawable, &mask_off_x, + &mask_off_y); + + if (!pDstPix || !pSrcPix || (pMask && !pMaskPix)) { + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + return 0; + } + + REGION_TRANSLATE(pScreen, ®ion, dst_off_x, dst_off_y); + + if (!(*uxa_screen->info->prepare_composite) (op, pSrc, pMask, pDst, pSrcPix, + pMaskPix, pDstPix)) + { + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + return -1; + } + + nbox = REGION_NUM_RECTS(®ion); + pbox = REGION_RECTS(®ion); + + xMask = xMask + mask_off_x - xDst - dst_off_x; + yMask = yMask + mask_off_y - yDst - dst_off_y; + + xSrc = xSrc + src_off_x - xDst - dst_off_x; + ySrc = ySrc + src_off_y - yDst - dst_off_y; + + while (nbox--) + { + (*uxa_screen->info->composite) (pDstPix, + pbox->x1 + xSrc, + pbox->y1 + ySrc, + pbox->x1 + xMask, + pbox->y1 + yMask, + pbox->x1, + pbox->y1, + pbox->x2 - pbox->x1, + pbox->y2 - pbox->y1); + pbox++; + } + (*uxa_screen->info->done_composite) (pDstPix); + + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + return 1; +} + +/** + * uxa_try_magic_two_pass_composite_helper implements PictOpOver using two passes of + * simpler operations PictOpOutReverse and PictOpAdd. Mainly used for component + * alpha and limited 1-tmu cards. + * + * From http://anholt.livejournal.com/32058.html: + * + * The trouble is that component-alpha rendering requires two different sources + * for blending: one for the source value to the blender, which is the + * per-channel multiplication of source and mask, and one for the source alpha + * for multiplying with the destination channels, which is the multiplication + * of the source channels by the mask alpha. So the equation for Over is: + * + * dst.A = src.A * mask.A + (1 - (src.A * mask.A)) * dst.A + * dst.R = src.R * mask.R + (1 - (src.A * mask.R)) * dst.R + * dst.G = src.G * mask.G + (1 - (src.A * mask.G)) * dst.G + * dst.B = src.B * mask.B + (1 - (src.A * mask.B)) * dst.B + * + * But we can do some simpler operations, right? How about PictOpOutReverse, + * which has a source factor of 0 and dest factor of (1 - source alpha). We + * can get the source alpha value (srca.X = src.A * mask.X) out of the texture + * blenders pretty easily. So we can do a component-alpha OutReverse, which + * gets us: + * + * dst.A = 0 + (1 - (src.A * mask.A)) * dst.A + * dst.R = 0 + (1 - (src.A * mask.R)) * dst.R + * dst.G = 0 + (1 - (src.A * mask.G)) * dst.G + * dst.B = 0 + (1 - (src.A * mask.B)) * dst.B + * + * OK. And if an op doesn't use the source alpha value for the destination + * factor, then we can do the channel multiplication in the texture blenders + * to get the source value, and ignore the source alpha that we wouldn't use. + * We've supported this in the Radeon driver for a long time. An example would + * be PictOpAdd, which does: + * + * dst.A = src.A * mask.A + dst.A + * dst.R = src.R * mask.R + dst.R + * dst.G = src.G * mask.G + dst.G + * dst.B = src.B * mask.B + dst.B + * + * Hey, this looks good! If we do a PictOpOutReverse and then a PictOpAdd right + * after it, we get: + * + * dst.A = src.A * mask.A + ((1 - (src.A * mask.A)) * dst.A) + * dst.R = src.R * mask.R + ((1 - (src.A * mask.R)) * dst.R) + * dst.G = src.G * mask.G + ((1 - (src.A * mask.G)) * dst.G) + * dst.B = src.B * mask.B + ((1 - (src.A * mask.B)) * dst.B) + */ + +static int +uxa_try_magic_two_pass_composite_helper(CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDst->pDrawable->pScreen); + + assert(op == PictOpOver); + + if (uxa_screen->info->check_composite && + (!(*uxa_screen->info->check_composite)(PictOpOutReverse, pSrc, pMask, + pDst) || + !(*uxa_screen->info->check_composite)(PictOpAdd, pSrc, pMask, pDst))) + { + return -1; + } + + /* Now, we think we should be able to accelerate this operation. First, + * composite the destination to be the destination times the source alpha + * factors. + */ + uxa_composite(PictOpOutReverse, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, + xDst, yDst, width, height); + + /* Then, add in the source value times the destination alpha factors (1.0). + */ + uxa_composite(PictOpAdd, pSrc, pMask, pDst, xSrc, ySrc, xMask, yMask, + xDst, yDst, width, height); + + return 1; +} + +void +uxa_composite(CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pDst->pDrawable->pScreen); + int ret = -1; + Bool saveSrcRepeat = pSrc->repeat; + Bool saveMaskRepeat = pMask ? pMask->repeat : 0; + RegionRec region; + + /* We currently don't support acceleration of gradients, or other pictures + * with a NULL pDrawable. + */ + if (uxa_screen->swappedOut || + pSrc->pDrawable == NULL || (pMask != NULL && pMask->pDrawable == NULL)) + { + goto fallback; + } + + /* Remove repeat in source if useless */ + if (pSrc->repeat && !pSrc->transform && xSrc >= 0 && + (xSrc + width) <= pSrc->pDrawable->width && ySrc >= 0 && + (ySrc + height) <= pSrc->pDrawable->height) + pSrc->repeat = 0; + + if (!pMask) + { + if ((op == PictOpSrc && + ((pSrc->format == pDst->format) || + (pSrc->format==PICT_a8r8g8b8 && pDst->format==PICT_x8r8g8b8) || + (pSrc->format==PICT_a8b8g8r8 && pDst->format==PICT_x8b8g8r8))) || + (op == PictOpOver && !pSrc->alphaMap && !pDst->alphaMap && + pSrc->format == pDst->format && + (pSrc->format==PICT_x8r8g8b8 || pSrc->format==PICT_x8b8g8r8))) + { + if (pSrc->pDrawable->width == 1 && + pSrc->pDrawable->height == 1 && + pSrc->repeat) + { + ret = uxa_try_driver_solid_fill(pSrc, pDst, xSrc, ySrc, xDst, yDst, + width, height); + if (ret == 1) + goto done; + } + else if (pSrc->pDrawable != NULL && + !pSrc->repeat && + !pSrc->transform) + { + xDst += pDst->pDrawable->x; + yDst += pDst->pDrawable->y; + xSrc += pSrc->pDrawable->x; + ySrc += pSrc->pDrawable->y; + + if (!miComputeCompositeRegion (®ion, pSrc, pMask, pDst, + xSrc, ySrc, xMask, yMask, xDst, + yDst, width, height)) + goto done; + + + uxa_copy_n_to_n (pSrc->pDrawable, pDst->pDrawable, NULL, + REGION_RECTS(®ion), REGION_NUM_RECTS(®ion), + xSrc - xDst, ySrc - yDst, + FALSE, FALSE, 0, NULL); + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + goto done; + } + else if (pSrc->pDrawable != NULL && + pSrc->pDrawable->type == DRAWABLE_PIXMAP && + !pSrc->transform && + pSrc->repeatType == RepeatNormal) + { + DDXPointRec patOrg; + + /* Let's see if the driver can do the repeat in one go */ + if (uxa_screen->info->prepare_composite && !pSrc->alphaMap && + !pDst->alphaMap) + { + ret = uxa_try_driver_composite(op, pSrc, pMask, pDst, xSrc, + ySrc, xMask, yMask, xDst, yDst, + width, height); + if (ret == 1) + goto done; + } + + /* Now see if we can use uxa_fill_region_tiled() */ + xDst += pDst->pDrawable->x; + yDst += pDst->pDrawable->y; + xSrc += pSrc->pDrawable->x; + ySrc += pSrc->pDrawable->y; + + if (!miComputeCompositeRegion (®ion, pSrc, pMask, pDst, xSrc, + ySrc, xMask, yMask, xDst, yDst, + width, height)) + goto done; + + /* pattern origin is the point in the destination drawable + * corresponding to (0,0) in the source */ + patOrg.x = xDst - xSrc; + patOrg.y = yDst - ySrc; + + ret = uxa_fill_region_tiled(pDst->pDrawable, ®ion, + (PixmapPtr)pSrc->pDrawable, + &patOrg, FB_ALLONES, GXcopy); + + REGION_UNINIT(pDst->pDrawable->pScreen, ®ion); + + if (ret) + goto done; + } + } + } + + /* Remove repeat in mask if useless */ + if (pMask && pMask->repeat && !pMask->transform && xMask >= 0 && + (xMask + width) <= pMask->pDrawable->width && yMask >= 0 && + (yMask + height) <= pMask->pDrawable->height) + pMask->repeat = 0; + + if (uxa_screen->info->prepare_composite && + !pSrc->alphaMap && (!pMask || !pMask->alphaMap) && !pDst->alphaMap) + { + Bool isSrcSolid; + + ret = uxa_try_driver_composite(op, pSrc, pMask, pDst, xSrc, ySrc, xMask, + yMask, xDst, yDst, width, height); + if (ret == 1) + goto done; + + /* For generic masks and solid src pictures, mach64 can do Over in two + * passes, similar to the component-alpha case. + */ + isSrcSolid = pSrc->pDrawable->width == 1 && + pSrc->pDrawable->height == 1 && + pSrc->repeat; + + /* If we couldn't do the Composite in a single pass, and it was a + * component-alpha Over, see if we can do it in two passes with + * an OutReverse and then an Add. + */ + if (ret == -1 && op == PictOpOver && pMask && + (pMask->componentAlpha || isSrcSolid)) { + ret = uxa_try_magic_two_pass_composite_helper(op, pSrc, pMask, pDst, + xSrc, ySrc, + xMask, yMask, xDst, yDst, + width, height); + if (ret == 1) + goto done; + } + } + +fallback: + if (uxa_screen->fallback_debug) + uxa_print_composite_fallback (op, pSrc, pMask, pDst); + + uxa_check_composite (op, pSrc, pMask, pDst, xSrc, ySrc, + xMask, yMask, xDst, yDst, width, height); + +done: + pSrc->repeat = saveSrcRepeat; + if (pMask) + pMask->repeat = saveMaskRepeat; +} +#endif + +/** + * Same as miCreateAlphaPicture, except it uses uxa_check_poly_fill_rect instead + * of PolyFillRect to initialize the pixmap after creating it, to prevent + * the pixmap from being migrated. + * + * See the comments about uxa_trapezoids and uxa_triangles. + */ +static PicturePtr +uxa_create_alpha_picture (ScreenPtr pScreen, + PicturePtr pDst, + PictFormatPtr pPictFormat, + CARD16 width, + CARD16 height) +{ + PixmapPtr pPixmap; + PicturePtr pPicture; + GCPtr pGC; + int error; + xRectangle rect; + + if (width > 32767 || height > 32767) + return 0; + + if (!pPictFormat) + { + if (pDst->polyEdge == PolyEdgeSharp) + pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1); + else + pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8); + if (!pPictFormat) + return 0; + } + +#ifdef SERVER_1_5 + pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, + pPictFormat->depth, 0); +#else + pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height, + pPictFormat->depth); +#endif + if (!pPixmap) + return 0; + pGC = GetScratchGC (pPixmap->drawable.depth, pScreen); + if (!pGC) + { + (*pScreen->DestroyPixmap) (pPixmap); + return 0; + } + ValidateGC (&pPixmap->drawable, pGC); + rect.x = 0; + rect.y = 0; + rect.width = width; + rect.height = height; + uxa_check_poly_fill_rect (&pPixmap->drawable, pGC, 1, &rect); + FreeScratchGC (pGC); + pPicture = CreatePicture (0, &pPixmap->drawable, pPictFormat, + 0, 0, serverClient, &error); + (*pScreen->DestroyPixmap) (pPixmap); + return pPicture; +} + +/** + * uxa_trapezoids is essentially a copy of miTrapezoids that uses + * uxa_create_alpha_picture instead of miCreateAlphaPicture. + * + * The problem with miCreateAlphaPicture is that it calls PolyFillRect + * to initialize the contents after creating the pixmap, which + * causes the pixmap to be moved in for acceleration. The subsequent + * call to RasterizeTrapezoid won't be accelerated however, which + * forces the pixmap to be moved out again. + * + * uxa_create_alpha_picture avoids this roundtrip by using uxa_check_poly_fill_rect + * to initialize the contents. + */ +void +uxa_trapezoids (CARD8 op, PicturePtr pSrc, PicturePtr pDst, + PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, + int ntrap, xTrapezoid *traps) +{ + ScreenPtr pScreen = pDst->pDrawable->pScreen; + PictureScreenPtr ps = GetPictureScreen(pScreen); + BoxRec bounds; + Bool direct = op == PictOpAdd && miIsSolidAlpha (pSrc); + + if (maskFormat || direct) { + miTrapezoidBounds (ntrap, traps, &bounds); + + if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2) + return; + } + + /* + * Check for solid alpha add + */ + if (direct) + { + DrawablePtr pDraw = pDst->pDrawable; + PixmapPtr pixmap = uxa_get_drawable_pixmap (pDraw); + int xoff, yoff; + + uxa_get_drawable_deltas(pDraw, pixmap, &xoff, &yoff); + + xoff += pDraw->x; + yoff += pDraw->y; + + if (uxa_prepare_access(pDraw, UXA_ACCESS_RW)) + { + for (; ntrap; ntrap--, traps++) + (*ps->RasterizeTrapezoid) (pDst, traps, 0, 0); + uxa_finish_access(pDraw); + } + } + else if (maskFormat) + { + PicturePtr pPicture; + INT16 xDst, yDst; + INT16 xRel, yRel; + + xDst = traps[0].left.p1.x >> 16; + yDst = traps[0].left.p1.y >> 16; + + pPicture = uxa_create_alpha_picture (pScreen, pDst, maskFormat, + bounds.x2 - bounds.x1, + bounds.y2 - bounds.y1); + if (!pPicture) + return; + + if (uxa_prepare_access(pPicture->pDrawable, UXA_ACCESS_RW)) { + for (; ntrap; ntrap--, traps++) + (*ps->RasterizeTrapezoid) (pPicture, traps, + -bounds.x1, -bounds.y1); + uxa_finish_access(pPicture->pDrawable); + } + + xRel = bounds.x1 + xSrc - xDst; + yRel = bounds.y1 + ySrc - yDst; + CompositePicture (op, pSrc, pPicture, pDst, + xRel, yRel, 0, 0, bounds.x1, bounds.y1, + bounds.x2 - bounds.x1, + bounds.y2 - bounds.y1); + FreePicture (pPicture, 0); + } + else + { + if (pDst->polyEdge == PolyEdgeSharp) + maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1); + else + maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8); + for (; ntrap; ntrap--, traps++) + uxa_trapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps); + } +} + +/** + * uxa_triangles is essentially a copy of miTriangles that uses + * uxa_create_alpha_picture instead of miCreateAlphaPicture. + * + * The problem with miCreateAlphaPicture is that it calls PolyFillRect + * to initialize the contents after creating the pixmap, which + * causes the pixmap to be moved in for acceleration. The subsequent + * call to AddTriangles won't be accelerated however, which forces the pixmap + * to be moved out again. + * + * uxa_create_alpha_picture avoids this roundtrip by using uxa_check_poly_fill_rect + * to initialize the contents. + */ +void +uxa_triangles (CARD8 op, PicturePtr pSrc, PicturePtr pDst, + PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc, + int ntri, xTriangle *tris) +{ + ScreenPtr pScreen = pDst->pDrawable->pScreen; + PictureScreenPtr ps = GetPictureScreen(pScreen); + BoxRec bounds; + Bool direct = op == PictOpAdd && miIsSolidAlpha (pSrc); + + if (maskFormat || direct) { + miTriangleBounds (ntri, tris, &bounds); + + if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2) + return; + } + + /* + * Check for solid alpha add + */ + if (direct) + { + DrawablePtr pDraw = pDst->pDrawable; + if (uxa_prepare_access(pDraw, UXA_ACCESS_RW)) { + (*ps->AddTriangles) (pDst, 0, 0, ntri, tris); + uxa_finish_access(pDraw); + } + } + else if (maskFormat) + { + PicturePtr pPicture; + INT16 xDst, yDst; + INT16 xRel, yRel; + + xDst = tris[0].p1.x >> 16; + yDst = tris[0].p1.y >> 16; + + pPicture = uxa_create_alpha_picture (pScreen, pDst, maskFormat, + bounds.x2 - bounds.x1, + bounds.y2 - bounds.y1); + if (!pPicture) + return; + + if (uxa_prepare_access(pPicture->pDrawable, UXA_ACCESS_RW)) { + (*ps->AddTriangles) (pPicture, -bounds.x1, -bounds.y1, ntri, tris); + uxa_finish_access(pPicture->pDrawable); + } + + xRel = bounds.x1 + xSrc - xDst; + yRel = bounds.y1 + ySrc - yDst; + CompositePicture (op, pSrc, pPicture, pDst, + xRel, yRel, 0, 0, bounds.x1, bounds.y1, + bounds.x2 - bounds.x1, bounds.y2 - bounds.y1); + FreePicture (pPicture, 0); + } + else + { + if (pDst->polyEdge == PolyEdgeSharp) + maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1); + else + maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8); + + for (; ntri; ntri--, tris++) + uxa_triangles (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, tris); + } +} diff --git a/driver/xf86-video-intel/uxa/uxa-unaccel.c b/driver/xf86-video-intel/uxa/uxa-unaccel.c new file mode 100644 index 000000000..f63c03b72 --- /dev/null +++ b/driver/xf86-video-intel/uxa/uxa-unaccel.c @@ -0,0 +1,454 @@ +/* + * + * Copyright © 1999 Keith Packard + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include "uxa-priv.h" + +#ifdef RENDER +#include "mipict.h" +#endif + +/* + * These functions wrap the low-level fb rendering functions and + * synchronize framebuffer/accelerated drawing by stalling until + * the accelerator is idle + */ + +/** + * Calls uxa_prepare_access with UXA_PREPARE_SRC for the tile, if that is the + * current fill style. + * + * Solid doesn't use an extra pixmap source, and Stippled/OpaqueStippled are + * 1bpp and never in fb, so we don't worry about them. + * We should worry about them for completeness sake and going forward. + */ +Bool +uxa_prepare_access_gc(GCPtr pGC) +{ + if (pGC->stipple) + if (!uxa_prepare_access(&pGC->stipple->drawable, UXA_ACCESS_RO)) + return FALSE; + if (pGC->fillStyle == FillTiled) + if (!uxa_prepare_access(&pGC->tile.pixmap->drawable, UXA_ACCESS_RO)) { + if (pGC->stipple) + uxa_finish_access(&pGC->stipple->drawable); + return FALSE; + } + return TRUE; +} + +/** + * Finishes access to the tile in the GC, if used. + */ +void +uxa_finish_access_gc(GCPtr pGC) +{ + if (pGC->fillStyle == FillTiled) + uxa_finish_access(&pGC->tile.pixmap->drawable); + if (pGC->stipple) + uxa_finish_access(&pGC->stipple->drawable); +} + +char +uxa_drawable_location(DrawablePtr pDrawable) +{ + return uxa_drawable_is_offscreen(pDrawable) ? 's' : 'm'; +} + +void +uxa_check_fill_spans (DrawablePtr pDrawable, GCPtr pGC, int nspans, + DDXPointPtr ppt, int *pwidth, int fSorted) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable))); + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access_gc (pGC)) { + fbFillSpans (pDrawable, pGC, nspans, ppt, pwidth, fSorted); + uxa_finish_access_gc (pGC); + } + uxa_finish_access (pDrawable); + } +} + +void +uxa_check_set_spans (DrawablePtr pDrawable, GCPtr pGC, char *psrc, + DDXPointPtr ppt, int *pwidth, int nspans, int fSorted) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable))); + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + fbSetSpans (pDrawable, pGC, psrc, ppt, pwidth, nspans, fSorted); + uxa_finish_access (pDrawable); + } +} + +void +uxa_check_put_image (DrawablePtr pDrawable, GCPtr pGC, int depth, + int x, int y, int w, int h, int leftPad, int format, + char *bits) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable))); + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + fbPutImage (pDrawable, pGC, depth, x, y, w, h, leftPad, format, bits); + uxa_finish_access (pDrawable); + } +} + +RegionPtr +uxa_check_copy_area (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, + int srcx, int srcy, int w, int h, int dstx, int dsty) +{ + ScreenPtr screen = pSrc->pScreen; + RegionPtr ret = NULL; + + UXA_FALLBACK(("from %p to %p (%c,%c)\n", pSrc, pDst, + uxa_drawable_location(pSrc), uxa_drawable_location(pDst))); + if (uxa_prepare_access (pDst, UXA_ACCESS_RW)) { + if (uxa_prepare_access (pSrc, UXA_ACCESS_RO)) { + ret = fbCopyArea (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty); + uxa_finish_access (pSrc); + } + uxa_finish_access (pDst); + } + return ret; +} + +RegionPtr +uxa_check_copy_plane (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC, + int srcx, int srcy, int w, int h, int dstx, int dsty, + unsigned long bitPlane) +{ + ScreenPtr screen = pSrc->pScreen; + RegionPtr ret = NULL; + + UXA_FALLBACK(("from %p to %p (%c,%c)\n", pSrc, pDst, + uxa_drawable_location(pSrc), uxa_drawable_location(pDst))); + if (uxa_prepare_access (pDst, UXA_ACCESS_RW)) { + if (uxa_prepare_access (pSrc, UXA_ACCESS_RO)) { + ret = fbCopyPlane (pSrc, pDst, pGC, srcx, srcy, w, h, dstx, dsty, + bitPlane); + uxa_finish_access (pSrc); + } + uxa_finish_access (pDst); + } + return ret; +} + +void +uxa_check_poly_point (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt, + DDXPointPtr pptInit) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable))); + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + fbPolyPoint (pDrawable, pGC, mode, npt, pptInit); + uxa_finish_access (pDrawable); + } +} + +void +uxa_check_poly_lines (DrawablePtr pDrawable, GCPtr pGC, + int mode, int npt, DDXPointPtr ppt) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c), width %d, mode %d, count %d\n", + pDrawable, uxa_drawable_location(pDrawable), + pGC->lineWidth, mode, npt)); + + if (pGC->lineWidth == 0) { + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access_gc (pGC)) { + fbPolyLine (pDrawable, pGC, mode, npt, ppt); + uxa_finish_access_gc (pGC); + } + uxa_finish_access (pDrawable); + } + return; + } + /* fb calls mi functions in the lineWidth != 0 case. */ + fbPolyLine (pDrawable, pGC, mode, npt, ppt); +} + +void +uxa_check_poly_segment (DrawablePtr pDrawable, GCPtr pGC, + int nsegInit, xSegment *pSegInit) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c) width %d, count %d\n", pDrawable, + uxa_drawable_location(pDrawable), pGC->lineWidth, nsegInit)); + if (pGC->lineWidth == 0) { + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access_gc (pGC)) { + fbPolySegment (pDrawable, pGC, nsegInit, pSegInit); + uxa_finish_access_gc (pGC); + } + uxa_finish_access (pDrawable); + } + return; + } + /* fb calls mi functions in the lineWidth != 0 case. */ + fbPolySegment (pDrawable, pGC, nsegInit, pSegInit); +} + +void +uxa_check_poly_arc (DrawablePtr pDrawable, GCPtr pGC, + int narcs, xArc *pArcs) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable))); + + /* Disable this as fbPolyArc can call miZeroPolyArc which in turn + * can call accelerated functions, that as yet, haven't been notified + * with uxa_finish_access(). + */ +#if 0 + if (pGC->lineWidth == 0) + { + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access_gc (pGC)) { + fbPolyArc (pDrawable, pGC, narcs, pArcs); + uxa_finish_access_gc (pGC); + } + uxa_finish_access (pDrawable); + } + return; + } +#endif + miPolyArc (pDrawable, pGC, narcs, pArcs); +} + +void +uxa_check_poly_fill_rect (DrawablePtr pDrawable, GCPtr pGC, + int nrect, xRectangle *prect) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable))); + + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access_gc (pGC)) { + fbPolyFillRect (pDrawable, pGC, nrect, prect); + uxa_finish_access_gc (pGC); + } + uxa_finish_access (pDrawable); + } +} + +void +uxa_check_image_glyph_blt (DrawablePtr pDrawable, GCPtr pGC, + int x, int y, unsigned int nglyph, + CharInfoPtr *ppci, pointer pglyphBase) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c)\n", pDrawable, + uxa_drawable_location(pDrawable))); + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access_gc (pGC)) { + fbImageGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); + uxa_finish_access_gc (pGC); + } + uxa_finish_access (pDrawable); + } +} + +void +uxa_check_poly_glyph_blt (DrawablePtr pDrawable, GCPtr pGC, + int x, int y, unsigned int nglyph, + CharInfoPtr *ppci, pointer pglyphBase) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("to %p (%c), style %d alu %d\n", pDrawable, + uxa_drawable_location(pDrawable), pGC->fillStyle, pGC->alu)); + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access_gc (pGC)) { + fbPolyGlyphBlt (pDrawable, pGC, x, y, nglyph, ppci, pglyphBase); + uxa_finish_access_gc (pGC); + } + uxa_finish_access (pDrawable); + } +} + +void +uxa_check_push_pixels (GCPtr pGC, PixmapPtr pBitmap, + DrawablePtr pDrawable, + int w, int h, int x, int y) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("from %p to %p (%c,%c)\n", pBitmap, pDrawable, + uxa_drawable_location(&pBitmap->drawable), + uxa_drawable_location(pDrawable))); + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access (&pBitmap->drawable, UXA_ACCESS_RO)) { + if (uxa_prepare_access_gc (pGC)) { + fbPushPixels (pGC, pBitmap, pDrawable, w, h, x, y); + uxa_finish_access_gc (pGC); + } + uxa_finish_access (&pBitmap->drawable); + } + uxa_finish_access (pDrawable); + } +} + +void +uxa_check_get_spans (DrawablePtr pDrawable, + int wMax, + DDXPointPtr ppt, + int *pwidth, + int nspans, + char *pdstStart) +{ + ScreenPtr screen = pDrawable->pScreen; + + UXA_FALLBACK(("from %p (%c)\n", pDrawable, uxa_drawable_location(pDrawable))); + if (uxa_prepare_access (pDrawable, UXA_ACCESS_RO)) { + fbGetSpans (pDrawable, wMax, ppt, pwidth, nspans, pdstStart); + uxa_finish_access (pDrawable); + } +} + +#ifndef SERVER_1_5 +void +uxa_check_paint_window (WindowPtr pWin, RegionPtr pRegion, int what) +{ + ScreenPtr screen = pWin->drawable.pScreen; + + UXA_FALLBACK(("from %p (%c)\n", pWin, + uxa_drawable_location (&pWin->drawable))); + if (uxa_prepare_access (&pWin->drawable, UXA_ACCESS_RW)) { + if (uxa_prepare_access_window (pWin)) { + fbPaintWindow (pWin, pRegion, what); + uxa_finish_access_window (pWin); + } + uxa_finish_access(&pWin->drawable); + } +} +#endif + +void +uxa_check_composite (CARD8 op, + PicturePtr pSrc, + PicturePtr pMask, + PicturePtr pDst, + INT16 xSrc, + INT16 ySrc, + INT16 xMask, + INT16 yMask, + INT16 xDst, + INT16 yDst, + CARD16 width, + CARD16 height) +{ + ScreenPtr screen = pDst->pDrawable->pScreen; + + UXA_FALLBACK(("from picts %p/%p to pict %p\n", + pSrc, pMask, pDst)); + + if (uxa_prepare_access (pDst->pDrawable, UXA_ACCESS_RW)) + { + if (pSrc->pDrawable == NULL || + uxa_prepare_access (pSrc->pDrawable, UXA_ACCESS_RO)) + { + if (!pMask || pMask->pDrawable == NULL || + uxa_prepare_access (pMask->pDrawable, UXA_ACCESS_RO)) + { + fbComposite (op, + pSrc, + pMask, + pDst, + xSrc, + ySrc, + xMask, + yMask, + xDst, + yDst, + width, + height); + if (pMask && pMask->pDrawable != NULL) + uxa_finish_access (pMask->pDrawable); + } + if (pSrc->pDrawable != NULL) + uxa_finish_access (pSrc->pDrawable); + } + uxa_finish_access (pDst->pDrawable); + } +} + +void +uxa_check_add_traps (PicturePtr pPicture, + INT16 x_off, + INT16 y_off, + int ntrap, + xTrap *traps) +{ + ScreenPtr screen = pPicture->pDrawable->pScreen; + + UXA_FALLBACK(("to pict %p (%c)\n", pPicture, + uxa_drawable_location(pPicture->pDrawable))); + if (uxa_prepare_access(pPicture->pDrawable, UXA_ACCESS_RW)) { + fbAddTraps (pPicture, x_off, y_off, ntrap, traps); + uxa_finish_access(pPicture->pDrawable); + } +} + +/** + * Gets the 0,0 pixel of a pixmap. Used for doing solid fills of tiled pixmaps + * that happen to be 1x1. Pixmap must be at least 8bpp. + * + * XXX This really belongs in fb, so it can be aware of tiling and etc. + */ +CARD32 +uxa_get_pixmap_first_pixel (PixmapPtr pPixmap) +{ + CARD32 pixel; + void *fb; + + if (!uxa_prepare_access (&pPixmap->drawable, UXA_ACCESS_RO)) + return 0; + + fb = pPixmap->devPrivate.ptr; + + switch (pPixmap->drawable.bitsPerPixel) { + case 32: + pixel = *(CARD32 *)fb; + break; + case 16: + pixel = *(CARD16 *)fb; + break; + default: + pixel = *(CARD8 *)fb; + break; + } + uxa_finish_access(&pPixmap->drawable); + + return pixel; +} diff --git a/driver/xf86-video-intel/uxa/uxa.c b/driver/xf86-video-intel/uxa/uxa.c new file mode 100644 index 000000000..b51a282d4 --- /dev/null +++ b/driver/xf86-video-intel/uxa/uxa.c @@ -0,0 +1,589 @@ +/* + * Copyright © 2001 Keith Packard + * + * Partly based on code that is Copyright © The XFree86 Project Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/** @file + * This file covers the initialization and teardown of UXA, and has various + * functions not responsible for performing rendering, pixmap migration, or + * memory management. + */ + +#ifdef HAVE_DIX_CONFIG_H +#include <dix-config.h> +#endif + +#include <stdlib.h> + +#include "uxa-priv.h" +#include <X11/fonts/fontstruct.h> +#include "dixfontstr.h" +#include "uxa.h" + +int uxa_screen_index; +#ifndef SERVER_1_5 +static int uxa_generation; +#endif + +/** + * uxa_get_drawable_pixmap() returns a backing pixmap for a given drawable. + * + * @param pDrawable the drawable being requested. + * + * This function returns the backing pixmap for a drawable, whether it is a + * redirected window, unredirected window, or already a pixmap. Note that + * coordinate translation is needed when drawing to the backing pixmap of a + * redirected window, and the translation coordinates are provided by calling + * uxa_get_drawable_pixmap() on the drawable. + */ +PixmapPtr +uxa_get_drawable_pixmap(DrawablePtr pDrawable) +{ + if (pDrawable->type == DRAWABLE_WINDOW) + return pDrawable->pScreen->GetWindowPixmap ((WindowPtr) pDrawable); + else + return (PixmapPtr) pDrawable; +} + +/** + * Sets the offsets to add to coordinates to make them address the same bits in + * the backing drawable. These coordinates are nonzero only for redirected + * windows. + */ +void +uxa_get_drawable_deltas (DrawablePtr pDrawable, PixmapPtr pPixmap, + int *xp, int *yp) +{ +#ifdef COMPOSITE + if (pDrawable->type == DRAWABLE_WINDOW) { + *xp = -pPixmap->screen_x; + *yp = -pPixmap->screen_y; + return; + } +#endif + + *xp = 0; + *yp = 0; +} + +/** + * uxa_pixmap_is_offscreen() is used to determine if a pixmap is in offscreen + * memory, meaning that acceleration could probably be done to it, and that it + * will need to be wrapped by PrepareAccess()/FinishAccess() when accessing it + * with the CPU. + * + * Note that except for UploadToScreen()/DownloadFromScreen() (which explicitly + * deal with moving pixmaps in and out of system memory), UXA will give drivers + * pixmaps as arguments for which uxa_pixmap_is_offscreen() is TRUE. + * + * @return TRUE if the given drawable is in framebuffer memory. + */ +Bool +uxa_pixmap_is_offscreen(PixmapPtr p) +{ + ScreenPtr pScreen = p->drawable.pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + + if (uxa_screen->info->pixmap_is_offscreen) + return uxa_screen->info->pixmap_is_offscreen(p); + + return FALSE; +} + +/** + * uxa_drawable_is_offscreen() is a convenience wrapper for uxa_pixmap_is_offscreen(). + */ +Bool +uxa_drawable_is_offscreen (DrawablePtr pDrawable) +{ + return uxa_pixmap_is_offscreen (uxa_get_drawable_pixmap (pDrawable)); +} + +/** + * Returns the pixmap which backs a drawable, and the offsets to add to + * coordinates to make them address the same bits in the backing drawable. + */ +PixmapPtr +uxa_get_offscreen_pixmap (DrawablePtr drawable, int *xp, int *yp) +{ + PixmapPtr pixmap = uxa_get_drawable_pixmap (drawable); + + uxa_get_drawable_deltas (drawable, pixmap, xp, yp); + + if (uxa_pixmap_is_offscreen (pixmap)) + return pixmap; + else + return NULL; +} + + + +/** + * uxa_prepare_access() is UXA's wrapper for the driver's PrepareAccess() handler. + * + * It deals with waiting for synchronization with the card, determining if + * PrepareAccess() is necessary, and working around PrepareAccess() failure. + */ +Bool +uxa_prepare_access(DrawablePtr pDrawable, uxa_access_t access) +{ + ScreenPtr pScreen = pDrawable->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + PixmapPtr pPixmap = uxa_get_drawable_pixmap (pDrawable); + Bool offscreen = uxa_pixmap_is_offscreen(pPixmap); + + if (!offscreen) + return TRUE; + + if (uxa_screen->info->prepare_access) + return (*uxa_screen->info->prepare_access) (pPixmap, access); + return TRUE; +} + +/** + * uxa_finish_access() is UXA's wrapper for the driver's finish_access() handler. + * + * It deals with calling the driver's finish_access() only if necessary. + */ +void +uxa_finish_access(DrawablePtr pDrawable) +{ + ScreenPtr pScreen = pDrawable->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + PixmapPtr pPixmap = uxa_get_drawable_pixmap (pDrawable); + + if (uxa_screen->info->finish_access == NULL) + return; + + if (!uxa_pixmap_is_offscreen (pPixmap)) + return; + + (*uxa_screen->info->finish_access) (pPixmap); +} + +/** + * uxa_validate_gc() sets the ops to UXA's implementations, which may be + * accelerated or may sync the card and fall back to fb. + */ +static void +uxa_validate_gc (GCPtr pGC, unsigned long changes, DrawablePtr pDrawable) +{ + /* fbValidateGC will do direct access to pixmaps if the tiling has changed. + * Preempt fbValidateGC by doing its work and masking the change out, so + * that we can do the Prepare/finish_access. + */ +#ifdef FB_24_32BIT + if ((changes & GCTile) && fbGetRotatedPixmap(pGC)) { + (*pGC->pScreen->DestroyPixmap) (fbGetRotatedPixmap(pGC)); + fbGetRotatedPixmap(pGC) = 0; + } + + if (pGC->fillStyle == FillTiled) { + PixmapPtr pOldTile, pNewTile; + + pOldTile = pGC->tile.pixmap; + if (pOldTile->drawable.bitsPerPixel != pDrawable->bitsPerPixel) + { + pNewTile = fbGetRotatedPixmap(pGC); + if (!pNewTile || + pNewTile ->drawable.bitsPerPixel != pDrawable->bitsPerPixel) + { + if (pNewTile) + (*pGC->pScreen->DestroyPixmap) (pNewTile); + /* fb24_32ReformatTile will do direct access of a newly- + * allocated pixmap. This isn't a problem yet, since we don't + * put pixmaps in FB until at least one accelerated UXA op. + */ + if (uxa_prepare_access(&pOldTile->drawable, UXA_ACCESS_RO)) { + pNewTile = fb24_32ReformatTile (pOldTile, + pDrawable->bitsPerPixel); + uxa_finish_access(&pOldTile->drawable); + } + } + if (pNewTile) + { + fbGetRotatedPixmap(pGC) = pOldTile; + pGC->tile.pixmap = pNewTile; + changes |= GCTile; + } + } + } +#endif + if (changes & GCTile) { + if (!pGC->tileIsPixel && FbEvenTile (pGC->tile.pixmap->drawable.width * + pDrawable->bitsPerPixel)) + { + if (uxa_prepare_access(&pGC->tile.pixmap->drawable, UXA_ACCESS_RW)) { + fbPadPixmap (pGC->tile.pixmap); + uxa_finish_access(&pGC->tile.pixmap->drawable); + } + } + /* Mask out the GCTile change notification, now that we've done FB's + * job for it. + */ + changes &= ~GCTile; + } + + if (changes & GCStipple && pGC->stipple) { + /* We can't inline stipple handling like we do for GCTile because it sets + * fbgc privates. + */ + uxa_prepare_access(&pGC->stipple->drawable, UXA_ACCESS_RW); + fbValidateGC (pGC, changes, pDrawable); + uxa_finish_access(&pGC->stipple->drawable); + } else { + fbValidateGC (pGC, changes, pDrawable); + } + + pGC->ops = (GCOps *) &uxa_ops; +} + +static GCFuncs uxaGCFuncs = { + uxa_validate_gc, + miChangeGC, + miCopyGC, + miDestroyGC, + miChangeClip, + miDestroyClip, + miCopyClip +}; + +/** + * uxa_create_gc makes a new GC and hooks up its funcs handler, so that + * uxa_validate_gc() will get called. + */ +static int +uxa_create_gc (GCPtr pGC) +{ + if (!fbCreateGC (pGC)) + return FALSE; + + pGC->funcs = &uxaGCFuncs; + + return TRUE; +} + +Bool +uxa_prepare_access_window(WindowPtr pWin) +{ + if (pWin->backgroundState == BackgroundPixmap) { + if (!uxa_prepare_access(&pWin->background.pixmap->drawable, UXA_ACCESS_RO)) + return FALSE; + } + + if (pWin->borderIsPixel == FALSE) { + if (!uxa_prepare_access(&pWin->border.pixmap->drawable, UXA_ACCESS_RO)) { + if (pWin->backgroundState == BackgroundPixmap) + uxa_finish_access(&pWin->background.pixmap->drawable); + return FALSE; + } + } + return TRUE; +} + +void +uxa_finish_access_window(WindowPtr pWin) +{ + if (pWin->backgroundState == BackgroundPixmap) + uxa_finish_access(&pWin->background.pixmap->drawable); + + if (pWin->borderIsPixel == FALSE) + uxa_finish_access(&pWin->border.pixmap->drawable); +} + +static Bool +uxa_change_window_attributes(WindowPtr pWin, unsigned long mask) +{ + Bool ret; + + if (!uxa_prepare_access_window(pWin)) + return FALSE; + ret = fbChangeWindowAttributes(pWin, mask); + uxa_finish_access_window(pWin); + return ret; +} + +static RegionPtr +uxa_bitmap_to_region(PixmapPtr pPix) +{ + RegionPtr ret; + if (!uxa_prepare_access(&pPix->drawable, UXA_ACCESS_RO)) + return NULL; + ret = fbPixmapToRegion(pPix); + uxa_finish_access(&pPix->drawable); + return ret; +} + +static void +uxa_xorg_enable_disable_fb_access (int index, Bool enable) +{ + ScreenPtr screen = screenInfo.screens[index]; + uxa_screen_t *uxa_screen = uxa_get_screen(screen); + + if (!enable && uxa_screen->disableFbCount++ == 0) + uxa_screen->swappedOut = TRUE; + + if (enable && --uxa_screen->disableFbCount == 0) + uxa_screen->swappedOut = FALSE; + + if (uxa_screen->SavedEnableDisableFBAccess) + uxa_screen->SavedEnableDisableFBAccess(index, enable); +} + +void +uxa_set_fallback_debug (ScreenPtr screen, Bool enable) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(screen); + + uxa_screen->fallback_debug = enable; +} + +/** + * uxa_close_screen() unwraps its wrapped screen functions and tears down UXA's + * screen private, before calling down to the next CloseSccreen. + */ +static Bool +uxa_close_screen(int i, ScreenPtr pScreen) +{ + uxa_screen_t *uxa_screen = uxa_get_screen(pScreen); + ScrnInfoPtr scrn = xf86Screens[pScreen->myNum]; +#ifdef RENDER + PictureScreenPtr ps = GetPictureScreenIfSet(pScreen); +#endif + +#ifdef SERVER_1_5 + uxa_glyphs_fini(pScreen); +#endif + + pScreen->CreateGC = uxa_screen->SavedCreateGC; + pScreen->CloseScreen = uxa_screen->SavedCloseScreen; + pScreen->GetImage = uxa_screen->SavedGetImage; + pScreen->GetSpans = uxa_screen->SavedGetSpans; +#ifndef SERVER_1_5 + pScreen->PaintWindowBackground = uxa_screen->SavedPaintWindowBackground; + pScreen->PaintWindowBorder = uxa_screen->SavedPaintWindowBorder; +#endif + pScreen->CreatePixmap = uxa_screen->SavedCreatePixmap; + pScreen->DestroyPixmap = uxa_screen->SavedDestroyPixmap; + pScreen->CopyWindow = uxa_screen->SavedCopyWindow; + pScreen->ChangeWindowAttributes = uxa_screen->SavedChangeWindowAttributes; + pScreen->BitmapToRegion = uxa_screen->SavedBitmapToRegion; + scrn->EnableDisableFBAccess = uxa_screen->SavedEnableDisableFBAccess; +#ifdef RENDER + if (ps) { + ps->Composite = uxa_screen->SavedComposite; + ps->Glyphs = uxa_screen->SavedGlyphs; + ps->Trapezoids = uxa_screen->SavedTrapezoids; + ps->AddTraps = uxa_screen->SavedAddTraps; + ps->Triangles = uxa_screen->SavedTriangles; + } +#endif + + xfree (uxa_screen); + + return (*pScreen->CloseScreen) (i, pScreen); +} + +/** + * This function allocates a driver structure for UXA drivers to fill in. By + * having UXA allocate the structure, the driver structure can be extended + * without breaking ABI between UXA and the drivers. The driver's + * responsibility is to check beforehand that the UXA module has a matching + * major number and sufficient minor. Drivers are responsible for freeing the + * driver structure using xfree(). + * + * @return a newly allocated, zero-filled driver structure + */ +uxa_driver_t * +uxa_driver_alloc(void) +{ + return xcalloc(1, sizeof(uxa_driver_t)); +} + +/** + * @param pScreen screen being initialized + * @param pScreenInfo UXA driver record + * + * uxa_driver_init sets up UXA given a driver record filled in by the driver. + * pScreenInfo should have been allocated by uxa_driver_alloc(). See the + * comments in _UxaDriver for what must be filled in and what is optional. + * + * @return TRUE if UXA was successfully initialized. + */ +Bool +uxa_driver_init(ScreenPtr screen, uxa_driver_t *uxa_driver) +{ + uxa_screen_t *uxa_screen; + ScrnInfoPtr scrn = xf86Screens[screen->myNum]; +#ifdef RENDER + PictureScreenPtr ps; +#endif + + if (!uxa_driver) + return FALSE; + + if (uxa_driver->uxa_major != UXA_VERSION_MAJOR || + uxa_driver->uxa_minor > UXA_VERSION_MINOR) + { + LogMessage(X_ERROR, "UXA(%d): driver's UXA version requirements " + "(%d.%d) are incompatible with UXA version (%d.%d)\n", + screen->myNum, + uxa_driver->uxa_major, uxa_driver->uxa_minor, + UXA_VERSION_MAJOR, UXA_VERSION_MINOR); + return FALSE; + } + + if (!uxa_driver->prepare_solid) { + LogMessage(X_ERROR, "UXA(%d): uxa_driver_t::prepare_solid must be " + "non-NULL\n", screen->myNum); + return FALSE; + } + + if (!uxa_driver->prepare_copy) { + LogMessage(X_ERROR, "UXA(%d): uxa_driver_t::prepare_copy must be " + "non-NULL\n", screen->myNum); + return FALSE; + } + +#ifdef RENDER + ps = GetPictureScreenIfSet(screen); +#endif + + uxa_screen = xcalloc (sizeof (uxa_screen_t), 1); + + if (!uxa_screen) { + LogMessage(X_WARNING, "UXA(%d): Failed to allocate screen private\n", + screen->myNum); + return FALSE; + } + + uxa_screen->info = uxa_driver; + +#ifdef SERVER_1_5 + dixSetPrivate(&screen->devPrivates, &uxa_screen_index, uxa_screen); +#else + if (uxa_generation != serverGeneration) { + uxa_screen_index = AllocateScreenPrivateIndex(); + uxa_generation = serverGeneration; + } + screen->devPrivates[uxa_screen_index].ptr = uxa_screen; +#endif + +// exaDDXDriverInit(screen); + + /* + * Replace various fb screen functions + */ + uxa_screen->SavedCloseScreen = screen->CloseScreen; + screen->CloseScreen = uxa_close_screen; + + uxa_screen->SavedCreateGC = screen->CreateGC; + screen->CreateGC = uxa_create_gc; + + uxa_screen->SavedGetImage = screen->GetImage; + screen->GetImage = uxa_get_image; + + uxa_screen->SavedGetSpans = screen->GetSpans; + screen->GetSpans = uxa_check_get_spans; + +#ifndef SERVER_1_5 + uxa_screen->SavedPaintWindowBackground = screen->PaintWindowBackground; + screen->PaintWindowBackground = uxa_paint_window; + + uxa_screen->SavedPaintWindowBorder = screen->PaintWindowBorder; + screen->PaintWindowBorder = uxa_paint_window; +#endif /* !SERVER_1_5 */ + + uxa_screen->SavedCopyWindow = screen->CopyWindow; + screen->CopyWindow = uxa_copy_window; + + uxa_screen->SavedChangeWindowAttributes = screen->ChangeWindowAttributes; + screen->ChangeWindowAttributes = uxa_change_window_attributes; + + uxa_screen->SavedBitmapToRegion = screen->BitmapToRegion; + screen->BitmapToRegion = uxa_bitmap_to_region; + + uxa_screen->SavedEnableDisableFBAccess = scrn->EnableDisableFBAccess; + scrn->EnableDisableFBAccess = uxa_xorg_enable_disable_fb_access; + +#ifdef RENDER + if (ps) { + uxa_screen->SavedComposite = ps->Composite; + ps->Composite = uxa_composite; + +#ifdef SERVER_1_5 + uxa_screen->SavedGlyphs = ps->Glyphs; + ps->Glyphs = uxa_glyphs; +#endif + + uxa_screen->SavedTriangles = ps->Triangles; + ps->Triangles = uxa_triangles; + + uxa_screen->SavedTrapezoids = ps->Trapezoids; + ps->Trapezoids = uxa_trapezoids; + + uxa_screen->SavedAddTraps = ps->AddTraps; + ps->AddTraps = uxa_check_add_traps; + } +#endif + +#ifdef MITSHM + /* Re-register with the MI funcs, which don't allow shared pixmaps. + * Shared pixmaps are almost always a performance loss for us, but this + * still allows for SHM PutImage. + */ + ShmRegisterFuncs(screen, &uxa_shm_funcs); +#endif + +#ifdef SERVER_1_5 + uxa_glyphs_init(screen); +#endif + + LogMessage(X_INFO, "UXA(%d): Driver registered support for the following" + " operations:\n", screen->myNum); + assert(uxa_driver->prepare_solid != NULL); + LogMessage(X_INFO, " solid\n"); + assert(uxa_driver->prepare_copy != NULL); + LogMessage(X_INFO, " copy\n"); + if (uxa_driver->prepare_composite != NULL) { + LogMessage(X_INFO, " composite (RENDER acceleration)\n"); + } + if (uxa_driver->put_image != NULL) { + LogMessage(X_INFO, " put_image\n"); + } + if (uxa_driver->get_image != NULL) { + LogMessage(X_INFO, " get_image\n"); + } + + return TRUE; +} + +/** + * uxa_driver_fini tears down UXA on a given screen. + * + * @param pScreen screen being torn down. + */ +void +uxa_driver_fini (ScreenPtr pScreen) +{ + /*right now does nothing*/ +} diff --git a/driver/xf86-video-intel/uxa/uxa.h b/driver/xf86-video-intel/uxa/uxa.h new file mode 100644 index 000000000..8f6f896cd --- /dev/null +++ b/driver/xf86-video-intel/uxa/uxa.h @@ -0,0 +1,531 @@ +/* + * Copyright © 2000, 2008 Keith Packard + * 2004 Eric Anholt + * 2005 Zack Rusin + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of copyright holders not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Copyright holders make no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +/** @file + * UXA - the unified memory acceleration architecture. + * + * This is the header containing the public API of UXA for uxa drivers. + */ + +#ifndef UXA_H +#define UXA_H + +#include "scrnintstr.h" +#include "pixmapstr.h" +#include "windowstr.h" +#include "gcstruct.h" +#include "picturestr.h" +#include "fb.h" + +#define UXA_VERSION_MAJOR 1 +#define UXA_VERSION_MINOR 0 +#define UXA_VERSION_RELEASE 0 + +typedef enum { + UXA_ACCESS_RO, + UXA_ACCESS_RW +} uxa_access_t; + +/** + * The UxaDriver structure is allocated through uxa_driver_alloc(), and then + * fllled in by drivers. + */ +typedef struct _UxaDriver { + /** + * uxa_major and uxa_minor should be set by the driver to the version of + * UXA which the driver was compiled for (or configures itself at runtime + * to support). This allows UXA to extend the structure for new features + * without breaking ABI for drivers compiled against older versions. + */ + int uxa_major, uxa_minor; + + /** + * The flags field is bitfield of boolean values controlling UXA's behavior. + * + * The flags include UXA_TWO_BITBLT_DIRECTIONS. + */ + int flags; + + /** @name solid + * @{ + */ + /** + * prepare_solid() sets up the driver for doing a solid fill. + * @param pPixmap Destination pixmap + * @param alu raster operation + * @param planemask write mask for the fill + * @param fg "foreground" color for the fill + * + * This call should set up the driver for doing a series of solid fills + * through the solid() call. The alu raster op is one of the GX* + * graphics functions listed in X.h, and typically maps to a similar + * single-byte "ROP" setting in all hardware. The planemask controls + * which bits of the destination should be affected, and will only represent + * the bits up to the depth of pPixmap. The fg is the pixel value of the + * foreground color referred to in ROP descriptions. + * + * Note that many drivers will need to store some of the data in the driver + * private record, for sending to the hardware with each drawing command. + * + * The prepare_solid() call is required of all drivers, but it may fail for any + * reason. Failure results in a fallback to software rendering. + */ + Bool (*prepare_solid) (PixmapPtr pPixmap, + int alu, + Pixel planemask, + Pixel fg); + + /** + * solid() performs a solid fill set up in the last prepare_solid() call. + * + * @param pPixmap destination pixmap + * @param x1 left coordinate + * @param y1 top coordinate + * @param x2 right coordinate + * @param y2 bottom coordinate + * + * Performs the fill set up by the last prepare_solid() call, covering the + * area from (x1,y1) to (x2,y2) in pPixmap. Note that the coordinates are + * in the coordinate space of the destination pixmap, so the driver will + * need to set up the hardware's offset and pitch for the destination + * coordinates according to the pixmap's offset and pitch within + * framebuffer. + * + * This call is required if prepare_solid() ever succeeds. + */ + void (*solid) (PixmapPtr pPixmap, int x1, int y1, int x2, int y2); + + /** + * done_solid() finishes a set of solid fills. + * + * @param pPixmap destination pixmap. + * + * The done_solid() call is called at the end of a series of consecutive + * solid() calls following a successful prepare_solid(). This allows drivers + * to finish up emitting drawing commands that were buffered, or clean up + * state from prepare_solid(). + * + * This call is required if prepare_solid() ever succeeds. + */ + void (*done_solid) (PixmapPtr pPixmap); + /** @} */ + + /** @name copy + * @{ + */ + /** + * prepare_copy() sets up the driver for doing a copy within video + * memory. + * + * @param pSrcPixmap source pixmap + * @param pDstPixmap destination pixmap + * @param dx X copy direction + * @param dy Y copy direction + * @param alu raster operation + * @param planemask write mask for the fill + * + * This call should set up the driver for doing a series of copies from the + * the pSrcPixmap to the pDstPixmap. The dx flag will be positive if the + * hardware should do the copy from the left to the right, and dy will be + * positive if the copy should be done from the top to the bottom. This + * is to deal with self-overlapping copies when pSrcPixmap == pDstPixmap. + * If your hardware can only support blits that are (left to right, top to + * bottom) or (right to left, bottom to top), then you should set + * #UXA_TWO_BITBLT_DIRECTIONS, and UXA will break down copy operations to + * ones that meet those requirements. The alu raster op is one of the GX* + * graphics functions listed in X.h, and typically maps to a similar + * single-byte "ROP" setting in all hardware. The planemask controls which + * bits of the destination should be affected, and will only represent the + * bits up to the depth of pPixmap. + * + * Note that many drivers will need to store some of the data in the driver + * private record, for sending to the hardware with each drawing command. + * + * The prepare_copy() call is required of all drivers, but it may fail for any + * reason. Failure results in a fallback to software rendering. + */ + Bool (*prepare_copy) (PixmapPtr pSrcPixmap, + PixmapPtr pDstPixmap, + int dx, + int dy, + int alu, + Pixel planemask); + + /** + * copy() performs a copy set up in the last prepare_copy call. + * + * @param pDstPixmap destination pixmap + * @param srcX source X coordinate + * @param srcY source Y coordinate + * @param dstX destination X coordinate + * @param dstY destination Y coordinate + * @param width width of the rectangle to be copied + * @param height height of the rectangle to be copied. + * + * Performs the copy set up by the last prepare_copy() call, copying the + * rectangle from (srcX, srcY) to (srcX + width, srcY + width) in the source + * pixmap to the same-sized rectangle at (dstX, dstY) in the destination + * pixmap. Those rectangles may overlap in memory, if + * pSrcPixmap == pDstPixmap. Note that this call does not receive the + * pSrcPixmap as an argument -- if it's needed in this function, it should + * be stored in the driver private during prepare_copy(). As with solid(), + * the coordinates are in the coordinate space of each pixmap, so the driver + * will need to set up source and destination pitches and offsets from those + * pixmaps, probably using uxaGetPixmapOffset() and uxa_get_pixmap_pitch(). + * + * This call is required if prepare_copy ever succeeds. + */ + void (*copy) (PixmapPtr pDstPixmap, + int srcX, + int srcY, + int dstX, + int dstY, + int width, + int height); + + /** + * done_copy() finishes a set of copies. + * + * @param pPixmap destination pixmap. + * + * The done_copy() call is called at the end of a series of consecutive + * copy() calls following a successful prepare_copy(). This allows drivers + * to finish up emitting drawing commands that were buffered, or clean up + * state from prepare_copy(). + * + * This call is required if prepare_copy() ever succeeds. + */ + void (*done_copy) (PixmapPtr pDstPixmap); + /** @} */ + + /** @name composite + * @{ + */ + /** + * check_composite() checks to see if a composite operation could be + * accelerated. + * + * @param op Render operation + * @param pSrcPicture source Picture + * @param pMaskPicture mask picture + * @param pDstPicture destination Picture + * + * The check_composite() call checks if the driver could handle acceleration + * of op with the given source, mask, and destination pictures. This allows + * drivers to check source and destination formats, supported operations, + * transformations, and component alpha state, and send operations it can't + * support to software rendering early on. + * + * See prepare_composite() for more details on likely issues that drivers + * will have in accelerating composite operations. + * + * The check_composite() call is recommended if prepare_composite() is + * implemented, but is not required. + */ + Bool (*check_composite) (int op, + PicturePtr pSrcPicture, + PicturePtr pMaskPicture, + PicturePtr pDstPicture); + + /** + * prepare_composite() sets up the driver for doing a composite operation + * described in the Render extension protocol spec. + * + * @param op Render operation + * @param pSrcPicture source Picture + * @param pMaskPicture mask picture + * @param pDstPicture destination Picture + * @param pSrc source pixmap + * @param pMask mask pixmap + * @param pDst destination pixmap + * + * This call should set up the driver for doing a series of composite + * operations, as described in the Render protocol spec, with the given + * pSrcPicture, pMaskPicture, and pDstPicture. The pSrc, pMask, and + * pDst are the pixmaps containing the pixel data, and should be used for + * setting the offset and pitch used for the coordinate spaces for each of + * the Pictures. + * + * Notes on interpreting Picture structures: + * - The Picture structures will always have a valid pDrawable. + * - The Picture structures will never have alphaMap set. + * - The mask Picture (and therefore pMask) may be NULL, in which case the + * operation is simply src OP dst instead of src IN mask OP dst, and + * mask coordinates should be ignored. + * - pMarkPicture may have componentAlpha set, which greatly changes + * the behavior of the composite operation. componentAlpha has no effect + * when set on pSrcPicture or pDstPicture. + * - The source and mask Pictures may have a transformation set + * (Picture->transform != NULL), which means that the source coordinates + * should be transformed by that transformation, resulting in scaling, + * rotation, etc. The PictureTransformPoint() call can transform + * coordinates for you. Transforms have no effect on Pictures when used + * as a destination. + * - The source and mask pictures may have a filter set. PictFilterNearest + * and PictFilterBilinear are defined in the Render protocol, but others + * may be encountered, and must be handled correctly (usually by + * prepare_composite failing, and falling back to software). Filters have + * no effect on Pictures when used as a destination. + * - The source and mask Pictures may have repeating set, which must be + * respected. Many chipsets will be unable to support repeating on + * pixmaps that have a width or height that is not a power of two. + * + * If your hardware can't support source pictures (textures) with + * non-power-of-two pitches, you should set #UXA_OFFSCREEN_ALIGN_POT. + * + * Note that many drivers will need to store some of the data in the driver + * private record, for sending to the hardware with each drawing command. + * + * The prepare_composite() call is not required. However, it is highly + * recommended for performance of antialiased font rendering and performance + * of cairo applications. Failure results in a fallback to software + * rendering. + */ + Bool (*prepare_composite) (int op, + PicturePtr pSrcPicture, + PicturePtr pMaskPicture, + PicturePtr pDstPicture, + PixmapPtr pSrc, + PixmapPtr pMask, + PixmapPtr pDst); + + /** + * composite() performs a composite operation set up in the last + * prepare_composite() call. + * + * @param pDstPixmap destination pixmap + * @param srcX source X coordinate + * @param srcY source Y coordinate + * @param maskX source X coordinate + * @param maskY source Y coordinate + * @param dstX destination X coordinate + * @param dstY destination Y coordinate + * @param width destination rectangle width + * @param height destination rectangle height + * + * Performs the composite operation set up by the last prepare_composite() + * call, to the rectangle from (dstX, dstY) to (dstX + width, dstY + height) + * in the destination Pixmap. Note that if a transformation was set on + * the source or mask Pictures, the source rectangles may not be the same + * size as the destination rectangles and filtering. Getting the coordinate + * transformation right at the subpixel level can be tricky, and rendercheck + * can test this for you. + * + * This call is required if prepare_composite() ever succeeds. + */ + void (*composite) (PixmapPtr pDst, + int srcX, + int srcY, + int maskX, + int maskY, + int dstX, + int dstY, + int width, + int height); + + /** + * done_composite() finishes a set of composite operations. + * + * @param pPixmap destination pixmap. + * + * The done_composite() call is called at the end of a series of consecutive + * composite() calls following a successful prepare_composite(). This allows + * drivers to finish up emitting drawing commands that were buffered, or + * clean up state from prepare_composite(). + * + * This call is required if prepare_composite() ever succeeds. + */ + void (*done_composite) (PixmapPtr pDst); + /** @} */ + + /** + * put_image() loads a rectangle of data from src into pDst. + * + * @param pDst destination pixmap + * @param x destination X coordinate. + * @param y destination Y coordinate + * @param width width of the rectangle to be copied + * @param height height of the rectangle to be copied + * @param src pointer to the beginning of the source data + * @param src_pitch pitch (in bytes) of the lines of source data. + * + * put_image() copies data in system memory beginning at src (with + * pitch src_pitch) into the destination pixmap from (x, y) to + * (x + width, y + height). This is typically done with hostdata uploads, + * where the CPU sets up a blit command on the hardware with instructions + * that the blit data will be fed through some sort of aperture on the card. + * + * put_image() is most important for the performance of uxa_glyphs() + * (antialiased font drawing) by allowing pipelining of data uploads, + * avoiding a sync of the card after each glyph. + * + * @return TRUE if the driver successfully uploaded the data. FALSE + * indicates that UXA should fall back to doing the upload in software. + * + * put_image() is not required, but is recommended if composite + * acceleration is supported. + */ + Bool (*put_image) (PixmapPtr pDst, + int x, + int y, + int w, + int h, + char *src, + int src_pitch); + + /** + * get_image() loads a rectangle of data from pSrc into dst + * + * @param pSrc source pixmap + * @param x source X coordinate. + * @param y source Y coordinate + * @param width width of the rectangle to be copied + * @param height height of the rectangle to be copied + * @param dst pointer to the beginning of the destination data + * @param dst_pitch pitch (in bytes) of the lines of destination data. + * + * get_image() copies data from offscreen memory in pSrc from + * (x, y) to (x + width, y + height), to system memory starting at + * dst (with pitch dst_pitch). This would usually be done + * using scatter-gather DMA, supported by a DRM call, or by blitting to AGP + * and then synchronously reading from AGP. Because the implementation + * might be synchronous, UXA leaves it up to the driver to call + * uxa_mark_sync() if get_image() was asynchronous. This is in + * contrast to most other acceleration calls in UXA. + * + * @return TRUE if the driver successfully downloaded the data. FALSE + * indicates that UXA should fall back to doing the download in software. + * + * get_image() is not required, but is highly recommended. + */ + Bool (*get_image)(PixmapPtr pSrc, + int x, int y, + int w, int h, + char *dst, int dst_pitch); + + /** @{ */ + /** + * prepare_access() is called before CPU access to an offscreen pixmap. + * + * @param pPix the pixmap being accessed + * @param index the index of the pixmap being accessed. + * + * prepare_access() will be called before CPU access to an offscreen pixmap. + * This can be used to set up hardware surfaces for byteswapping or + * untiling, or to adjust the pixmap's devPrivate.ptr for the purpose of + * making CPU access use a different aperture. + * + * The index is one of #UXA_PREPARE_DEST, #UXA_PREPARE_SRC, or + * #UXA_PREPARE_MASK, indicating which pixmap is in question. Since only up + * to three pixmaps will have prepare_access() called on them per operation, + * drivers can have a small, statically-allocated space to maintain state + * for prepare_access() and finish_access() in. Note that the same pixmap may + * have prepare_access() called on it more than once, for uxample when doing + * a copy within the same pixmap (so it gets prepare_access as() + * #UXA_PREPARE_DEST and then as #UXA_PREPARE_SRC). + * + * prepare_access() may fail. An uxample might be the case of hardware that + * can set up 1 or 2 surfaces for CPU access, but not 3. If prepare_access() + * fails, UXA will migrate the pixmap to system memory. + * get_image() must be implemented and must not fail if a driver + * wishes to fail in prepare_access(). prepare_access() must not fail when + * pPix is the visible screen, because the visible screen can not be + * migrated. + * + * @return TRUE if prepare_access() successfully prepared the pixmap for CPU + * drawing. + * @return FALSE if prepare_access() is unsuccessful and UXA should use + * get_image() to migate the pixmap out. + */ + Bool (*prepare_access)(PixmapPtr pPix, uxa_access_t access); + + /** + * finish_access() is called after CPU access to an offscreen pixmap. + * + * @param pPix the pixmap being accessed + * @param index the index of the pixmap being accessed. + * + * finish_access() will be called after finishing CPU access of an offscreen + * pixmap set up by prepare_access(). Note that the finish_access() will not be + * called if prepare_access() failed. + */ + void (*finish_access)(PixmapPtr pPix); + + /** + * PixmapIsOffscreen() is an optional driver replacement to + * uxa_pixmap_is_offscreen(). Set to NULL if you want the standard behaviour + * of uxa_pixmap_is_offscreen(). + * + * @param pPix the pixmap + * @return TRUE if the given drawable is in framebuffer memory. + * + * uxa_pixmap_is_offscreen() is used to determine if a pixmap is in offscreen + * memory, meaning that acceleration could probably be done to it, and that it + * will need to be wrapped by prepare_access()/finish_access() when accessing it + * with the CPU. + * + * + */ + Bool (*pixmap_is_offscreen)(PixmapPtr pPix); + + /** @} */ +} uxa_driver_t; + +/** @name UXA driver flags + * @{ + */ +/** + * UXA_TWO_BITBLT_DIRECTIONS indicates to UXA that the driver can only + * support copies that are (left-to-right, top-to-bottom) or + * (right-to-left, bottom-to-top). + */ +#define UXA_TWO_BITBLT_DIRECTIONS (1 << 2) + +/** @} */ + +uxa_driver_t * +uxa_driver_alloc(void); + +Bool +uxa_driver_init(ScreenPtr screen, uxa_driver_t *uxa_driver); + +void +uxa_driver_fini(ScreenPtr pScreen); + +CARD32 +uxa_get_pixmap_first_pixel (PixmapPtr pPixmap); + +void +uxa_set_fallback_debug (ScreenPtr screen, Bool enable); + +/** + * Returns TRUE if the given planemask covers all the significant bits in the + * pixel values for pDrawable. + */ +#define UXA_PM_IS_SOLID(_pDrawable, _pm) \ + (((_pm) & FbFullMask((_pDrawable)->depth)) == \ + FbFullMask((_pDrawable)->depth)) + +#endif /* UXA_H */ |