diff options
author | Matt Turner <mattst88@gmail.com> | 2010-09-23 00:01:16 -0400 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2010-09-23 00:31:21 -0400 |
commit | 7669aeb2a170c246089043bb4d203c25cbfe5e95 (patch) | |
tree | 8c1db027eebd8d3898d025a9c8f8506dbc250b07 | |
parent | ff602c76781e27f191f4836b4f7eff5df5f7e54c (diff) |
Delete DRI/DRM
The DRM kernel component has been gone since at least 2.6.13, and Mesa dropped
the gamma driver in February 2010 (79aeafd3ca3680c28f6d47a21a501334844f4475).
Signed-off-by: Matt Turner <mattst88@gmail.com>
-rw-r--r-- | DRI.txt | 407 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 34 | ||||
-rw-r--r-- | src/Makefile.am | 10 | ||||
-rw-r--r-- | src/glint.h | 33 | ||||
-rw-r--r-- | src/glint_common.h | 64 | ||||
-rw-r--r-- | src/glint_dri.c | 1960 | ||||
-rw-r--r-- | src/glint_dri.h | 123 | ||||
-rw-r--r-- | src/glint_dripriv.h | 296 | ||||
-rw-r--r-- | src/glint_driver.c | 34 | ||||
-rw-r--r-- | src/glint_regs.h | 19 | ||||
-rw-r--r-- | src/pm3_accel.c | 9 | ||||
-rw-r--r-- | src/tx_accel.c | 15 |
13 files changed, 3 insertions, 3003 deletions
diff --git a/DRI.txt b/DRI.txt deleted file mode 100644 index 5bac4f3..0000000 --- a/DRI.txt +++ /dev/null @@ -1,407 +0,0 @@ - - GLINT State Transition Strategy - - -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -All Rights Reserved. - -Permission is granted to make and distribute verbatim copies -of this document provided the copyright notice and this permission -notice are preserved on all copies. - -$XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/DRI.txt,v 1.2 2000/02/23 04:47:06 martin Exp $ - -GLINT State Transition Strategy - -Direct Rendering requires a coordinated method of state management -across all drivers accessing this device. This document defines the -expected behavior of all drivers participating in direct rendering with -this device. - -Currently only the GMX2000 supports direct rendering. - - -Section 1) State Transition Types - -The direct rendering document entitled "state-mgmt.txt" gives a device -independent overview on the different types of state transitions. This -section gives a more detailed description of GLINT specific hardware state. - -No context switch--no state saves or restores will be done for transitions, -however the device can be busy executing commands from previous accesses to -the device. - -X context switch--the intersection of 2D and 3D state will be saved -and restored. This is the state marked as DDX/3DClient in Appendix A. -The device will be synced and idle after this switch. - -3D context switch--all 3D state will be saved and restored. 3D state is -defined as all registered owned by the 3DClient driver. See Appendix A -for more details. The device will be synced and idle after this switch. - -The registers owned by the DRM kernel module and submodules are not -managed by context switches. - - -Section 2) VT Switching and DGA Access - -VT Switching away from the X Server or client access to the device -framebuffer via DGA require the device to be locked away from 3D direct -rendering accesses. The X Server will hold the lock on behalf of these -services until access is restored. - - -Section 3) Potential Optimizations - -Lighten the number of registers required for context switches by using a -mechanism to determine whether stipple or pattern registers need to be -saved/restored. This optimization has not been done for the initial -direct rendering infrastructure sample implementation. - - -Appendix A: GMX2000 Register Ownership - -driver column contains: - DDX - DDX driver manages register - DRM - DRM or DRM subdriver manages register - 3DClient - 3D Client Driver manges register - DDX/3DClient, DDX/DRM, 3DClient/DRM - register access is shared - -if the RO (read only) column is marked with a *, then no writes are -permitted to this register, and thus no drivers own it. - -primary and secondary columns contain the default values after -initialization. primary is the master rasterizer, secondary is the -slave rasterizer. - - -Name offset primary secondary RO driver ------------------------------------------------------------------------------- -ResetStatus o=0000 0x00000000 0x00000000 DDX/DRM -IntEnable o=0008 0x00000000 0x00000000 DRM -IntFlags o=0010 0x00000000 0x00000018 DRM -InFIFOSpace o=0018 0x00000000 0x00000021 * -OutFIFOWords o=0020 0x00000000 0x00000000 * -DMAAddress o=0028 0x00000000 0x00000000 DRM -DMACount o=0030 0x00000000 0x00000000 DRM -ErrorFlags o=0038 0x00000000 0x00000002 DRM -VClkCtl o=0040 0x00000000 0x00000000 DDX -TestRegister o=0048 0x00000000 0x00000000 DDX -Aperture0 o=0050 0x00000000 0x00000000 DDX -Aperture1 o=0058 0x00000000 0x00000000 DDX -DMAControl o=0060 0x00000000 0x00000000 DRM -FIFODis o=0068 0x00000000 0x00000001 DDX -LBMemoryCtl o=1000 0x00000000 0x770883ff DDX -LBMemoryEDO o=1008 0x00000000 0x77080000 DDX -FBMemoryCtl o=1800 0x00000000 0x63c00800 DDX -FBModeSel o=1808 0x00000000 0x00000907 DDX -FBGCWrMask o=1810 0x00000000 0xffffffff * -FBGCColorLower o=1818 0x00000000 0x00828282 * -FBTXMemCtl o=1820 0x00000000 0x00000002 DDX -FBWrMask o=1830 0x00000000 0xffffffff * -FBGCColorUpper o=1838 0x00000000 0x00828282 * -VTGHLimit o=3000 0x00000000 0x000000c8 DDX -VTGHSyncStart o=3008 0x00ffffff 0x00000006 DDX -VTGHSyncEnd o=3010 0x00000000 0x00000016 DDX -VTGHBlankEnd o=3018 0x00ffffff 0x00000028 DDX -VTGVLimit o=3020 0x00000000 0x000001fb DDX -VTGVSyncStart o=3028 0x00ffffff 0x00000004 DDX -VTGVSyncEnd o=3030 0x00000000 0x0000000a DDX -VTGVBlankEnd o=3038 0x00ffffff 0x0000001b DDX -VTGHGateStart o=3040 0x00000000 0x00000027 DDX -VTGHGateEnd o=3048 0x00ffffff 0x000000c7 DDX -VTGVGateStart o=3050 0x00000000 0x0000001a DDX -VTGVGateEnd o=3058 0x00ffffff 0x0000001b DDX -VTGPolarity o=3060 0x00000000 0x000000ba DDX -VTGFrameRowAddr o=3068 0x00ffffff 0x00000000 DDX -VTGVLineNumber o=3070 0x00000000 0x00000079 DDX -VTGSerialClk o=3078 0x00ffffff 0x00000002 DDX -VTGModeCtl o=3080 0x00000000 0x00000000 DDX -GInFIFOSpace o=0018 0x00000000 * -GDMAAddress o=0028 0x00000000 DRM -GDMACount o=0030 0x00000000 DRM -GDMAControl o=0060 0x00000000 DRM -GOutDMA o=0080 0x00000000 DRM -GOutDMACount o=0088 0x00000000 DRM -GResetStatus o=0800 0x00000000 DRM -GIntEnable o=0808 0x00000000 DRM -GIntFlags o=0810 0x00000000 DRM -GErrorFlags o=0838 0x00000000 DRM -GTestRegister o=0848 0x00000000 DDX -GFIFODis o=0868 0x00000000 DDX -GChipConfig o=0870 0x00000000 DDX -GCSRAperture o=0878 0x00000000 DDX -GPageTableAddr o=0c00 0x00000000 DRM -GPageTableLength o=0c08 0x00000000 DRM -GDelayTimer o=0c38 0x00000000 DRM -GCommandMode o=0c40 0x00000000 DRM -GCommandIntEnable o=0c48 0x00000000 DRM -GCommandIntFlags o=0c50 0x00000000 DRM -GCommandErrorFlags o=0c58 0x00000000 DRM -GCommandStatus o=0c60 0x00000000 * -GCommandFaultingAddr o=0c68 0x00000000 * -GVertexFaultingAddr o=0c70 0x00000000 * -GWriteFaultingAddr o=0c88 0x00000000 * -GFeedbackSelectCount o=0c98 0x00000000 * -GGammaProcessorMode o=0cb8 0x00000000 DDX -GVGAShadow o=0d00 0x00000000 DDX -GMultGLINTAperture o=0d08 0x00000000 DDX -GMultGLINT1 o=0d10 0x00000000 DDX -GMultGLINT2 o=0d18 0x00000000 DDX -StartXDom t=0000 undefined undefined DDX/3DClient -dXDom t=0001 undefined undefined DDX/3DClient -StartXSub t=0002 undefined undefined DDX/3DClient -dXSub t=0003 undefined undefined DDX/3DClient -StartY t=0004 undefined undefined DDX/3DClient -dY t=0005 undefined undefined DDX/3DClient -GLINTCount t=0006 undefined undefined DDX/3DClient -PointTable0 t=0010 undefined undefined DDX/3DClient -PointTable1 t=0011 undefined undefined DDX/3DClient -PointTable2 t=0012 undefined undefined DDX/3DClient -PointTable3 t=0013 undefined undefined DDX/3DClient -RasterizerMode t=0014 undefined undefined DDX/3DClient -YLimits t=0015 undefined undefined DDX/3DClient -ScanLineOwnership t=0016 0x00000001 0x00000005 DDX -PixelSize t=0018 undefined undefined DDX/3DClient -ScissorMode t=0030 undefined undefined DDX/3DClient -ScissorMinXY t=0031 undefined undefined DDX/3DClient -ScissorMaxXY t=0032 undefined undefined DDX/3DClient -ScreenSize t=0033 undefined undefined DDX/3DClient -AreaStippleMode t=0034 undefined undefined DDX/3DClient -LineStippleMode t=0035 undefined undefined DDX/3DClient -LoadLineStippleCounters t=0036 undefined undefined DDX/3DClient -WindowOrigin t=0039 undefined undefined DDX/3DClient -AreaStipplePattern0 t=0040 undefined undefined DDX/3DClient -AreaStipplePattern1 t=0041 undefined undefined DDX/3DClient -AreaStipplePattern2 t=0042 undefined undefined DDX/3DClient -AreaStipplePattern3 t=0043 undefined undefined DDX/3DClient -AreaStipplePattern4 t=0044 undefined undefined DDX/3DClient -AreaStipplePattern5 t=0045 undefined undefined DDX/3DClient -AreaStipplePattern6 t=0046 undefined undefined DDX/3DClient -AreaStipplePattern7 t=0047 undefined undefined DDX/3DClient -AreaStipplePattern8 t=0048 undefined undefined DDX/3DClient -AreaStipplePattern9 t=0049 undefined undefined DDX/3DClient -AreaStipplePattern10 t=004a undefined undefined DDX/3DClient -AreaStipplePattern11 t=004b undefined undefined DDX/3DClient -AreaStipplePattern12 t=004c undefined undefined DDX/3DClient -AreaStipplePattern13 t=004d undefined undefined DDX/3DClient -AreaStipplePattern14 t=004e undefined undefined DDX/3DClient -AreaStipplePattern15 t=004f undefined undefined DDX/3DClient -AreaStipplePattern16 t=0050 undefined undefined DDX/3DClient -AreaStipplePattern17 t=0051 undefined undefined DDX/3DClient -AreaStipplePattern18 t=0052 undefined undefined DDX/3DClient -AreaStipplePattern19 t=0053 undefined undefined DDX/3DClient -AreaStipplePattern20 t=0054 undefined undefined DDX/3DClient -AreaStipplePattern21 t=0055 undefined undefined DDX/3DClient -AreaStipplePattern22 t=0056 undefined undefined DDX/3DClient -AreaStipplePattern23 t=0057 undefined undefined DDX/3DClient -AreaStipplePattern24 t=0058 undefined undefined DDX/3DClient -AreaStipplePattern25 t=0059 undefined undefined DDX/3DClient -AreaStipplePattern26 t=005a undefined undefined DDX/3DClient -AreaStipplePattern27 t=005b undefined undefined DDX/3DClient -AreaStipplePattern28 t=005c undefined undefined DDX/3DClient -AreaStipplePattern29 t=005d undefined undefined DDX/3DClient -AreaStipplePattern30 t=005e undefined undefined DDX/3DClient -AreaStipplePattern31 t=005f undefined undefined DDX/3DClient -RouterMode t=0108 undefined undefined DDX/3DClient -TextureAddressMode t=0070 undefined undefined DDX/3DClient -SStart t=0071 undefined undefined 3DClient -dSdx t=0072 undefined undefined 3DClient -dSdyDom t=0073 undefined undefined 3DClient -TStart t=0074 undefined undefined 3DClient -dTdx t=0075 undefined undefined 3DClient -dTdyDom t=0076 undefined undefined 3DClient -QStart t=0077 undefined undefined 3DClient -dQdx t=0078 undefined undefined 3DClient -dQdyDom t=0079 undefined undefined 3DClient -LOD t=007a undefined undefined 3DClient -dSdy t=007b undefined undefined 3DClient -dTdy t=007c undefined undefined 3DClient -dQdy t=007d undefined undefined 3DClient -TextureReadMode t=0090 undefined undefined DDX/3DClient -TextureFormat t=0091 undefined undefined 3DClient -TextureCacheControl t=0092 undefined undefined 3DClient -GLINTBorderColor t=0095 undefined undefined 3DClient -TexelLUTIndex t=0098 undefined undefined 3DClient -TexelLUTData t=0099 undefined undefined 3DClient -TexelLUTAddress t=009a undefined undefined 3DClient -TexelLUTTransfer t=009b undefined undefined 3DClient -TextureFilterMode t=009c undefined undefined 3DClient -TextureChromaUpper t=009d undefined undefined 3DClient -TextureChromaLower t=009e undefined undefined 3DClient -TxBaseAddr0 t=00a0 undefined undefined 3DClient -TxBaseAddr1 t=00a1 undefined undefined 3DClient -TxBaseAddr2 t=00a2 undefined undefined 3DClient -TxBaseAddr3 t=00a3 undefined undefined 3DClient -TxBaseAddr4 t=00a4 undefined undefined 3DClient -TxBaseAddr5 t=00a5 undefined undefined 3DClient -TxBaseAddr6 t=00a6 undefined undefined 3DClient -TxBaseAddr7 t=00a7 undefined undefined 3DClient -TxBaseAddr8 t=00a8 undefined undefined 3DClient -TxBaseAddr9 t=00a9 undefined undefined 3DClient -TxBaseAddr10 t=00aa undefined undefined 3DClient -TxBaseAddr11 t=00ab undefined undefined 3DClient -TexelLUT0 t=01d0 undefined undefined 3DClient -TexelLUT1 t=01d1 undefined undefined 3DClient -TexelLUT2 t=01d2 undefined undefined 3DClient -TexelLUT3 t=01d3 undefined undefined 3DClient -TexelLUT4 t=01d4 undefined undefined 3DClient -TexelLUT5 t=01d5 undefined undefined 3DClient -TexelLUT6 t=01d6 undefined undefined 3DClient -TexelLUT7 t=01d7 undefined undefined 3DClient -TexelLUT8 t=01d8 undefined undefined 3DClient -TexelLUT9 t=01d9 undefined undefined 3DClient -TexelLUT10 t=01da undefined undefined 3DClient -TexelLUT11 t=01db undefined undefined 3DClient -TexelLUT12 t=01dc undefined undefined 3DClient -TexelLUT13 t=01dd undefined undefined 3DClient -TexelLUT14 t=01de undefined undefined 3DClient -TexelLUT15 t=01df undefined undefined 3DClient -Texel0 t=00c0 undefined undefined 3DClient -Texel1 t=00c1 undefined undefined 3DClient -Texel2 t=00c2 undefined undefined 3DClient -Texel3 t=00c3 undefined undefined 3DClient -Texel4 t=00c4 undefined undefined 3DClient -Texel5 t=00c5 undefined undefined 3DClient -Texel6 t=00c6 undefined undefined 3DClient -Texel7 t=00c7 undefined undefined 3DClient -Interp0 t=00c8 undefined undefined 3DClient -Interp1 t=00c9 undefined undefined 3DClient -Interp2 t=00ca undefined undefined 3DClient -Interp3 t=00cb undefined undefined 3DClient -Interp4 t=00cc undefined undefined 3DClient -TextureFilter t=00cd undefined undefined 3DClient -TextureColorMode t=00d0 undefined undefined DDX/3DClient -TextureEnvColor t=00d1 undefined undefined 3DClient -FogMode t=00d2 undefined undefined DDX/3DClient -FogColor t=00d3 undefined undefined 3DClient -FStart t=00d4 undefined undefined 3DClient -dFdx t=00d5 undefined undefined 3DClient -dFdyDom t=00d6 undefined undefined 3DClient -KsStart t=00d9 undefined undefined 3DClient -dKsdx t=00da undefined undefined 3DClient -dKsdyDom t=00db undefined undefined 3DClient -KdStart t=00dc undefined undefined 3DClient -dKdStart t=00dd undefined undefined 3DClient -dKddyDom t=00de undefined undefined 3DClient -RStart t=00f0 undefined undefined 3DClient -dRdx t=00f1 undefined undefined 3DClient -dRdyDom t=00f2 undefined undefined 3DClient -GStart t=00f3 undefined undefined 3DClient -dGdx t=00f4 undefined undefined 3DClient -dGdyDom t=00f5 undefined undefined 3DClient -BStart t=00f6 undefined undefined 3DClient -dBdx t=00f7 undefined undefined 3DClient -dBdyDom t=00f8 undefined undefined 3DClient -AStart t=00f9 undefined undefined 3DClient -dAdx t=00fa undefined undefined 3DClient -dAdyDom t=00fb undefined undefined 3DClient -ColorDDAMode t=00fc undefined undefined DDX/3DClient -ConstantColor t=00fd undefined undefined 3DClient -GLINTColor t=00fe undefined undefined DDX/3DClient -AlphaTestMode t=0100 undefined undefined DDX/3DClient -AntialiasMode t=0101 undefined undefined DDX/3DClient -AlphaBlendMode t=0102 undefined undefined DDX/3DClient -ChromaUpper t=01e1 undefined undefined 3DClient -ChromaLower t=01e2 undefined undefined 3DClient -ChromaTestMode t=01e3 undefined undefined 3DClient -DitherMode t=0103 undefined undefined DDX/3DClient -FBSoftwareWriteMask t=0104 undefined undefined DDX/3DClient -LogicalOpMode t=0105 undefined undefined DDX/3DClient -FBWriteData t=0106 undefined undefined DDX/3DClient -LBReadMode t=0110 undefined undefined DDX/3DClient - Partial Product bit 0-5 need by 3DClient -LBReadFormat t=0111 set by DDX set by DDX DDX -LBSourceOffset t=0112 undefined undefined DDX/3DClient -LBStencil t=0115 undefined undefined * -LBDepth t=0116 undefined undefined * -LBWindowBase t=0117 undefined undefined DDX/3DClient -LBWriteMode t=0118 undefined undefined DDX/3DClient -LBWriteFormat t=0119 set by DDX set by DDX DDX -TextureDownloadOffset t=011e undefined undefined DDX/3DClient -LBWindowOffset t=011f undefined undefined DDX/3DClient -GLINTWindow t=0130 undefined undefined DDX/3DClient -StencilMode t=0131 undefined undefined DDX/3DClient -StencilData t=0132 undefined undefined 3DClient -GLINTStencil t=0133 undefined undefined 3DClient -DepthMode t=0134 undefined undefined DDX/3DClient -GLINTDepth t=0135 undefined undefined DDX/3DClient -ZStartU t=0136 undefined undefined 3DClient -ZStartL t=0137 undefined undefined 3DClient -dZdxU t=0138 undefined undefined 3DClient -dZdxL t=0139 undefined undefined 3DClient -dZdyDomU t=013a undefined undefined 3DClient -dZdyDomL t=013b undefined undefined 3DClient -FastClearDepth t=013c undefined undefined 3DClient -FBReadMode t=0150 set by DDX set by DDX DDX/3DClient - Partial Product bit 0-5 need by 3DClient -LBReadFormat t=0111 set by DDX set by DDX DDX -FBSourceOffset t=0151 undefined undefined DDX/3DClient -FBPixelOffset t=0152 undefined undefined DDX/3DClient -FBWindowBase t=0156 undefined undefined DDX/3DClient -FBWriteMode t=0157 undefined undefined DDX/3DClient -FBHardwareWriteMask t=0158 undefined undefined DDX/3DClient -FBBlockColor t=0159 undefined undefined DDX/3DClient -PatternRamMode t=015f undefined undefined DDX/3DClient -PatternRamData0 t=0160 undefined undefined DDX/3DClient -PatternRamData1 t=0161 undefined undefined DDX/3DClient -PatternRamData2 t=0162 undefined undefined DDX/3DClient -PatternRamData3 t=0163 undefined undefined DDX/3DClient -PatternRamData4 t=0164 undefined undefined DDX/3DClient -PatternRamData5 t=0165 undefined undefined DDX/3DClient -PatternRamData6 t=0166 undefined undefined DDX/3DClient -PatternRamData7 t=0167 undefined undefined DDX/3DClient -PatternRamData8 t=0168 undefined undefined DDX/3DClient -PatternRamData9 t=0169 undefined undefined DDX/3DClient -PatternRamData10 t=016a undefined undefined DDX/3DClient -PatternRamData11 t=016b undefined undefined DDX/3DClient -PatternRamData12 t=016c undefined undefined DDX/3DClient -PatternRamData13 t=016d undefined undefined DDX/3DClient -PatternRamData14 t=016e undefined undefined DDX/3DClient -PatternRamData15 t=016f undefined undefined DDX/3DClient -PatternRamData16 t=0170 undefined undefined DDX/3DClient -PatternRamData17 t=0171 undefined undefined DDX/3DClient -PatternRamData18 t=0172 undefined undefined DDX/3DClient -PatternRamData19 t=0173 undefined undefined DDX/3DClient -PatternRamData20 t=0174 undefined undefined DDX/3DClient -PatternRamData21 t=0175 undefined undefined DDX/3DClient -PatternRamData22 t=0176 undefined undefined DDX/3DClient -PatternRamData23 t=0177 undefined undefined DDX/3DClient -PatternRamData24 t=0178 undefined undefined DDX/3DClient -PatternRamData25 t=0179 undefined undefined DDX/3DClient -PatternRamData26 t=017a undefined undefined DDX/3DClient -PatternRamData27 t=017b undefined undefined DDX/3DClient -PatternRamData28 t=017c undefined undefined DDX/3DClient -PatternRamData29 t=017d undefined undefined DDX/3DClient -PatternRamData30 t=017e undefined undefined DDX/3DClient -PatternRamData31 t=017f undefined undefined DDX/3DClient -FBBlockColorU t=018d undefined undefined DDX/3DClient -FBBlockColorL t=018e undefined undefined DDX/3DClient -FilterMode t=0180 undefined undefined DDX/3DClient -StatisticMode t=0181 undefined undefined DDX/3DClient -MinRegion t=0182 undefined undefined 3DClient -MaxRegion t=0183 undefined undefined 3DClient -KsRStart t=0190 undefined undefined 3DClient -dKsRdx t=0191 undefined undefined 3DClient -dKsRdyDom t=0192 undefined undefined 3DClient -KsGStart t=0193 undefined undefined 3DClient -dKsGdx t=0194 undefined undefined 3DClient -dKsGdyDom t=0195 undefined undefined 3DClient -KsBStart t=0196 undefined undefined 3DClient -dKsBdx t=0197 undefined undefined 3DClient -dKsBdyDom t=0198 undefined undefined 3DClient -KdRStart t=01a0 undefined undefined 3DClient -dKdRdx t=01a1 undefined undefined 3DClient -dKdRdyDom t=01a2 undefined undefined 3DClient -KdGStart t=01a3 undefined undefined 3DClient -dKdGdx t=01a4 undefined undefined 3DClient -dKdGdyDom t=01a5 undefined undefined 3DClient -KdBStart t=01a6 undefined undefined 3DClient -dKdBdx t=01a7 undefined undefined 3DClient -dKdBdyDom t=01a8 undefined undefined 3DClient - -All Gamma State is undefined and owned by 3DClient driver except for: - -BroadcastMask o=026f 0x00000003 DDX/3DClient - -All TI RAMDAC State is owned by DDX driver. diff --git a/Makefile.am b/Makefile.am index c3bee20..4f5d5fc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -21,7 +21,7 @@ SUBDIRS = src man MAINTAINERCLEANFILES = ChangeLog INSTALL -EXTRA_DIST = DRI.txt README.pm3 +EXTRA_DIST = README.pm3 .PHONY: ChangeLog INSTALL diff --git a/configure.ac b/configure.ac index 640d20f..acef5c7 100644 --- a/configure.ac +++ b/configure.ac @@ -53,11 +53,6 @@ AC_ARG_WITH(xorg-module-dir, [moduledir="$withval"], [moduledir="$libdir/xorg/modules"]) -AC_ARG_ENABLE(dri, AS_HELP_STRING([--disable-dri], - [Disable DRI support [[default=auto]]]), - [DRI="$enableval"], - [DRI=auto]) - # Store the list of server defined optional extensions in REQUIRED_MODULES XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto) XORG_DRIVER_CHECK_EXT(XFreeXDGA, xf86dgaproto) @@ -79,35 +74,6 @@ AC_CHECK_DECL(XSERVER_LIBPCIACCESS, AC_CHECK_HEADER(cfb8_32.h,[AC_DEFINE(HAVE_CFB8_32, 1, [Have cfb8_32 support])],[]) CPPFLAGS="$SAVE_CPPFLAGS" - -if test "$DRI" != no; then - AC_CHECK_FILE([${sdkdir}/dri.h], - [have_dri_h="yes"], [have_dri_h="no"]) - AC_CHECK_FILE([${sdkdir}/sarea.h], - [have_sarea_h="yes"], [have_sarea_h="no"]) - AC_CHECK_FILE([${sdkdir}/dristruct.h], - [have_dristruct_h="yes"], [have_dristruct_h="no"]) -fi - -AC_MSG_CHECKING([whether to include DRI support]) -if test x$DRI = xauto; then - if test "$have_dri_h" = yes -a \ - "$have_sarea_h" = yes -a \ - "$have_dristruct_h" = yes; then - DRI="yes" - else - DRI="no" - fi -fi -AC_MSG_RESULT([$DRI]) - -AM_CONDITIONAL(DRI, test x$DRI = xyes) -if test "$DRI" = yes; then - PKG_CHECK_MODULES(DRI, [libdrm >= 2.0 xf86driproto]) - AC_DEFINE(XF86DRI,1,[Enable DRI driver support]) - AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support]) -fi - if test "x$XSERVER_LIBPCIACCESS" = xyes; then PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0]) XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS" diff --git a/src/Makefile.am b/src/Makefile.am index 1e4efa8..9e60e48 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -23,13 +23,12 @@ # -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 = @XORG_CFLAGS@ @DRI_CFLAGS@ -DPPC_MMIO_IS_BE -DSPARC_MMIO_IS_BE +AM_CFLAGS = @XORG_CFLAGS@ -DPPC_MMIO_IS_BE -DSPARC_MMIO_IS_BE glint_drv_la_LTLIBRARIES = glint_drv.la glint_drv_la_LDFLAGS = -module -avoid-version glint_drv_ladir = @moduledir@/drivers glint_drv_la_SOURCES = \ - glint_common.h \ glint_dga.c \ glint_driver.c \ glint.h \ @@ -53,10 +52,3 @@ glint_drv_la_SOURCES = \ TIramdac.c \ tx_accel.c \ tx_dac.c - -if DRI -glint_drv_la_SOURCES += \ - glint_dri.c \ - glint_dri.h \ - glint_dripriv.h -endif diff --git a/src/glint.h b/src/glint.h index 9115b92..b3949b2 100644 --- a/src/glint.h +++ b/src/glint.h @@ -42,14 +42,6 @@ #include "xf86i2c.h" #include "xf86DDC.h" #include "xf86xv.h" -#ifdef XF86DRI_DEVEL -#include "xf86drm.h" -#include "sarea.h" -#define _XF86DRI_SERVER_ -#include "dri.h" -#include "GL/glxint.h" -#include "glint_dripriv.h" -#endif #define GLINT_MAX_MULTI_DEVICES 2 @@ -174,21 +166,6 @@ typedef struct { void (*VideoTimerCallback)(ScrnInfoPtr, Time); XF86VideoAdaptorPtr adaptor; int videoKey; -#ifdef XF86DRI_DEVEL - Bool directRenderingEnabled; - Bool PCIMode; - DRIInfoPtr pDRIInfo; - int drmSubFD; - drmBufMapPtr drmBufs; /* Map of DMA buffers */ - drmRegion agp; - drmRegion buffers; - int numVisualConfigs; - __GLXvisualConfig* pVisualConfigs; - GLINTConfigPrivPtr pVisualConfigsPriv; - GLINTRegRec DRContextRegs; - int DRIctx; - unsigned char *buf2D; -#endif OptionInfoPtr Options; Bool PM3_UsingSGRAM; } GLINTRec, *GLINTPtr; @@ -346,16 +323,6 @@ extern int partprodPermedia[]; Bool GLINTDGAInit(ScreenPtr pScreen); -Bool GLINTDRIScreenInit(ScreenPtr pScreen); -Bool GLINTDRIFinishScreenInit(ScreenPtr pScreen); -void GLINTDRICloseScreen(ScreenPtr pScreen); -Bool GLINTInitGLXVisuals(ScreenPtr pScreen); -void GLINTDRIWakeupHandler(ScreenPtr pScreen); -void GLINTDRIBlockHandler(ScreenPtr pScreen); -void GLINTDRIInitBuffers(WindowPtr pWin, RegionPtr prgn, CARD32 index); -void GLINTDRIMoveBuffers(WindowPtr pWin, DDXPointRec ptOldOrg, - RegionPtr prgnSrc, CARD32 index); - void GLINT_VERB_WRITE_REG(GLINTPtr, CARD32 v, int r, char *file, int line); CARD32 GLINT_VERB_READ_REG(GLINTPtr, CARD32 r, char *file, int line); diff --git a/src/glint_common.h b/src/glint_common.h deleted file mode 100644 index ec601f9..0000000 --- a/src/glint_common.h +++ /dev/null @@ -1,64 +0,0 @@ -/* glint_common.h -- common header definitions for Gamma 2D/3D/DRM suite - * - * Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. - * 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, 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 - * 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. - * - * Converted to common header format: - * Jens Owen <jens@tungstengraphics.com> - * - * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_common.h,v 1.2 2003/04/03 16:52:18 dawes Exp $ - * - */ - -#ifndef _GLINT_COMMON_H_ -#define _GLINT_COMMON_H_ - -/* - * WARNING: If you change any of these defines, make sure to change - * the kernel include file as well (gamma_drm.h) - */ - -/* Driver specific DRM command indices - * NOTE: these are not OS specific, but they are driver specific - */ -#define DRM_GAMMA_INIT 0x00 -#define DRM_GAMMA_COPY 0x01 - -typedef struct { - enum { - GAMMA_INIT_DMA = 0x01, - GAMMA_CLEANUP_DMA = 0x02 - } func; - int sarea_priv_offset; - int pcimode; - unsigned int mmio0; - unsigned int mmio1; - unsigned int mmio2; - unsigned int mmio3; - unsigned int buffers_offset; - int num_rast; -} drmGAMMAInit; - -extern int drmGAMMAInitDMA( int fd, drmGAMMAInit *info ); -extern int drmGAMMACleanupDMA( int fd ); - -#endif diff --git a/src/glint_dri.c b/src/glint_dri.c deleted file mode 100644 index 4e4e71d..0000000 --- a/src/glint_dri.c +++ /dev/null @@ -1,1960 +0,0 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.c,v 1.37 2003/11/10 18:22:20 tsi Exp $ */ -/************************************************************************** - -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -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. - -**************************************************************************/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -/* - * Authors: - * Jens Owen <jens@tungstengraphics.com> - * Alan Hourihane <alanh@fairlite.demon.co.uk> - * - */ - -#include "xf86.h" -#include "xf86_OSproc.h" -#include "xf86Priv.h" - -#include "xf86PciInfo.h" -#include "xf86Pci.h" -#include "fb.h" - -#include "miline.h" - -#include "GL/glxtokens.h" - -#include "glint_regs.h" -#include "glint.h" -#include "glint_dri.h" - -static char GLINTKernelDriverName[] = "gamma"; -static char GLINTClientDriverName[] = "gamma"; - -static void GLINTDestroyContext(ScreenPtr pScreen, drm_context_t hwContext, - DRIContextType contextStore); - - -static unsigned int mylog2( unsigned int n ) -{ - unsigned int log2 = 1; - while ( n > 1 ) n >>= 1, log2++; - return log2; -} - -static int -GLINTDRIControlInit(int drmSubFD, int irq) -{ - int retcode; - - if ((retcode = drmCtlInstHandler(drmSubFD, irq))) return 1; - return 0; -} - -static Bool -GLINTInitVisualConfigs(ScreenPtr pScreen) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - GLINTPtr pGlint = GLINTPTR(pScrn); - int numConfigs = 0; - __GLXvisualConfig *pConfigs = NULL; - GLINTConfigPrivPtr pGlintConfigs = NULL; - GLINTConfigPrivPtr *pGlintConfigPtrs = NULL; - int db, depth, stencil, accum; - int i; - - switch ( pScrn->depth ) { - case 15: - numConfigs = 8; - - pConfigs = (__GLXvisualConfig*)xnfcalloc( sizeof(__GLXvisualConfig), - numConfigs ); - if ( !pConfigs ) { - return FALSE; - } - - pGlintConfigs = (GLINTConfigPrivPtr)xnfcalloc( sizeof(GLINTConfigPrivRec), - numConfigs ); - if ( !pGlintConfigs ) { - free(pConfigs); - return FALSE; - } - - pGlintConfigPtrs = (GLINTConfigPrivPtr*)xnfcalloc( sizeof(GLINTConfigPrivPtr), - numConfigs ); - if ( !pGlintConfigPtrs ) { - free(pConfigs); - free(pGlintConfigs); - return FALSE; - } - - for ( i = 0 ; i < numConfigs ; i++ ) { - pGlintConfigPtrs[i] = &pGlintConfigs[i]; - } - - i = 0; - depth = 1; - for ( accum = 0 ; accum <= 1 ; accum++ ) { - for ( stencil = 0 ; stencil <= 1 ; stencil++ ) { - for ( db = 1 ; db >= 0 ; db-- ) { - pConfigs[i].vid = -1; - pConfigs[i].class = -1; - pConfigs[i].rgba = TRUE; - pConfigs[i].redSize = 5; - pConfigs[i].greenSize = 5; - pConfigs[i].blueSize = 5; - pConfigs[i].alphaSize = 1; - pConfigs[i].redMask = 0x00007C00; - pConfigs[i].greenMask = 0x000003E0; - pConfigs[i].blueMask = 0x0000001F; - pConfigs[i].alphaMask = 0x00008000; - if ( accum ) { - pConfigs[i].accumRedSize = 16; - pConfigs[i].accumGreenSize = 16; - pConfigs[i].accumBlueSize = 16; - pConfigs[i].accumAlphaSize = 0; - } else { - pConfigs[i].accumRedSize = 0; - pConfigs[i].accumGreenSize = 0; - pConfigs[i].accumBlueSize = 0; - pConfigs[i].accumAlphaSize = 0; - } - if ( db ) { - pConfigs[i].doubleBuffer = TRUE; - } else { - pConfigs[i].doubleBuffer = FALSE; - } - pConfigs[i].stereo = FALSE; - pConfigs[i].bufferSize = 20; - if ( depth ) { - pConfigs[i].depthSize = 16; - } else { - pConfigs[i].depthSize = 0; - } - if ( stencil ) { - pConfigs[i].stencilSize = 8; - } else { - pConfigs[i].stencilSize = 0; - } - pConfigs[i].auxBuffers = 0; - pConfigs[i].level = 0; - if ( accum || stencil ) { - pConfigs[i].visualRating = GLX_SLOW_VISUAL_EXT; - } else { - pConfigs[i].visualRating = GLX_NONE_EXT; - } - pConfigs[i].transparentPixel = GLX_NONE; - pConfigs[i].transparentRed = 0; - pConfigs[i].transparentGreen = 0; - pConfigs[i].transparentBlue = 0; - pConfigs[i].transparentAlpha = 0; - pConfigs[i].transparentIndex = 0; - i++; - } - } - } - if ( i != numConfigs ) { - xf86DrvMsg( pScrn->scrnIndex, X_ERROR, - "[drm] Incorrect initialization of visuals\n" ); - return FALSE; - } - break; - - case 24: - numConfigs = 8; - - pConfigs = (__GLXvisualConfig*)xnfcalloc( sizeof(__GLXvisualConfig), - numConfigs ); - if ( !pConfigs ) { - return FALSE; - } - - pGlintConfigs = (GLINTConfigPrivPtr)xnfcalloc( sizeof(GLINTConfigPrivRec), - numConfigs ); - if ( !pGlintConfigs ) { - free(pConfigs); - return FALSE; - } - - pGlintConfigPtrs = (GLINTConfigPrivPtr*)xnfcalloc( sizeof(GLINTConfigPrivPtr), - numConfigs ); - if ( !pGlintConfigPtrs ) { - free(pConfigs); - free(pGlintConfigs); - return FALSE; - } - - for ( i = 0 ; i < numConfigs ; i++ ) { - pGlintConfigPtrs[i] = &pGlintConfigs[i]; - } - - i = 0; - for ( accum = 0 ; accum <= 1 ; accum++ ) { - for ( depth = 0 ; depth <= 1 ; depth++ ) { /* and stencil */ - for ( db = 1 ; db >= 0 ; db-- ) { - pConfigs[i].vid = -1; - pConfigs[i].class = -1; - pConfigs[i].rgba = TRUE; - pConfigs[i].redSize = 8; - pConfigs[i].greenSize = 8; - pConfigs[i].blueSize = 8; - pConfigs[i].alphaSize = 0; - pConfigs[i].redMask = 0x00FF0000; - pConfigs[i].greenMask = 0x0000FF00; - pConfigs[i].blueMask = 0x000000FF; - pConfigs[i].alphaMask = 0; - if ( accum ) { - pConfigs[i].accumRedSize = 16; - pConfigs[i].accumGreenSize = 16; - pConfigs[i].accumBlueSize = 16; - pConfigs[i].accumAlphaSize = 0; - } else { - pConfigs[i].accumRedSize = 0; - pConfigs[i].accumGreenSize = 0; - pConfigs[i].accumBlueSize = 0; - pConfigs[i].accumAlphaSize = 0; - } - if ( db ) { - pConfigs[i].doubleBuffer = TRUE; - } else { - pConfigs[i].doubleBuffer = FALSE; - } - pConfigs[i].stereo = FALSE; - pConfigs[i].bufferSize = 24; - if ( depth ) { - pConfigs[i].depthSize = 16; - pConfigs[i].stencilSize = 8; - } - else { - pConfigs[i].depthSize = 0; - pConfigs[i].stencilSize = 0; - } - pConfigs[i].auxBuffers = 0; - pConfigs[i].level = 0; - if ( accum ) { - pConfigs[i].visualRating = GLX_SLOW_VISUAL_EXT; - } else { - pConfigs[i].visualRating = GLX_NONE_EXT; - } - pConfigs[i].transparentPixel = GLX_NONE; - pConfigs[i].transparentRed = 0; - pConfigs[i].transparentGreen = 0; - pConfigs[i].transparentBlue = 0; - pConfigs[i].transparentAlpha = 0; - pConfigs[i].transparentIndex = 0; - i++; - } - } - } - if ( i != numConfigs ) { - xf86DrvMsg( pScrn->scrnIndex, X_ERROR, - "[drm] Incorrect initialization of visuals\n" ); - return FALSE; - } - break; - - default: /* Can't do depth 8 or 16, just 15 or 24 */ - return FALSE; - break; - } - - pGlint->numVisualConfigs = numConfigs; - pGlint->pVisualConfigs = pConfigs; - pGlint->pVisualConfigsPriv = pGlintConfigs; - GlxSetVisualConfigs(numConfigs, pConfigs, (void **)pGlintConfigPtrs); - - return TRUE; -} - -static Bool GLINTDRIAgpInit(ScreenPtr pScreen) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - GLINTPtr pGlint = GLINTPTR(pScrn); - int ret, count; - CARD32 mode; - - /* FIXME: Make these configurable... - */ - pGlint->agp.size = 2 * 1024 * 1024; - pGlint->buffers.offset = 0; - pGlint->buffers.size = GLINT_DRI_BUF_COUNT * GLINT_DRI_BUF_SIZE; - - if ( drmAgpAcquire( pGlint->drmSubFD ) < 0 ) { - xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] AGP not available\n" ); - return FALSE; - } - - /* Read AGP Capabilities */ - mode = drmAgpGetMode(pGlint->drmSubFD) & ~0x03; /* Mask Host capabilities */ - - mode |= 0x01; /* Gamma only supports AGP 1x */ - - /* Now enable AGP only on the specified BusID */ - if ( drmAgpEnable( pGlint->drmSubFD, mode ) < 0 ) { - xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] AGP not enabled\n" ); - drmAgpRelease( pGlint->drmSubFD ); - return FALSE; - } - - ret = drmAgpAlloc( pGlint->drmSubFD, pGlint->agp.size, 0, NULL, - &pGlint->agp.handle); - - if ( ret < 0 ) { - xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] Out of memory (%d)\n", ret ); - drmAgpRelease( pGlint->drmSubFD ); - return FALSE; - } - xf86DrvMsg( pScreen->myNum, X_INFO, - "[agp] %d kB allocated with handle 0x%08x\n", - pGlint->agp.size/1024, pGlint->agp.handle ); - - if ( drmAgpBind( pGlint->drmSubFD, pGlint->agp.handle, 0 ) < 0 ) { - xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] Could not bind memory\n" ); - drmAgpFree( pGlint->drmSubFD, pGlint->agp.handle ); - drmAgpRelease( pGlint->drmSubFD ); - return FALSE; - } - - /* DMA buffers - */ - if ( drmAddMap( pGlint->drmSubFD, pGlint->buffers.offset, - pGlint->buffers.size, DRM_AGP, 0, - &pGlint->buffers.handle ) < 0 ) { - xf86DrvMsg( pScreen->myNum, X_ERROR, - "[agp] Could not add DMA buffers mapping\n" ); - return FALSE; - } - xf86DrvMsg( pScreen->myNum, X_INFO, - "[agp] DMA buffers handle = 0x%08x\n", - pGlint->buffers.handle ); - - if ( drmMap( pGlint->drmSubFD, pGlint->buffers.handle, - pGlint->buffers.size, &pGlint->buffers.map ) < 0 ) { - xf86DrvMsg( pScreen->myNum, X_ERROR, - "[agp] Could not map DMA buffers\n" ); - return FALSE; - } - xf86DrvMsg( pScreen->myNum, X_INFO, - "[agp] DMA buffers mapped at %p\n", pGlint->buffers.map); - - count = drmAddBufs( pGlint->drmSubFD, - GLINT_DRI_BUF_COUNT, GLINT_DRI_BUF_SIZE, - DRM_AGP_BUFFER, pGlint->buffers.offset ); - if ( count <= 0 ) { - xf86DrvMsg( pScrn->scrnIndex, X_INFO, - "[drm] failure adding %d %d byte DMA buffers\n", - GLINT_DRI_BUF_COUNT, GLINT_DRI_BUF_SIZE ); - return FALSE; - } - xf86DrvMsg( pScreen->myNum, X_INFO, - "[drm] Added %d %d byte DMA buffers\n", - count, GLINT_DRI_BUF_SIZE ); - - { - int bufs; - - if ((bufs = drmAddBufs(pGlint->drmSubFD, - 1, - 8192, /* 8K = 8MB physical memory */ - 0, - DRM_RESTRICTED /* flags */)) <= 0) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] 0x%x failure adding page table buffer\n",bufs); - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] added 1 page table buffer\n"); - } - - pGlint->PCIMode = FALSE; - - return TRUE; -} - -static Bool GLINTDRIKernelInit( ScreenPtr pScreen ) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - GLINTPtr pGlint = GLINTPTR(pScrn); - DRIInfoPtr pDRIInfo = pGlint->pDRIInfo; - GLINTDRIPtr pGlintDRI = pDRIInfo->devPrivate; - drmGAMMAInit init; - int ret; - - memset( &init, 0, sizeof(drmGAMMAInit) ); - - init.func = GAMMA_INIT_DMA; - init.sarea_priv_offset = sizeof(XF86DRISAREARec); - - init.mmio0 = pGlintDRI->registers0.handle; - init.mmio1 = pGlintDRI->registers1.handle; - init.mmio2 = pGlintDRI->registers2.handle; - init.mmio3 = pGlintDRI->registers3.handle; - init.num_rast = pGlint->numMultiDevices; - - if (!pGlint->PCIMode) { - init.pcimode = 0; - init.buffers_offset = pGlint->buffers.handle; - } else { - init.pcimode = 1; - } - - ret = drmCommandWrite( pGlint->drmSubFD, DRM_GAMMA_INIT, - &init, sizeof(drmGAMMAInit) ); - - if ( ret < 0 ) { - xf86DrvMsg( pScrn->scrnIndex, X_ERROR, - "[drm] Failed to initialize DMA! (%d)\n", ret ); - return FALSE; - } - - return TRUE; -} - -Bool -GLINTDRIScreenInit(ScreenPtr pScreen) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - GLINTPtr pGlint = GLINTPTR(pScrn); - DRIInfoPtr pDRIInfo; - GLINTDRIPtr pGlintDRI; - int dmabufs = 0; - - /* Check that the GLX, DRI, and DRM modules have been loaded by testing - for canonical symbols in each module. */ - if (!xf86LoaderCheckSymbol("GlxSetVisualConfigs")) return FALSE; - if (!xf86LoaderCheckSymbol("drmAvailable")) return FALSE; - if (!xf86LoaderCheckSymbol("DRIQueryVersion")) { - xf86DrvMsg(pScreen->myNum, X_ERROR, - "[dri] GLINTDRIScreenInit failed (libdri.a too old)\n"); - return FALSE; - } - - /* Check the DRI version */ - { - int major, minor, patch; - DRIQueryVersion(&major, &minor, &patch); - if (major != DRIINFO_MAJOR_VERSION || minor < DRIINFO_MINOR_VERSION) { - xf86DrvMsg(pScreen->myNum, X_ERROR, - "[dri] GLINTDRIScreenInit failed because of a version mismatch.\n" - "[dri] libdri version is %d.%d.%d but version %d.%d.x is needed.\n" - "[dri] Disabling DRI.\n", - major, minor, patch, - DRIINFO_MAJOR_VERSION, DRIINFO_MINOR_VERSION); - return FALSE; - } - } - - if (pGlint->Chipset != PCI_VENDOR_3DLABS_CHIP_GAMMA) return FALSE; - - if (pGlint->numMultiDevices > 2) return FALSE; - - if (pGlint->MultiChip != PCI_CHIP_MX) return FALSE; - - pDRIInfo = DRICreateInfoRec(); - if(pDRIInfo == NULL) - return FALSE; - - pGlint->pDRIInfo = pDRIInfo; - - /* setup device info */ - pDRIInfo->drmDriverName = GLINTKernelDriverName; - pDRIInfo->clientDriverName = GLINTClientDriverName; - if (xf86LoaderCheckSymbol("DRICreatePCIBusID")) { - pDRIInfo->busIdString = DRICreatePCIBusID(pGlint->PciInfo); - } else { -#ifndef XSERVER_LIBPCIACCESS - pDRIInfo->busIdString = malloc(64); /* Freed in DRIDestroyInfoRec */ - sprintf(pDRIInfo->busIdString, "PCI:%d:%d:%d", - ((pciConfigPtr)pGlint->PciInfo->thisCard)->busnum, - ((pciConfigPtr)pGlint->PciInfo->thisCard)->devnum, - ((pciConfigPtr)pGlint->PciInfo->thisCard)->funcnum); -#endif - } - pDRIInfo->ddxDriverMajorVersion = GLINT_MAJOR_VERSION; - pDRIInfo->ddxDriverMinorVersion = GLINT_MINOR_VERSION; - pDRIInfo->ddxDriverPatchVersion = GLINT_PATCHLEVEL; - pDRIInfo->frameBufferPhysicalAddress = (pointer) pGlint->FbAddress; - pDRIInfo->frameBufferSize = pGlint->FbMapSize; - pDRIInfo->frameBufferStride = - pScrn->displayWidth * (pScrn->bitsPerPixel >> 3); - pDRIInfo->ddxDrawableTableEntry = GLINT_MAX_DRAWABLES; - - /* MAX_DRAWABLES set to number of GID's minus one for DDX */ - if (SAREA_MAX_DRAWABLES < GLINT_MAX_DRAWABLES) { - pDRIInfo->maxDrawableTableEntry = SAREA_MAX_DRAWABLES; - } - else { - pDRIInfo->maxDrawableTableEntry = GLINT_MAX_DRAWABLES; - } - -#ifdef NOT_DONE - /* FIXME need to extend DRI protocol to pass this size back to client - * for SAREA mapping that includes a device private record - */ - pDRIInfo->SAREASize = - ((sizeof(XF86DRISAREARec) + 0xfff) & 0x1000); /* round to page */ - /* + shared memory device private rec */ -#else - /* For now the mapping works by using a fixed size defined - * in the SAREA header - */ - pDRIInfo->SAREASize = SAREA_MAX; -#endif - - if (!(pGlintDRI = (GLINTDRIPtr)calloc(sizeof(GLINTDRIRec),1))) { - DRIDestroyInfoRec(pGlint->pDRIInfo); - return FALSE; - } - - /* setup visual configurations */ - if (!(GLINTInitVisualConfigs(pScreen))) { - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "visual configs initialized\n" ); - - pDRIInfo->devPrivate = pGlintDRI; - pDRIInfo->devPrivateSize = sizeof(GLINTDRIRec); - pDRIInfo->contextSize = sizeof(GLINTDRIContextRec); - - /* setup call backs */ - pDRIInfo->CreateContext = GLINTCreateContext; - pDRIInfo->DestroyContext = GLINTDestroyContext; - pDRIInfo->SwapContext = GLINTDRISwapContext; - pDRIInfo->InitBuffers = GLINTDRIInitBuffers; - pDRIInfo->MoveBuffers = GLINTDRIMoveBuffers; - pDRIInfo->bufferRequests = DRI_ALL_WINDOWS; - - pDRIInfo->createDummyCtx = TRUE; - pDRIInfo->createDummyCtxPriv = FALSE; - - /* So DRICloseScreen does the right thing if we abort */ - pGlint->buffers.map = 0; - pGlint->agp.handle = DRM_AGP_NO_HANDLE; - - if (!DRIScreenInit(pScreen, pDRIInfo, &(pGlint->drmSubFD))) { - DRIDestroyInfoRec(pGlint->pDRIInfo); - free(pGlintDRI); - return FALSE; - } - - /* Check the DRM versioning */ - { - drmVersionPtr version; - - /* Check the DRM lib version. - drmGetLibVersion was not supported in version 1.0, so check for - symbol first to avoid possible crash or hang. - */ - if (xf86LoaderCheckSymbol("drmGetLibVersion")) { - version = drmGetLibVersion(pGlint->drmSubFD); - } - else { - /* drmlib version 1.0.0 didn't have the drmGetLibVersion - entry point. Fake it by allocating a version record - via drmGetVersion and changing it to version 1.0.0 - */ - version = drmGetVersion(pGlint->drmSubFD); - version->version_major = 1; - version->version_minor = 0; - version->version_patchlevel = 0; - } - - if (version) { - if (version->version_major != 1 || - version->version_minor < 1) { - /* incompatible drm library version */ - xf86DrvMsg(pScreen->myNum, X_ERROR, - "[dri] GLINTDRIScreenInit failed because of a version mismatch.\n" - "[dri] libdrm.a module version is %d.%d.%d but version 1.1.x is needed.\n" - "[dri] Disabling DRI.\n", - version->version_major, - version->version_minor, - version->version_patchlevel); - drmFreeVersion(version); - GLINTDRICloseScreen(pScreen); - return FALSE; - } - drmFreeVersion(version); - } - - /* Check the GLINT DRM version */ - version = drmGetVersion(pGlint->drmSubFD); - if (version) { - if (version->version_major != 2 || - version->version_minor < 0) { - /* incompatible drm version */ - xf86DrvMsg(pScreen->myNum, X_ERROR, - "[dri] GLINTDRIScreenInit failed because of a version mismatch.\n" - "[dri] gamma.o kernel module version is %d.%d.%d but version 2.0.x is needed.\n" - "[dri] Disabling DRI.\n", - version->version_major, - version->version_minor, - version->version_patchlevel); - GLINTDRICloseScreen(pScreen); - drmFreeVersion(version); - return FALSE; - } - drmFreeVersion(version); - } - } - - /* Tell the client driver how many MX's we have */ - pGlintDRI->numMultiDevices = pGlint->numMultiDevices; - /* Tell the client about our screen size setup */ - pGlintDRI->pprod = pGlint->pprod; - - pGlintDRI->cpp = pScrn->bitsPerPixel / 8; - pGlintDRI->frontPitch = pScrn->displayWidth; - pGlintDRI->frontOffset = 0; - - pGlintDRI->textureSize = 32 * 1024 * 1024; - pGlintDRI->logTextureGranularity = - mylog2( pGlintDRI->textureSize / GAMMA_NR_TEX_REGIONS ); - - /* setup device specific direct rendering memory maps */ - - /* pci region 0: control regs, first 4k page, priveledged writes */ - pGlintDRI->registers0.size = 0x1000; - if (drmAddMap( pGlint->drmSubFD, - (drm_handle_t)pGlint->IOAddress, - pGlintDRI->registers0.size, - DRM_REGISTERS, DRM_READ_ONLY, - &pGlintDRI->registers0.handle) < 0) - { - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScreen->myNum, X_INFO, - "[drm] Register handle 0 = 0x%08x\n", - pGlintDRI->registers0.handle); - - /* pci region 0: control regs, following region, client access */ - pGlintDRI->registers1.size = 0xf000; - if (drmAddMap( pGlint->drmSubFD, - (drm_handle_t)(pGlint->IOAddress + 0x1000), - pGlintDRI->registers1.size, - DRM_REGISTERS, 0, - &pGlintDRI->registers1.handle) < 0) - { - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScreen->myNum, X_INFO, - "[drm] Register handle 1 = 0x%08x\n", - pGlintDRI->registers1.handle); - - /* pci region 0: control regs, second MX, first 4k page */ - pGlintDRI->registers2.size = 0x1000; - if (drmAddMap( pGlint->drmSubFD, - (drm_handle_t)(pGlint->IOAddress + 0x10000), - pGlintDRI->registers2.size, - DRM_REGISTERS, DRM_READ_ONLY, - &pGlintDRI->registers2.handle) < 0) - { - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScreen->myNum, X_INFO, - "[drm] Register handle 2 = 0x%08x\n", - pGlintDRI->registers2.handle); - - /* pci region 0: control regs, second MX, following region */ - pGlintDRI->registers3.size = 0xf000; - if (drmAddMap( pGlint->drmSubFD, - (drm_handle_t)(pGlint->IOAddress + 0x11000), - pGlintDRI->registers3.size, - DRM_REGISTERS, 0, - &pGlintDRI->registers3.handle) < 0) - { - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScreen->myNum, X_INFO, - "[drm] Register handle 3 = 0x%08x\n", - pGlintDRI->registers3.handle); - - /* setup DMA buffers */ - - /* TRY AGP */ - if ( !GLINTDRIAgpInit( pScreen ) ) { - /* OUCH, NO AGP, TRY PCI */ - pGlint->PCIMode = TRUE; - if (xf86ConfigDRI.bufs_count) { - int i; - int bufs; - - for (i = 0; i < xf86ConfigDRI.bufs_count; i++) { - if ((bufs = drmAddBufs(pGlint->drmSubFD, - xf86ConfigDRI.bufs[i].count, - xf86ConfigDRI.bufs[i].size, - 0, - 0 /* flags */)) <= 0) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "[drm] failure adding %d %d byte DMA buffers\n", - xf86ConfigDRI.bufs[i].count, - xf86ConfigDRI.bufs[i].size); - } else { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, - "[drm] added %d %d byte DMA buffers\n", - bufs, xf86ConfigDRI.bufs[i].size); - dmabufs += bufs; - } - } - } - - if (dmabufs <= 0) { - int bufs; - - if ((bufs = drmAddBufs(pGlint->drmSubFD, - GLINT_DRI_BUF_COUNT, - GLINT_DRI_BUF_SIZE, - 0, - 0 /* flags */)) <= 0) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] failure adding %d %d byte DMA buffers\n", - GLINT_DRI_BUF_COUNT, - GLINT_DRI_BUF_SIZE); - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] added %d %d byte DMA buffers\n", - bufs, GLINT_DRI_BUF_SIZE); - - if ((bufs = drmAddBufs(pGlint->drmSubFD, - 1, - 8192, /* 8K = 8MB physical memory */ - 0, - DRM_RESTRICTED /* flags */)) <= 0) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] 0x%x failure adding page table buffer\n",bufs); - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] added 1 page table buffer\n"); - } - - if (!(pGlint->drmBufs = drmMapBufs(pGlint->drmSubFD))) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] failure mapping DMA buffers\n"); - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] buffers mapped with %p\n", - (void *)pGlint->drmBufs); - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[drm] %d DMA buffers mapped\n", - pGlint->drmBufs->count); - } /* PCIMODE */ - - if (pGlint->irq <= 0) { - pGlint->irq = drmGetInterruptFromBusID(pGlint->drmSubFD, - PCI_CFG_BUS(pGlint->PciInfo), - PCI_CFG_DEV(pGlint->PciInfo), - PCI_CFG_FUNC(pGlint->PciInfo)); - } - - return TRUE; -} - -void -GLINTDRICloseScreen(ScreenPtr pScreen) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - GLINTPtr pGlint = GLINTPTR(pScrn); - - if (pGlint->buffers.map) { - drmUnmap( pGlint->buffers.map, pGlint->buffers.size); - pGlint->buffers.map = NULL; - } - - if (pGlint->agp.handle != DRM_AGP_NO_HANDLE) { - drmAgpUnbind( pGlint->drmSubFD, pGlint->agp.handle ); - drmAgpFree( pGlint->drmSubFD, pGlint->agp.handle ); - pGlint->agp.handle = 0; - drmAgpRelease( pGlint->drmSubFD ); - } - - if (pGlint->drmBufs) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] unmapping %d buffers\n", - pGlint->drmBufs->count); - if (drmUnmapBufs(pGlint->drmBufs)) { - xf86DrvMsg(pScreen->myNum, X_INFO, - "[drm] unable to unmap DMA buffers\n"); - } - - } - - DRICloseScreen(pScreen); - - if (pGlint->pDRIInfo) { - free(pGlint->pDRIInfo->devPrivate); - DRIDestroyInfoRec(pGlint->pDRIInfo); - } - - free(pGlint->pVisualConfigs); - free(pGlint->pVisualConfigsPriv); -} - -Bool -GLINTCreateContext(ScreenPtr pScreen, - VisualPtr visual, - drm_context_t hwContext, - void *pVisualConfigPriv, - DRIContextType contextStore) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - GLINTPtr pGlint = GLINTPTR(pScrn); - GLINTConfigPrivPtr pGlintConfig = (GLINTConfigPrivPtr)pVisualConfigPriv; - - /* These are really assertions rather than necessary logic, - just using this to exercise device private region until really needed */ - - if (!pGlintConfig) - return TRUE; /* no GLX driver private support, yet */ - -#if 0 - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[GLINTCreateContext] context priv index = %d\n", - pGlintConfig->index); -#endif - - if (pGlintConfig->index >= pGlint->numVisualConfigs) - return FALSE; - - if (pGlint->pVisualConfigs[pGlintConfig->index].redMask != visual->redMask) - return FALSE; - - return TRUE; -} - -static void -GLINTDestroyContext(ScreenPtr pScreen, - drm_context_t hwContext, - DRIContextType contextStore) -{ -} - -Bool -GLINTDRIFinishScreenInit(ScreenPtr pScreen) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - GLINTPtr pGlint = GLINTPTR(pScrn); - DRIInfoPtr pDRIInfo = pGlint->pDRIInfo; - GLINTDRIPtr pGlintDRI = pDRIInfo->devPrivate; - FBAreaPtr fbarea; - - /* - * Setup one of 4 types of context swap handling methods - * - * Option A: HIDE X CONTEXT SWAPS. X contexts will be flagged as - * preserved by the server. The kernel will never swap a preserved - * context. The kernel will call back into the server for swapping - * all other contexts. - * - * pGlint->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT; - * - * - * Option B: SERVER SIDE CONTEXT SWAPS. X contexts will be flagged - * as 2D contexts, but the flag will be ignored by the kernel. The - * preserved flag will not be used, so the kernel will call back into - * the server for swapping all contexts. The 2D flag will be used by - * the server to optimize for 2D/3D switching between a single 3D - * context and the servers 2D context. - * - * pGlint->pDRIInfo->driverSwapMethod = DRI_SERVER_SWAP; - * - * - * Option C: KERNEL SIDE GENERIC SWAPS. X server will provide generic - * kernel driver with byte codes for performing swap. X contexts will - * be flagged as 2D contexts, so 2D/3D switching optimizations can still - * be done. This is not supported, yet. Additional work is required - * to support generic kernel driver and provide byte code examples. - * - * pGlint->pDRIInfo->driverSwapMethod = DRI_KERNEL_SWAP; - * - * add byte codes for context swap here: - * drmCtlAddCommand(drmSubFD, ... - * - * - * Option D: KERNEL SIDE DEVICE SPECIFIC SWAPS. DrmSubdriver will - * have device specific code for handling swaps. X context will be - * flagged as 2D contexts, so 2D/3D switching optimizations can still - * be done. This is not supported by gamma driver, yet; however, the - * framework is in place to use this option. - * - * pGlint->pDRIInfo->driverSwapMethod = DRI_KERNEL_SWAP; - */ - - pGlint->pDRIInfo->driverSwapMethod = DRI_HIDE_X_CONTEXT; - - /* Allocate the shared back buffer */ - if ((fbarea = xf86AllocateOffscreenArea(pScreen, - pScrn->virtualX, - pScrn->virtualY, - 32, NULL, NULL, NULL))) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "Reserved back buffer from (%d,%d) to (%d,%d)\n", - fbarea->box.x1, fbarea->box.y1, - fbarea->box.x2, fbarea->box.y2); - - pGlintDRI->backPitch = pScrn->displayWidth; - pGlintDRI->backOffset = (fbarea->box.y1 * pScrn->displayWidth * - pScrn->bitsPerPixel / 8) + - (fbarea->box.x1 * pScrn->bitsPerPixel / 8); - pGlintDRI->backX = fbarea->box.x1; - pGlintDRI->backY = fbarea->box.y1; - } else { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to reserve back buffer\n"); - pGlintDRI->backPitch = -1; - pGlintDRI->backOffset = -1; - } - - if (!DRIFinishScreenInit(pScreen)) { - DRICloseScreen(pScreen); - return FALSE; - } - - if (!GLINTDRIKernelInit(pScreen)) { - DRICloseScreen(pScreen); - return FALSE; - } - - if ( (pGlint->irq <= 0) || - GLINTDRIControlInit(pGlint->drmSubFD, pGlint->irq) ) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] cannot initialize dma with IRQ %d\n", - pGlint->irq); - DRICloseScreen(pScreen); - return FALSE; - } - - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] dma control initialized, using IRQ %d\n", - pGlint->irq); - - if (!pGlint->PCIMode) { - if (!(pGlint->drmBufs = drmMapBufs(pGlint->drmSubFD))) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "[drm] failure mapping DMA buffers\n"); - DRICloseScreen(pScreen); - return FALSE; - } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[agp] buffers mapped with %p\n", - (void *)pGlint->drmBufs); - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "[agp] %d DMA buffers mapped\n", - pGlint->drmBufs->count); - } - -#if 0 - /* Get the X server's context */ - pGlint->DRIctx = DRIGetContext(pScreen); - pGlint->buf2D = pGlint->drmBufs->list[GLINT_DRI_BUF_COUNT + 1].address; -#endif - - return TRUE; -} - -#define ContextDump_tag 0x1b8 -#define ContextRestore_tag 0x1b9 -#define ContextData_tag 0x1ba - -void -GLINTDRISwapContext( - ScreenPtr pScreen, - DRISyncType syncType, - DRIContextType readContextType, - void *readContextStore, - DRIContextType writeContextType, - void *writeContextStore) -{ - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - GLINTPtr pGlint = GLINTPTR(pScrn); - GLINTDRIContextPtr pRC = (GLINTDRIContextPtr)readContextStore; - GLINTDRIContextPtr pWC = (GLINTDRIContextPtr)writeContextStore; - int dumpIndex; - CARD32 readValue; - - /* Sync here covers both read and write context of contexts */ - if (pGlint->AccelInfoRec->Sync) { - (*pGlint->AccelInfoRec->Sync)(pGlint->AccelInfoRec->pScrn); - } - pGlint->AccelInfoRec->NeedToSync = FALSE; - - if (readContextType != DRI_NO_CONTEXT) { - - /* save the 2D portion of the old context */ - pRC->MX1.CStartXDom = GLINT_READ_REG(StartXDom); - pRC->MX1.CdXDom = GLINT_READ_REG(dXDom); - pRC->MX1.CStartXSub = GLINT_READ_REG(StartXSub); - pRC->MX1.CdXSub = GLINT_READ_REG(dXSub); - pRC->MX1.CStartY = GLINT_READ_REG(StartY); - pRC->MX1.CdY = GLINT_READ_REG(dY); - pRC->MX1.CGLINTCount = GLINT_READ_REG(GLINTCount); - pRC->MX1.CPointTable0 = GLINT_READ_REG(PointTable0); - pRC->MX1.CPointTable1 = GLINT_READ_REG(PointTable1); - pRC->MX1.CPointTable2 = GLINT_READ_REG(PointTable2); - pRC->MX1.CPointTable3 = GLINT_READ_REG(PointTable3); - pRC->MX1.CRasterizerMode = GLINT_READ_REG(RasterizerMode); - pRC->MX1.CYLimits = GLINT_READ_REG(YLimits); - pRC->MX1.CScanLineOwnership = GLINT_READ_REG(ScanLineOwnership); - pRC->MX1.CPixelSize = GLINT_READ_REG(PixelSize); - pRC->MX1.CScissorMode = GLINT_READ_REG(ScissorMode); - pRC->MX1.CScissorMinXY = GLINT_READ_REG(ScissorMinXY); - pRC->MX1.CScissorMaxXY = GLINT_READ_REG(ScissorMaxXY); - pRC->MX1.CScreenSize = GLINT_READ_REG(ScreenSize); - pRC->MX1.CAreaStippleMode = GLINT_READ_REG(AreaStippleMode); - pRC->MX1.CLineStippleMode = GLINT_READ_REG(LineStippleMode); - pRC->MX1.CLoadLineStippleCounters = GLINT_READ_REG(LoadLineStippleCounters); - pRC->MX1.CWindowOrigin = GLINT_READ_REG(WindowOrigin); - pRC->MX1.CRouterMode = GLINT_READ_REG(RouterMode); - pRC->MX1.CTextureAddressMode = GLINT_READ_REG(TextureAddressMode); - pRC->MX1.CTextureReadMode = GLINT_READ_REG(TextureReadMode); - pRC->MX1.CTextureColorMode = GLINT_READ_REG(TextureColorMode); - pRC->MX1.CFogMode = GLINT_READ_REG(FogMode); - pRC->MX1.CColorDDAMode = GLINT_READ_REG(ColorDDAMode); - pRC->MX1.CGLINTColor = GLINT_READ_REG(GLINTColor); - pRC->MX1.CAlphaTestMode = GLINT_READ_REG(AlphaTestMode); - pRC->MX1.CAntialiasMode = GLINT_READ_REG(AntialiasMode); - pRC->MX1.CAlphaBlendMode = GLINT_READ_REG(AlphaBlendMode); - pRC->MX1.CDitherMode = GLINT_READ_REG(DitherMode); - pRC->MX1.CFBSoftwareWriteMask = GLINT_READ_REG(FBSoftwareWriteMask); - pRC->MX1.CLogicalOpMode = GLINT_READ_REG(LogicalOpMode); - pRC->MX1.CFBWriteData = GLINT_READ_REG(FBWriteData); - pRC->MX1.CLBReadMode = GLINT_READ_REG(LBReadMode); - pRC->MX1.CLBSourceOffset = GLINT_READ_REG(LBSourceOffset); - pRC->MX1.CLBWindowBase = GLINT_READ_REG(LBWindowBase); - pRC->MX1.CLBWriteMode = GLINT_READ_REG(LBWriteMode); - pRC->MX1.CTextureDownloadOffset = GLINT_READ_REG(TextureDownloadOffset); - pRC->MX1.CLBWindowOffset = GLINT_READ_REG(LBWindowOffset); - pRC->MX1.CGLINTWindow = GLINT_READ_REG(GLINTWindow); - pRC->MX1.CStencilMode = GLINT_READ_REG(StencilMode); - pRC->MX1.CDepthMode = GLINT_READ_REG(DepthMode); - pRC->MX1.CGLINTDepth = GLINT_READ_REG(GLINTDepth); - pRC->MX1.CFBReadMode = GLINT_READ_REG(FBReadMode); - pRC->MX1.CFBSourceOffset = GLINT_READ_REG(FBSourceOffset); - pRC->MX1.CFBPixelOffset = GLINT_READ_REG(FBPixelOffset); - pRC->MX1.CFBWindowBase = GLINT_READ_REG(FBWindowBase); - pRC->MX1.CFBWriteMode = GLINT_READ_REG(FBWriteMode); - pRC->MX1.CFBHardwareWriteMask = GLINT_READ_REG(FBHardwareWriteMask); - pRC->MX1.CFBBlockColor = GLINT_READ_REG(FBBlockColor); - pRC->MX1.CPatternRamMode = GLINT_READ_REG(PatternRamMode); - pRC->MX1.CFBBlockColorU = GLINT_READ_REG(FBBlockColorU); - pRC->MX1.CFBBlockColorL = GLINT_READ_REG(FBBlockColorL); - pRC->MX1.CFilterMode = GLINT_READ_REG(FilterMode); - pRC->MX1.CStatisticMode = GLINT_READ_REG(StatisticMode); - - if (pGlint->numMultiDevices == 2) { - pRC->MX1.CBroadcastMask = GLINT_READ_REG(BroadcastMask); - - ACCESSCHIP2(); - pRC->MX2.CStartXDom = GLINT_READ_REG(StartXDom); - pRC->MX2.CdXDom = GLINT_READ_REG(dXDom); - pRC->MX2.CStartXSub = GLINT_READ_REG(StartXSub); - pRC->MX2.CdXSub = GLINT_READ_REG(dXSub); - pRC->MX2.CStartY = GLINT_READ_REG(StartY); - pRC->MX2.CdY = GLINT_READ_REG(dY); - pRC->MX2.CGLINTCount = GLINT_READ_REG(GLINTCount); - pRC->MX2.CPointTable0 = GLINT_READ_REG(PointTable0); - pRC->MX2.CPointTable1 = GLINT_READ_REG(PointTable1); - pRC->MX2.CPointTable2 = GLINT_READ_REG(PointTable2); - pRC->MX2.CPointTable3 = GLINT_READ_REG(PointTable3); - pRC->MX2.CRasterizerMode = GLINT_READ_REG(RasterizerMode); - pRC->MX2.CYLimits = GLINT_READ_REG(YLimits); - pRC->MX2.CScanLineOwnership = GLINT_READ_REG(ScanLineOwnership); - pRC->MX2.CPixelSize = GLINT_READ_REG(PixelSize); - pRC->MX2.CScissorMode = GLINT_READ_REG(ScissorMode); - pRC->MX2.CScissorMinXY = GLINT_READ_REG(ScissorMinXY); - pRC->MX2.CScissorMaxXY = GLINT_READ_REG(ScissorMaxXY); - pRC->MX2.CScreenSize = GLINT_READ_REG(ScreenSize); - pRC->MX2.CAreaStippleMode = GLINT_READ_REG(AreaStippleMode); - pRC->MX2.CLineStippleMode = GLINT_READ_REG(LineStippleMode); - pRC->MX2.CLoadLineStippleCounters = GLINT_READ_REG(LoadLineStippleCounters); - pRC->MX2.CWindowOrigin = GLINT_READ_REG(WindowOrigin); - pRC->MX2.CRouterMode = GLINT_READ_REG(RouterMode); - pRC->MX2.CTextureAddressMode = GLINT_READ_REG(TextureAddressMode); - pRC->MX2.CTextureReadMode = GLINT_READ_REG(TextureReadMode); - pRC->MX2.CTextureColorMode = GLINT_READ_REG(TextureColorMode); - pRC->MX2.CFogMode = GLINT_READ_REG(FogMode); - pRC->MX2.CColorDDAMode = GLINT_READ_REG(ColorDDAMode); - pRC->MX2.CGLINTColor = GLINT_READ_REG(GLINTColor); - pRC->MX2.CAlphaTestMode = GLINT_READ_REG(AlphaTestMode); - pRC->MX2.CAntialiasMode = GLINT_READ_REG(AntialiasMode); - pRC->MX2.CAlphaBlendMode = GLINT_READ_REG(AlphaBlendMode); - pRC->MX2.CDitherMode = GLINT_READ_REG(DitherMode); - pRC->MX2.CFBSoftwareWriteMask = GLINT_READ_REG(FBSoftwareWriteMask); - pRC->MX2.CLogicalOpMode = GLINT_READ_REG(LogicalOpMode); - pRC->MX2.CFBWriteData = GLINT_READ_REG(FBWriteData); - pRC->MX2.CLBReadMode = GLINT_READ_REG(LBReadMode); - pRC->MX2.CLBSourceOffset = GLINT_READ_REG(LBSourceOffset); - pRC->MX2.CLBWindowBase = GLINT_READ_REG(LBWindowBase); - pRC->MX2.CLBWriteMode = GLINT_READ_REG(LBWriteMode); - pRC->MX2.CTextureDownloadOffset = GLINT_READ_REG(TextureDownloadOffset); - pRC->MX2.CLBWindowOffset = GLINT_READ_REG(LBWindowOffset); - pRC->MX2.CGLINTWindow = GLINT_READ_REG(GLINTWindow); - pRC->MX2.CStencilMode = GLINT_READ_REG(StencilMode); - pRC->MX2.CDepthMode = GLINT_READ_REG(DepthMode); - pRC->MX2.CGLINTDepth = GLINT_READ_REG(GLINTDepth); - pRC->MX2.CFBReadMode = GLINT_READ_REG(FBReadMode); - pRC->MX2.CFBSourceOffset = GLINT_READ_REG(FBSourceOffset); - pRC->MX2.CFBPixelOffset = GLINT_READ_REG(FBPixelOffset); - pRC->MX2.CFBWindowBase = GLINT_READ_REG(FBWindowBase); - pRC->MX2.CFBWriteMode = GLINT_READ_REG(FBWriteMode); - pRC->MX2.CFBHardwareWriteMask = GLINT_READ_REG(FBHardwareWriteMask); - pRC->MX2.CFBBlockColor = GLINT_READ_REG(FBBlockColor); - pRC->MX2.CPatternRamMode = GLINT_READ_REG(PatternRamMode); - pRC->MX2.CFBBlockColorU = GLINT_READ_REG(FBBlockColorU); - pRC->MX2.CFBBlockColorL = GLINT_READ_REG(FBBlockColorL); - pRC->MX2.CFilterMode = GLINT_READ_REG(FilterMode); - pRC->MX2.CStatisticMode = GLINT_READ_REG(StatisticMode); - ACCESSCHIP1(); - } - - if (readContextType == DRI_3D_CONTEXT) { - /* save the 3D portion of the old context */ - - /* first the MX portions */ - pRC->MX1.CSStart = GLINT_READ_REG(SStart); - pRC->MX1.CdSdx = GLINT_READ_REG(dSdx); - pRC->MX1.CdSdyDom = GLINT_READ_REG(dSdyDom); - pRC->MX1.CTStart = GLINT_READ_REG(TStart); - pRC->MX1.CdTdx = GLINT_READ_REG(dTdx); - pRC->MX1.CdTdyDom = GLINT_READ_REG(dTdyDom); - pRC->MX1.CQStart = GLINT_READ_REG(QStart); - pRC->MX1.CdQdx = GLINT_READ_REG(dQdx); - pRC->MX1.CdQdyDom = GLINT_READ_REG(dQdyDom); - pRC->MX1.CLOD = GLINT_READ_REG(LOD); - pRC->MX1.CdSdy = GLINT_READ_REG(dSdy); - pRC->MX1.CdTdy = GLINT_READ_REG(dTdy); - pRC->MX1.CdQdy = GLINT_READ_REG(dQdy); - pRC->MX1.CTextureFormat = GLINT_READ_REG(TextureFormat); - pRC->MX1.CTextureCacheControl = GLINT_READ_REG(TextureCacheControl); - pRC->MX1.CGLINTBorderColor = GLINT_READ_REG(GLINTBorderColor); - pRC->MX1.CTexelLUTIndex = GLINT_READ_REG(TexelLUTIndex); - pRC->MX1.CTexelLUTData = GLINT_READ_REG(TexelLUTData); - pRC->MX1.CTexelLUTAddress = GLINT_READ_REG(TexelLUTAddress); - pRC->MX1.CTexelLUTTransfer = GLINT_READ_REG(TexelLUTTransfer); - pRC->MX1.CTextureFilterMode = GLINT_READ_REG(TextureFilterMode); - pRC->MX1.CTextureChromaUpper = GLINT_READ_REG(TextureChromaUpper); - pRC->MX1.CTextureChromaLower = GLINT_READ_REG(TextureChromaLower); - pRC->MX1.CTxBaseAddr0 = GLINT_READ_REG(TxBaseAddr0); - pRC->MX1.CTxBaseAddr1 = GLINT_READ_REG(TxBaseAddr1); - pRC->MX1.CTxBaseAddr2 = GLINT_READ_REG(TxBaseAddr2); - pRC->MX1.CTxBaseAddr3 = GLINT_READ_REG(TxBaseAddr3); - pRC->MX1.CTxBaseAddr4 = GLINT_READ_REG(TxBaseAddr4); - pRC->MX1.CTxBaseAddr5 = GLINT_READ_REG(TxBaseAddr5); - pRC->MX1.CTxBaseAddr6 = GLINT_READ_REG(TxBaseAddr6); - pRC->MX1.CTxBaseAddr7 = GLINT_READ_REG(TxBaseAddr7); - pRC->MX1.CTxBaseAddr8 = GLINT_READ_REG(TxBaseAddr8); - pRC->MX1.CTxBaseAddr9 = GLINT_READ_REG(TxBaseAddr9); - pRC->MX1.CTxBaseAddr10 = GLINT_READ_REG(TxBaseAddr10); - pRC->MX1.CTxBaseAddr11 = GLINT_READ_REG(TxBaseAddr11); - pRC->MX1.CTexelLUT0 = GLINT_READ_REG(TexelLUT0); - pRC->MX1.CTexelLUT1 = GLINT_READ_REG(TexelLUT1); - pRC->MX1.CTexelLUT2 = GLINT_READ_REG(TexelLUT2); - pRC->MX1.CTexelLUT3 = GLINT_READ_REG(TexelLUT3); - pRC->MX1.CTexelLUT4 = GLINT_READ_REG(TexelLUT4); - pRC->MX1.CTexelLUT5 = GLINT_READ_REG(TexelLUT5); - pRC->MX1.CTexelLUT6 = GLINT_READ_REG(TexelLUT6); - pRC->MX1.CTexelLUT7 = GLINT_READ_REG(TexelLUT7); - pRC->MX1.CTexelLUT8 = GLINT_READ_REG(TexelLUT8); - pRC->MX1.CTexelLUT9 = GLINT_READ_REG(TexelLUT9); - pRC->MX1.CTexelLUT10 = GLINT_READ_REG(TexelLUT10); - pRC->MX1.CTexelLUT11 = GLINT_READ_REG(TexelLUT11); - pRC->MX1.CTexelLUT12 = GLINT_READ_REG(TexelLUT12); - pRC->MX1.CTexelLUT13 = GLINT_READ_REG(TexelLUT13); - pRC->MX1.CTexelLUT14 = GLINT_READ_REG(TexelLUT14); - pRC->MX1.CTexelLUT15 = GLINT_READ_REG(TexelLUT15); - pRC->MX1.CTexel0 = GLINT_READ_REG(Texel0); - pRC->MX1.CTexel1 = GLINT_READ_REG(Texel1); - pRC->MX1.CTexel2 = GLINT_READ_REG(Texel2); - pRC->MX1.CTexel3 = GLINT_READ_REG(Texel3); - pRC->MX1.CTexel4 = GLINT_READ_REG(Texel4); - pRC->MX1.CTexel5 = GLINT_READ_REG(Texel5); - pRC->MX1.CTexel6 = GLINT_READ_REG(Texel6); - pRC->MX1.CTexel7 = GLINT_READ_REG(Texel7); - pRC->MX1.CInterp0 = GLINT_READ_REG(Interp0); - pRC->MX1.CInterp1 = GLINT_READ_REG(Interp1); - pRC->MX1.CInterp2 = GLINT_READ_REG(Interp2); - pRC->MX1.CInterp3 = GLINT_READ_REG(Interp3); - pRC->MX1.CInterp4 = GLINT_READ_REG(Interp4); - pRC->MX1.CTextureFilter = GLINT_READ_REG(TextureFilter); - pRC->MX1.CTextureEnvColor = GLINT_READ_REG(TextureEnvColor); - pRC->MX1.CFogColor = GLINT_READ_REG(FogColor); - pRC->MX1.CFStart = GLINT_READ_REG(FStart); - pRC->MX1.CdFdx = GLINT_READ_REG(dFdx); - pRC->MX1.CdFdyDom = GLINT_READ_REG(dFdyDom); - pRC->MX1.CKsStart = GLINT_READ_REG(KsStart); - pRC->MX1.CdKsdx = GLINT_READ_REG(dKsdx); - pRC->MX1.CdKsdyDom = GLINT_READ_REG(dKsdyDom); - pRC->MX1.CKdStart = GLINT_READ_REG(KdStart); - pRC->MX1.CdKdStart = GLINT_READ_REG(dKdStart); - pRC->MX1.CdKddyDom = GLINT_READ_REG(dKddyDom); - pRC->MX1.CRStart = GLINT_READ_REG(RStart); - pRC->MX1.CdRdx = GLINT_READ_REG(dRdx); - pRC->MX1.CdRdyDom = GLINT_READ_REG(dRdyDom); - pRC->MX1.CGStart = GLINT_READ_REG(GStart); - pRC->MX1.CdGdx = GLINT_READ_REG(dGdx); - pRC->MX1.CdGdyDom = GLINT_READ_REG(dGdyDom); - pRC->MX1.CBStart = GLINT_READ_REG(BStart); - pRC->MX1.CdBdx = GLINT_READ_REG(dBdx); - pRC->MX1.CdBdyDom = GLINT_READ_REG(dBdyDom); - pRC->MX1.CAStart = GLINT_READ_REG(AStart); - pRC->MX1.CdAdx = GLINT_READ_REG(dAdx); - pRC->MX1.CdAdyDom = GLINT_READ_REG(dAdyDom); - pRC->MX1.CConstantColor = GLINT_READ_REG(ConstantColor); - pRC->MX1.CChromaUpper = GLINT_READ_REG(ChromaUpper); - pRC->MX1.CChromaLower = GLINT_READ_REG(ChromaLower); - pRC->MX1.CChromaTestMode = GLINT_READ_REG(ChromaTestMode); - pRC->MX1.CStencilData = GLINT_READ_REG(StencilData); - pRC->MX1.CGLINTStencil = GLINT_READ_REG(GLINTStencil); - pRC->MX1.CZStartU = GLINT_READ_REG(ZStartU); - pRC->MX1.CZStartL = GLINT_READ_REG(ZStartL); - pRC->MX1.CdZdxU = GLINT_READ_REG(dZdxU); - pRC->MX1.CdZdxL = GLINT_READ_REG(dZdxL); - pRC->MX1.CdZdyDomU = GLINT_READ_REG(dZdyDomU); - pRC->MX1.CdZdyDomL = GLINT_READ_REG(dZdyDomL); - pRC->MX1.CFastClearDepth = GLINT_READ_REG(FastClearDepth); - pRC->MX1.CMinRegion = GLINT_READ_REG(MinRegion); - pRC->MX1.CMaxRegion = GLINT_READ_REG(MaxRegion); - pRC->MX1.CKsRStart = GLINT_READ_REG(KsRStart); - pRC->MX1.CdKsRdx = GLINT_READ_REG(dKsRdx); - pRC->MX1.CdKsRdyDom = GLINT_READ_REG(dKsRdyDom); - pRC->MX1.CKsGStart = GLINT_READ_REG(KsGStart); - pRC->MX1.CdKsGdx = GLINT_READ_REG(dKsGdx); - pRC->MX1.CdKsGdyDom = GLINT_READ_REG(dKsGdyDom); - pRC->MX1.CKsBStart = GLINT_READ_REG(KsBStart); - pRC->MX1.CdKsBdx = GLINT_READ_REG(dKsBdx); - pRC->MX1.CdKsBdyDom = GLINT_READ_REG(dKsBdyDom); - pRC->MX1.CKdRStart = GLINT_READ_REG(KdRStart); - pRC->MX1.CdKdRdx = GLINT_READ_REG(dKdRdx); - pRC->MX1.CdKdRdyDom = GLINT_READ_REG(dKdRdyDom); - pRC->MX1.CKdGStart = GLINT_READ_REG(KdGStart); - pRC->MX1.CdKdGdx = GLINT_READ_REG(dKdGdx); - pRC->MX1.CdKdGdyDom = GLINT_READ_REG(dKdGdyDom); - pRC->MX1.CKdBStart = GLINT_READ_REG(KdBStart); - pRC->MX1.CdKdBdx = GLINT_READ_REG(dKdBdx); - pRC->MX1.CdKdBdyDom = GLINT_READ_REG(dKdBdyDom); - if (pGlint->numMultiDevices == 2) { - ACCESSCHIP2(); - pRC->MX2.CSStart = GLINT_READ_REG(SStart); - pRC->MX2.CdSdx = GLINT_READ_REG(dSdx); - pRC->MX2.CdSdyDom = GLINT_READ_REG(dSdyDom); - pRC->MX2.CTStart = GLINT_READ_REG(TStart); - pRC->MX2.CdTdx = GLINT_READ_REG(dTdx); - pRC->MX2.CdTdyDom = GLINT_READ_REG(dTdyDom); - pRC->MX2.CQStart = GLINT_READ_REG(QStart); - pRC->MX2.CdQdx = GLINT_READ_REG(dQdx); - pRC->MX2.CdQdyDom = GLINT_READ_REG(dQdyDom); - pRC->MX2.CLOD = GLINT_READ_REG(LOD); - pRC->MX2.CdSdy = GLINT_READ_REG(dSdy); - pRC->MX2.CdTdy = GLINT_READ_REG(dTdy); - pRC->MX2.CdQdy = GLINT_READ_REG(dQdy); - pRC->MX2.CTextureFormat = GLINT_READ_REG(TextureFormat); - pRC->MX2.CTextureCacheControl = GLINT_READ_REG(TextureCacheControl); - pRC->MX2.CGLINTBorderColor = GLINT_READ_REG(GLINTBorderColor); - pRC->MX2.CTexelLUTIndex = GLINT_READ_REG(TexelLUTIndex); - pRC->MX2.CTexelLUTData = GLINT_READ_REG(TexelLUTData); - pRC->MX2.CTexelLUTAddress = GLINT_READ_REG(TexelLUTAddress); - pRC->MX2.CTexelLUTTransfer = GLINT_READ_REG(TexelLUTTransfer); - pRC->MX2.CTextureFilterMode = GLINT_READ_REG(TextureFilterMode); - pRC->MX2.CTextureChromaUpper = GLINT_READ_REG(TextureChromaUpper); - pRC->MX2.CTextureChromaLower = GLINT_READ_REG(TextureChromaLower); - pRC->MX2.CTxBaseAddr0 = GLINT_READ_REG(TxBaseAddr0); - pRC->MX2.CTxBaseAddr1 = GLINT_READ_REG(TxBaseAddr1); - pRC->MX2.CTxBaseAddr2 = GLINT_READ_REG(TxBaseAddr2); - pRC->MX2.CTxBaseAddr3 = GLINT_READ_REG(TxBaseAddr3); - pRC->MX2.CTxBaseAddr4 = GLINT_READ_REG(TxBaseAddr4); - pRC->MX2.CTxBaseAddr5 = GLINT_READ_REG(TxBaseAddr5); - pRC->MX2.CTxBaseAddr6 = GLINT_READ_REG(TxBaseAddr6); - pRC->MX2.CTxBaseAddr7 = GLINT_READ_REG(TxBaseAddr7); - pRC->MX2.CTxBaseAddr8 = GLINT_READ_REG(TxBaseAddr8); - pRC->MX2.CTxBaseAddr9 = GLINT_READ_REG(TxBaseAddr9); - pRC->MX2.CTxBaseAddr10 = GLINT_READ_REG(TxBaseAddr10); - pRC->MX2.CTxBaseAddr11 = GLINT_READ_REG(TxBaseAddr11); - pRC->MX2.CTexelLUT0 = GLINT_READ_REG(TexelLUT0); - pRC->MX2.CTexelLUT1 = GLINT_READ_REG(TexelLUT1); - pRC->MX2.CTexelLUT2 = GLINT_READ_REG(TexelLUT2); - pRC->MX2.CTexelLUT3 = GLINT_READ_REG(TexelLUT3); - pRC->MX2.CTexelLUT4 = GLINT_READ_REG(TexelLUT4); - pRC->MX2.CTexelLUT5 = GLINT_READ_REG(TexelLUT5); - pRC->MX2.CTexelLUT6 = GLINT_READ_REG(TexelLUT6); - pRC->MX2.CTexelLUT7 = GLINT_READ_REG(TexelLUT7); - pRC->MX2.CTexelLUT8 = GLINT_READ_REG(TexelLUT8); - pRC->MX2.CTexelLUT9 = GLINT_READ_REG(TexelLUT9); - pRC->MX2.CTexelLUT10 = GLINT_READ_REG(TexelLUT10); - pRC->MX2.CTexelLUT11 = GLINT_READ_REG(TexelLUT11); - pRC->MX2.CTexelLUT12 = GLINT_READ_REG(TexelLUT12); - pRC->MX2.CTexelLUT13 = GLINT_READ_REG(TexelLUT13); - pRC->MX2.CTexelLUT14 = GLINT_READ_REG(TexelLUT14); - pRC->MX2.CTexelLUT15 = GLINT_READ_REG(TexelLUT15); - pRC->MX2.CTexel0 = GLINT_READ_REG(Texel0); - pRC->MX2.CTexel1 = GLINT_READ_REG(Texel1); - pRC->MX2.CTexel2 = GLINT_READ_REG(Texel2); - pRC->MX2.CTexel3 = GLINT_READ_REG(Texel3); - pRC->MX2.CTexel4 = GLINT_READ_REG(Texel4); - pRC->MX2.CTexel5 = GLINT_READ_REG(Texel5); - pRC->MX2.CTexel6 = GLINT_READ_REG(Texel6); - pRC->MX2.CTexel7 = GLINT_READ_REG(Texel7); - pRC->MX2.CInterp0 = GLINT_READ_REG(Interp0); - pRC->MX2.CInterp1 = GLINT_READ_REG(Interp1); - pRC->MX2.CInterp2 = GLINT_READ_REG(Interp2); - pRC->MX2.CInterp3 = GLINT_READ_REG(Interp3); - pRC->MX2.CInterp4 = GLINT_READ_REG(Interp4); - pRC->MX2.CTextureFilter = GLINT_READ_REG(TextureFilter); - pRC->MX2.CTextureEnvColor = GLINT_READ_REG(TextureEnvColor); - pRC->MX2.CFogColor = GLINT_READ_REG(FogColor); - pRC->MX2.CFStart = GLINT_READ_REG(FStart); - pRC->MX2.CdFdx = GLINT_READ_REG(dFdx); - pRC->MX2.CdFdyDom = GLINT_READ_REG(dFdyDom); - pRC->MX2.CKsStart = GLINT_READ_REG(KsStart); - pRC->MX2.CdKsdx = GLINT_READ_REG(dKsdx); - pRC->MX2.CdKsdyDom = GLINT_READ_REG(dKsdyDom); - pRC->MX2.CKdStart = GLINT_READ_REG(KdStart); - pRC->MX2.CdKdStart = GLINT_READ_REG(dKdStart); - pRC->MX2.CdKddyDom = GLINT_READ_REG(dKddyDom); - pRC->MX2.CRStart = GLINT_READ_REG(RStart); - pRC->MX2.CdRdx = GLINT_READ_REG(dRdx); - pRC->MX2.CdRdyDom = GLINT_READ_REG(dRdyDom); - pRC->MX2.CGStart = GLINT_READ_REG(GStart); - pRC->MX2.CdGdx = GLINT_READ_REG(dGdx); - pRC->MX2.CdGdyDom = GLINT_READ_REG(dGdyDom); - pRC->MX2.CBStart = GLINT_READ_REG(BStart); - pRC->MX2.CdBdx = GLINT_READ_REG(dBdx); - pRC->MX2.CdBdyDom = GLINT_READ_REG(dBdyDom); - pRC->MX2.CAStart = GLINT_READ_REG(AStart); - pRC->MX2.CdAdx = GLINT_READ_REG(dAdx); - pRC->MX2.CdAdyDom = GLINT_READ_REG(dAdyDom); - pRC->MX2.CConstantColor = GLINT_READ_REG(ConstantColor); - pRC->MX2.CChromaUpper = GLINT_READ_REG(ChromaUpper); - pRC->MX2.CChromaLower = GLINT_READ_REG(ChromaLower); - pRC->MX2.CChromaTestMode = GLINT_READ_REG(ChromaTestMode); - pRC->MX2.CStencilData = GLINT_READ_REG(StencilData); - pRC->MX2.CGLINTStencil = GLINT_READ_REG(GLINTStencil); - pRC->MX2.CZStartU = GLINT_READ_REG(ZStartU); - pRC->MX2.CZStartL = GLINT_READ_REG(ZStartL); - pRC->MX2.CdZdxU = GLINT_READ_REG(dZdxU); - pRC->MX2.CdZdxL = GLINT_READ_REG(dZdxL); - pRC->MX2.CdZdyDomU = GLINT_READ_REG(dZdyDomU); - pRC->MX2.CdZdyDomL = GLINT_READ_REG(dZdyDomL); - pRC->MX2.CFastClearDepth = GLINT_READ_REG(FastClearDepth); - pRC->MX2.CMinRegion = GLINT_READ_REG(MinRegion); - pRC->MX2.CMaxRegion = GLINT_READ_REG(MaxRegion); - pRC->MX2.CKsRStart = GLINT_READ_REG(KsRStart); - pRC->MX2.CdKsRdx = GLINT_READ_REG(dKsRdx); - pRC->MX2.CdKsRdyDom = GLINT_READ_REG(dKsRdyDom); - pRC->MX2.CKsGStart = GLINT_READ_REG(KsGStart); - pRC->MX2.CdKsGdx = GLINT_READ_REG(dKsGdx); - pRC->MX2.CdKsGdyDom = GLINT_READ_REG(dKsGdyDom); - pRC->MX2.CKsBStart = GLINT_READ_REG(KsBStart); - pRC->MX2.CdKsBdx = GLINT_READ_REG(dKsBdx); - pRC->MX2.CdKsBdyDom = GLINT_READ_REG(dKsBdyDom); - pRC->MX2.CKdRStart = GLINT_READ_REG(KdRStart); - pRC->MX2.CdKdRdx = GLINT_READ_REG(dKdRdx); - pRC->MX2.CdKdRdyDom = GLINT_READ_REG(dKdRdyDom); - pRC->MX2.CKdGStart = GLINT_READ_REG(KdGStart); - pRC->MX2.CdKdGdx = GLINT_READ_REG(dKdGdx); - pRC->MX2.CdKdGdyDom = GLINT_READ_REG(dKdGdyDom); - pRC->MX2.CKdBStart = GLINT_READ_REG(KdBStart); - pRC->MX2.CdKdBdx = GLINT_READ_REG(dKdBdx); - pRC->MX2.CdKdBdyDom = GLINT_READ_REG(dKdBdyDom); - ACCESSCHIP1(); - } - - /* send gamma the context dump command */ - GLINT_WAIT(3); - if (pGlint->numMultiDevices == 2) - GLINT_WRITE_REG(1, BroadcastMask); - GLINT_WRITE_REG(3<<14, FilterMode); /* context bits on gamma */ - GLINT_WRITE_REG(GLINT_GAMMA_CONTEXT_MASK, ContextDump); - - /* save context data from output fifo */ - dumpIndex = 0; - do { - while(GLINT_READ_REG(OutFIFOWords) == 0); - readValue = GLINT_READ_REG(OutputFIFO); -#ifdef DEBUG -xf86DrvMsg(pScreen->myNum, X_INFO, "pRC tag [%d]: %x\n", -dumpIndex,readValue); -#endif - while(GLINT_READ_REG(OutFIFOWords) == 0); - readValue = GLINT_READ_REG(OutputFIFO); -#ifdef DEBUG -xf86DrvMsg(pScreen->myNum, X_INFO, "pRC data [%d]: %x\n", -dumpIndex,readValue); -#endif - pRC->Gamma[dumpIndex++] = readValue; - } while (dumpIndex < GLINT_GAMMA_CONTEXT_SIZE); - - /* clear contextDump tag and data out of fifo */ - while(GLINT_READ_REG(OutFIFOWords) == 0); - readValue = GLINT_READ_REG(OutputFIFO); - if (readValue != ContextDump_tag) { - xf86DrvMsg(pScreen->myNum, X_ERROR, "Context dump error\n"); - } - while(GLINT_READ_REG(OutFIFOWords) == 0); - readValue = GLINT_READ_REG(OutputFIFO); - - GLINT_SLOW_WRITE_REG(1<<10, FilterMode); - if (pGlint->numMultiDevices == 2) - GLINT_SLOW_WRITE_REG(3,BroadcastMask); - } - } - - if (writeContextType != DRI_NO_CONTEXT) { - - if (writeContextType == DRI_3D_CONTEXT) { - /* restore the 3D portion of the new context */ - - /* send context restore command */ - GLINT_WAIT(1); - if (pGlint->numMultiDevices == 2) - GLINT_WRITE_REG(1, BroadcastMask); - - GLINT_WAIT(3); - GLINT_WRITE_REG(ContextRestore_tag, OutputFIFO); - GLINT_WRITE_REG(GLINT_GAMMA_CONTEXT_MASK, OutputFIFO); - GLINT_WRITE_REG((((GLINT_GAMMA_CONTEXT_SIZE-1) << 16) | - ContextData_tag), OutputFIFO); - - /* restore context data to context data register */ - dumpIndex = 0; - do { - GLINT_WAIT(1); -#ifdef DEBUG -xf86DrvMsg(pScreen->myNum, X_INFO, "pWC data [%d]: %x\n", -dumpIndex,pWC->Gamma[dumpIndex]); -#endif - GLINT_WRITE_REG(pWC->Gamma[dumpIndex++], OutputFIFO); - } while (dumpIndex < (GLINT_GAMMA_CONTEXT_SIZE)); - - /* Sync after writing gamma context and - before writing MX context */ - if (pGlint->AccelInfoRec->Sync) { - (*pGlint->AccelInfoRec->Sync)(pGlint->AccelInfoRec->pScrn); - } - /* Update XAA's NeedToSync flag */ - pGlint->AccelInfoRec->NeedToSync = TRUE; - - /* finally the MX portions */ - if (pGlint->numMultiDevices == 2) - GLINT_SLOW_WRITE_REG(1, BroadcastMask); - GLINT_SLOW_WRITE_REG(pWC->MX1.CSStart, SStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdSdx, dSdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdSdyDom, dSdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTStart, TStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdTdx, dTdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdTdyDom, dTdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CQStart, QStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdQdx, dQdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdQdyDom, dQdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CLOD, LOD); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdSdy, dSdy); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdTdy, dTdy); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdQdy, dQdy); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureFormat, TextureFormat); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureCacheControl, TextureCacheControl); - GLINT_SLOW_WRITE_REG(pWC->MX1.CGLINTBorderColor, GLINTBorderColor); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUTIndex, TexelLUTIndex); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUTData, TexelLUTData); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUTAddress, TexelLUTAddress); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUTTransfer, TexelLUTTransfer); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureFilterMode, TextureFilterMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureChromaUpper, TextureChromaUpper); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureChromaLower, TextureChromaLower); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr0, TxBaseAddr0); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr1, TxBaseAddr1); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr2, TxBaseAddr2); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr3, TxBaseAddr3); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr4, TxBaseAddr4); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr5, TxBaseAddr5); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr6, TxBaseAddr6); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr7, TxBaseAddr7); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr8, TxBaseAddr8); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr9, TxBaseAddr9); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr10, TxBaseAddr10); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTxBaseAddr11, TxBaseAddr11); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT0, TexelLUT0); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT1, TexelLUT1); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT2, TexelLUT2); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT3, TexelLUT3); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT4, TexelLUT4); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT5, TexelLUT5); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT6, TexelLUT6); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT7, TexelLUT7); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT8, TexelLUT8); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT9, TexelLUT9); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT10, TexelLUT10); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT11, TexelLUT11); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT12, TexelLUT12); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT13, TexelLUT13); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT14, TexelLUT14); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexelLUT15, TexelLUT15); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexel0, Texel0); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexel1, Texel1); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexel2, Texel2); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexel3, Texel3); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexel4, Texel4); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexel5, Texel5); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexel6, Texel6); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTexel7, Texel7); - GLINT_SLOW_WRITE_REG(pWC->MX1.CInterp0, Interp0); - GLINT_SLOW_WRITE_REG(pWC->MX1.CInterp1, Interp1); - GLINT_SLOW_WRITE_REG(pWC->MX1.CInterp2, Interp2); - GLINT_SLOW_WRITE_REG(pWC->MX1.CInterp3, Interp3); - GLINT_SLOW_WRITE_REG(pWC->MX1.CInterp4, Interp4); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureFilter, TextureFilter); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureEnvColor, TextureEnvColor); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFogColor, FogColor); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFStart, FStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdFdx, dFdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdFdyDom, dFdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CKsStart, KsStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKsdx, dKsdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKsdyDom, dKsdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CKdStart, KdStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKdStart, dKdStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKddyDom, dKddyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CRStart, RStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdRdx, dRdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdRdyDom, dRdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CGStart, GStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdGdx, dGdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdGdyDom, dGdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CBStart, BStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdBdx, dBdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdBdyDom, dBdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CAStart, AStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdAdx, dAdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdAdyDom, dAdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CConstantColor, ConstantColor); - GLINT_SLOW_WRITE_REG(pWC->MX1.CChromaUpper, ChromaUpper); - GLINT_SLOW_WRITE_REG(pWC->MX1.CChromaLower, ChromaLower); - GLINT_SLOW_WRITE_REG(pWC->MX1.CChromaTestMode, ChromaTestMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CStencilData, StencilData); - GLINT_SLOW_WRITE_REG(pWC->MX1.CGLINTStencil, GLINTStencil); - GLINT_SLOW_WRITE_REG(pWC->MX1.CZStartU, ZStartU); - GLINT_SLOW_WRITE_REG(pWC->MX1.CZStartL, ZStartL); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdZdxU, dZdxU); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdZdxL, dZdxL); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdZdyDomU, dZdyDomU); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdZdyDomL, dZdyDomL); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFastClearDepth, FastClearDepth); - GLINT_SLOW_WRITE_REG(pWC->MX1.CMinRegion, MinRegion); - GLINT_SLOW_WRITE_REG(pWC->MX1.CMaxRegion, MaxRegion); - GLINT_SLOW_WRITE_REG(pWC->MX1.CKsRStart, KsRStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKsRdx, dKsRdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKsRdyDom, dKsRdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CKsGStart, KsGStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKsGdx, dKsGdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKsGdyDom, dKsGdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CKsBStart, KsBStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKsBdx, dKsBdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKsBdyDom, dKsBdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CKdRStart, KdRStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKdRdx, dKdRdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKdRdyDom, dKdRdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CKdGStart, KdGStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKdGdx, dKdGdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKdGdyDom, dKdGdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CKdBStart, KdBStart); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKdBdx, dKdBdx); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdKdBdyDom, dKdBdyDom); - - if (pGlint->numMultiDevices == 2) { - GLINT_SLOW_WRITE_REG(2, BroadcastMask); - GLINT_SLOW_WRITE_REG(pWC->MX2.CSStart, SStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdSdx, dSdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdSdyDom, dSdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTStart, TStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdTdx, dTdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdTdyDom, dTdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CQStart, QStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdQdx, dQdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdQdyDom, dQdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CLOD, LOD); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdSdy, dSdy); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdTdy, dTdy); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdQdy, dQdy); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureFormat, TextureFormat); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureCacheControl, TextureCacheControl); - GLINT_SLOW_WRITE_REG(pWC->MX2.CGLINTBorderColor, GLINTBorderColor); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUTIndex, TexelLUTIndex); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUTData, TexelLUTData); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUTAddress, TexelLUTAddress); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUTTransfer, TexelLUTTransfer); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureFilterMode, TextureFilterMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureChromaUpper, TextureChromaUpper); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureChromaLower, TextureChromaLower); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr0, TxBaseAddr0); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr1, TxBaseAddr1); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr2, TxBaseAddr2); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr3, TxBaseAddr3); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr4, TxBaseAddr4); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr5, TxBaseAddr5); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr6, TxBaseAddr6); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr7, TxBaseAddr7); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr8, TxBaseAddr8); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr9, TxBaseAddr9); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr10, TxBaseAddr10); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTxBaseAddr11, TxBaseAddr11); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT0, TexelLUT0); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT1, TexelLUT1); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT2, TexelLUT2); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT3, TexelLUT3); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT4, TexelLUT4); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT5, TexelLUT5); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT6, TexelLUT6); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT7, TexelLUT7); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT8, TexelLUT8); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT9, TexelLUT9); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT10, TexelLUT10); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT11, TexelLUT11); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT12, TexelLUT12); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT13, TexelLUT13); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT14, TexelLUT14); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexelLUT15, TexelLUT15); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexel0, Texel0); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexel1, Texel1); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexel2, Texel2); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexel3, Texel3); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexel4, Texel4); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexel5, Texel5); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexel6, Texel6); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTexel7, Texel7); - GLINT_SLOW_WRITE_REG(pWC->MX2.CInterp0, Interp0); - GLINT_SLOW_WRITE_REG(pWC->MX2.CInterp1, Interp1); - GLINT_SLOW_WRITE_REG(pWC->MX2.CInterp2, Interp2); - GLINT_SLOW_WRITE_REG(pWC->MX2.CInterp3, Interp3); - GLINT_SLOW_WRITE_REG(pWC->MX2.CInterp4, Interp4); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureFilter, TextureFilter); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureEnvColor, TextureEnvColor); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFogColor, FogColor); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFStart, FStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdFdx, dFdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdFdyDom, dFdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CKsStart, KsStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKsdx, dKsdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKsdyDom, dKsdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CKdStart, KdStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKdStart, dKdStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKddyDom, dKddyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CRStart, RStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdRdx, dRdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdRdyDom, dRdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CGStart, GStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdGdx, dGdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdGdyDom, dGdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CBStart, BStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdBdx, dBdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdBdyDom, dBdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CAStart, AStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdAdx, dAdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdAdyDom, dAdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CConstantColor, ConstantColor); - GLINT_SLOW_WRITE_REG(pWC->MX2.CChromaUpper, ChromaUpper); - GLINT_SLOW_WRITE_REG(pWC->MX2.CChromaLower, ChromaLower); - GLINT_SLOW_WRITE_REG(pWC->MX2.CChromaTestMode, ChromaTestMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CStencilData, StencilData); - GLINT_SLOW_WRITE_REG(pWC->MX2.CGLINTStencil, GLINTStencil); - GLINT_SLOW_WRITE_REG(pWC->MX2.CZStartU, ZStartU); - GLINT_SLOW_WRITE_REG(pWC->MX2.CZStartL, ZStartL); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdZdxU, dZdxU); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdZdxL, dZdxL); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdZdyDomU, dZdyDomU); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdZdyDomL, dZdyDomL); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFastClearDepth, FastClearDepth); - GLINT_SLOW_WRITE_REG(pWC->MX2.CMinRegion, MinRegion); - GLINT_SLOW_WRITE_REG(pWC->MX2.CMaxRegion, MaxRegion); - GLINT_SLOW_WRITE_REG(pWC->MX2.CKsRStart, KsRStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKsRdx, dKsRdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKsRdyDom, dKsRdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CKsGStart, KsGStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKsGdx, dKsGdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKsGdyDom, dKsGdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CKsBStart, KsBStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKsBdx, dKsBdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKsBdyDom, dKsBdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CKdRStart, KdRStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKdRdx, dKdRdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKdRdyDom, dKdRdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CKdGStart, KdGStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKdGdx, dKdGdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKdGdyDom, dKdGdyDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CKdBStart, KdBStart); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKdBdx, dKdBdx); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdKdBdyDom, dKdBdyDom); - } - } - - /* restore the 2D portion of the new context */ - - /* Restore MX1's registers */ - if (pGlint->numMultiDevices == 2) - GLINT_SLOW_WRITE_REG(1, BroadcastMask); - GLINT_SLOW_WRITE_REG(pWC->MX1.CStartXDom, StartXDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdXDom, dXDom); - GLINT_SLOW_WRITE_REG(pWC->MX1.CStartXSub, StartXSub); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdXSub, dXSub); - GLINT_SLOW_WRITE_REG(pWC->MX1.CStartY, StartY); - GLINT_SLOW_WRITE_REG(pWC->MX1.CdY, dY); - GLINT_SLOW_WRITE_REG(pWC->MX1.CGLINTCount, GLINTCount); - GLINT_SLOW_WRITE_REG(pWC->MX1.CPointTable0, PointTable0); - GLINT_SLOW_WRITE_REG(pWC->MX1.CPointTable1, PointTable1); - GLINT_SLOW_WRITE_REG(pWC->MX1.CPointTable2, PointTable2); - GLINT_SLOW_WRITE_REG(pWC->MX1.CPointTable3, PointTable3); - GLINT_SLOW_WRITE_REG(pWC->MX1.CRasterizerMode, RasterizerMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CYLimits, YLimits); - GLINT_SLOW_WRITE_REG(pWC->MX1.CScanLineOwnership, ScanLineOwnership); - GLINT_SLOW_WRITE_REG(pWC->MX1.CPixelSize, PixelSize); - GLINT_SLOW_WRITE_REG(pWC->MX1.CScissorMode, ScissorMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CScissorMinXY, ScissorMinXY); - GLINT_SLOW_WRITE_REG(pWC->MX1.CScissorMaxXY, ScissorMaxXY); - GLINT_SLOW_WRITE_REG(pWC->MX1.CScreenSize, ScreenSize); - GLINT_SLOW_WRITE_REG(pWC->MX1.CAreaStippleMode, AreaStippleMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CLineStippleMode, LineStippleMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CLoadLineStippleCounters, LoadLineStippleCounters); - GLINT_SLOW_WRITE_REG(pWC->MX1.CWindowOrigin, WindowOrigin); - GLINT_SLOW_WRITE_REG(pWC->MX1.CRouterMode, RouterMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureAddressMode, TextureAddressMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureReadMode, TextureReadMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureColorMode, TextureColorMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFogMode, FogMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CColorDDAMode, ColorDDAMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CGLINTColor, GLINTColor); - GLINT_SLOW_WRITE_REG(pWC->MX1.CAlphaTestMode, AlphaTestMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CAntialiasMode, AntialiasMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CAlphaBlendMode, AlphaBlendMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CDitherMode, DitherMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBSoftwareWriteMask, FBSoftwareWriteMask); - GLINT_SLOW_WRITE_REG(pWC->MX1.CLogicalOpMode, LogicalOpMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBWriteData, FBWriteData); - GLINT_SLOW_WRITE_REG(pWC->MX1.CLBReadMode, LBReadMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CLBSourceOffset, LBSourceOffset); - GLINT_SLOW_WRITE_REG(pWC->MX1.CLBWindowBase, LBWindowBase); - GLINT_SLOW_WRITE_REG(pWC->MX1.CLBWriteMode, LBWriteMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CTextureDownloadOffset, TextureDownloadOffset); - GLINT_SLOW_WRITE_REG(pWC->MX1.CLBWindowOffset, LBWindowOffset); - GLINT_SLOW_WRITE_REG(pWC->MX1.CGLINTWindow, GLINTWindow); - GLINT_SLOW_WRITE_REG(pWC->MX1.CStencilMode, StencilMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CDepthMode, DepthMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CGLINTDepth, GLINTDepth); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBReadMode, FBReadMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBSourceOffset, FBSourceOffset); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBPixelOffset, FBPixelOffset); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBWindowBase, FBWindowBase); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBWriteMode, FBWriteMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBHardwareWriteMask, FBHardwareWriteMask); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBBlockColor, FBBlockColor); - GLINT_SLOW_WRITE_REG(pWC->MX1.CPatternRamMode, PatternRamMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBBlockColorU, FBBlockColorU); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFBBlockColorL, FBBlockColorL); - GLINT_SLOW_WRITE_REG(pWC->MX1.CFilterMode, FilterMode); - GLINT_SLOW_WRITE_REG(pWC->MX1.CStatisticMode, StatisticMode); - - /* Restore MX2's registers */ - if (pGlint->numMultiDevices == 2) { - GLINT_SLOW_WRITE_REG(2, BroadcastMask); - GLINT_SLOW_WRITE_REG(pWC->MX2.CStartXDom, StartXDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdXDom, dXDom); - GLINT_SLOW_WRITE_REG(pWC->MX2.CStartXSub, StartXSub); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdXSub, dXSub); - GLINT_SLOW_WRITE_REG(pWC->MX2.CStartY, StartY); - GLINT_SLOW_WRITE_REG(pWC->MX2.CdY, dY); - GLINT_SLOW_WRITE_REG(pWC->MX2.CGLINTCount, GLINTCount); - GLINT_SLOW_WRITE_REG(pWC->MX2.CPointTable0, PointTable0); - GLINT_SLOW_WRITE_REG(pWC->MX2.CPointTable1, PointTable1); - GLINT_SLOW_WRITE_REG(pWC->MX2.CPointTable2, PointTable2); - GLINT_SLOW_WRITE_REG(pWC->MX2.CPointTable3, PointTable3); - GLINT_SLOW_WRITE_REG(pWC->MX2.CRasterizerMode, RasterizerMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CYLimits, YLimits); - GLINT_SLOW_WRITE_REG(pWC->MX2.CScanLineOwnership, ScanLineOwnership); - GLINT_SLOW_WRITE_REG(pWC->MX2.CPixelSize, PixelSize); - GLINT_SLOW_WRITE_REG(pWC->MX2.CScissorMode, ScissorMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CScissorMinXY, ScissorMinXY); - GLINT_SLOW_WRITE_REG(pWC->MX2.CScissorMaxXY, ScissorMaxXY); - GLINT_SLOW_WRITE_REG(pWC->MX2.CScreenSize, ScreenSize); - GLINT_SLOW_WRITE_REG(pWC->MX2.CAreaStippleMode, AreaStippleMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CLineStippleMode, LineStippleMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CLoadLineStippleCounters, LoadLineStippleCounters); - GLINT_SLOW_WRITE_REG(pWC->MX2.CWindowOrigin, WindowOrigin); - GLINT_SLOW_WRITE_REG(pWC->MX2.CRouterMode, RouterMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureAddressMode, TextureAddressMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureReadMode, TextureReadMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureColorMode, TextureColorMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFogMode, FogMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CColorDDAMode, ColorDDAMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CGLINTColor, GLINTColor); - GLINT_SLOW_WRITE_REG(pWC->MX2.CAlphaTestMode, AlphaTestMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CAntialiasMode, AntialiasMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CAlphaBlendMode, AlphaBlendMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CDitherMode, DitherMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBSoftwareWriteMask, FBSoftwareWriteMask); - GLINT_SLOW_WRITE_REG(pWC->MX2.CLogicalOpMode, LogicalOpMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBWriteData, FBWriteData); - GLINT_SLOW_WRITE_REG(pWC->MX2.CLBReadMode, LBReadMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CLBSourceOffset, LBSourceOffset); - GLINT_SLOW_WRITE_REG(pWC->MX2.CLBWindowBase, LBWindowBase); - GLINT_SLOW_WRITE_REG(pWC->MX2.CLBWriteMode, LBWriteMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CTextureDownloadOffset, TextureDownloadOffset); - GLINT_SLOW_WRITE_REG(pWC->MX2.CLBWindowOffset, LBWindowOffset); - GLINT_SLOW_WRITE_REG(pWC->MX2.CGLINTWindow, GLINTWindow); - GLINT_SLOW_WRITE_REG(pWC->MX2.CStencilMode, StencilMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CDepthMode, DepthMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CGLINTDepth, GLINTDepth); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBReadMode, FBReadMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBSourceOffset, FBSourceOffset); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBPixelOffset, FBPixelOffset); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBWindowBase, FBWindowBase); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBWriteMode, FBWriteMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBHardwareWriteMask, FBHardwareWriteMask); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBBlockColor, FBBlockColor); - GLINT_SLOW_WRITE_REG(pWC->MX2.CPatternRamMode, PatternRamMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBBlockColorU, FBBlockColorU); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFBBlockColorL, FBBlockColorL); - GLINT_SLOW_WRITE_REG(pWC->MX2.CFilterMode, FilterMode); - GLINT_SLOW_WRITE_REG(pWC->MX2.CStatisticMode, StatisticMode); - - /* Restore the "real" broadcast mask last */ - GLINT_SLOW_WRITE_REG(pWC->MX1.CBroadcastMask, BroadcastMask); - } - /* Sync is needed here probabilistically */ - if (pGlint->AccelInfoRec->Sync) { - (*pGlint->AccelInfoRec->Sync)(pGlint->AccelInfoRec->pScrn); - pGlint->AccelInfoRec->NeedToSync = FALSE; - } - } -} - -void -GLINTDRIInitBuffers( - WindowPtr pWin, - RegionPtr prgn, - CARD32 index) -{ - ScreenPtr pScreen = pWin->drawable.pScreen; - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; - GLINTPtr pGlint = GLINTPTR(pScrn); - BoxPtr pbox; - int nbox; - - pbox = REGION_RECTS(prgn); - nbox = REGION_NUM_RECTS(prgn); - - GLINT_WAIT(7); - /* Turn off writes the FB */ - GLINT_WRITE_REG(0, FBWriteMode); - GLINT_WRITE_REG(0, LBWindowBase); - GLINT_WRITE_REG(1, LBWriteMode); - if (pGlint->numMultiDevices == 2) { - GLINT_WRITE_REG( pGlint->pprod | - LBRM_ScanlineInt2 , LBReadMode); - } else { - GLINT_WRITE_REG( pGlint->pprod , LBReadMode); - } - GLINT_WRITE_REG(0, LBDepth); - GLINT_WRITE_REG(0, LBStencil); - GLINT_WRITE_REG( GWIN_UnitEnable | - GWIN_ForceLBUpdate | - ((index & 0xf) << 5) | - GWIN_LBUpdateSourceREG | - GWIN_OverrideWriteFilter, GLINTWindow); - - while (nbox--) { - GLINT_WAIT(8); - GLINT_WRITE_REG((pbox->x2)<<16, StartXSub); - GLINT_WRITE_REG((pbox->x1)<<16, StartXDom); - GLINT_WRITE_REG((pbox->y1)<<16, StartY); - GLINT_WRITE_REG((pbox->y2 - pbox->y1), GLINTCount); - GLINT_WRITE_REG(0, dXDom); - GLINT_WRITE_REG(0x10000, dY); - /* Must also set dXSub, since 3D tris cause it to be != 0 */ - GLINT_WRITE_REG(0, dXSub); - GLINT_WRITE_REG(PrimitiveTrapezoid, Render); - pbox++; - } - - GLINT_WAIT(3); - GLINT_SLOW_WRITE_REG(UNIT_DISABLE, LBWriteMode); - GLINT_SLOW_WRITE_REG(UNIT_ENABLE, FBWriteMode); - GLINT_SLOW_WRITE_REG(UNIT_DISABLE, GLINTWindow); - - /* Update XAA's NeedToSync flag */ - pGlint->AccelInfoRec->NeedToSync = TRUE; -} - -void -GLINTDRIMoveBuffers( - WindowPtr pParent, - DDXPointRec ptOldOrg, - RegionPtr prgnSrc, - CARD32 index) -{ - ScreenPtr pScreen = pParent->drawable.pScreen; -#if 0 - ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; -#endif - int dx, dy; - WindowPtr pChild; - RegionRec rgnSubWindow, rgnTranslateSrc; - CARD32 indexSubWindow; - - /* NOT_DONE: For now, just init the buffer. We are not copying the depth - * and stencil, they just get redrawn for the next frame(s). - */ - - REGION_NULL(pScreen, &rgnSubWindow); - REGION_NULL(pScreen, &rgnTranslateSrc); - REGION_COPY(pScreen, &rgnTranslateSrc, prgnSrc); - dx = ptOldOrg.x - pParent->drawable.x; - dy = ptOldOrg.y - pParent->drawable.y; - REGION_TRANSLATE(pScreen, &rgnTranslateSrc, -dx, -dy); - - pChild = pParent; - while (1) { - if (pChild->viewable) { - REGION_INTERSECT(pScreen, &rgnSubWindow, - &pChild->borderClip, &rgnTranslateSrc); - indexSubWindow = DRIGetDrawableIndex(pChild); - GLINTDRIInitBuffers( pChild, &rgnSubWindow, indexSubWindow); - if (pChild->firstChild) { - pChild = pChild->firstChild; - continue; - } - } - while (!pChild->nextSib && (pChild != pParent)) - pChild = pChild->parent; - if (pChild == pParent) - break; - pChild = pChild->nextSib; - } -} diff --git a/src/glint_dri.h b/src/glint_dri.h deleted file mode 100644 index 3952759..0000000 --- a/src/glint_dri.h +++ /dev/null @@ -1,123 +0,0 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dri.h,v 1.7 2002/10/30 12:52:16 alanh Exp $ */ -/************************************************************************** - -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -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. - -**************************************************************************/ - -/* - * Author: - * Jens Owen <jens@tungstengraphics.com> - * - */ - -#ifndef _GLINT_DRI_H_ -#define _GLINT_DRI_H_ - -#include "xf86drm.h" -#include "glint_common.h" - -typedef struct { - unsigned int GDeltaMode; - unsigned int GDepthMode; - unsigned int GGeometryMode; - unsigned int GTransformMode; -} GAMMAContextRegionRec, *GAMMAContextRegionPtr; - -typedef struct { - unsigned char next, prev; /* indices to form a circular LRU */ - unsigned char in_use; /* owned by a client, or free? */ - int age; /* tracked by clients to update local LRU's */ -} GAMMATextureRegionRec, *GAMMATextureRegionPtr; - -typedef struct { - GAMMAContextRegionRec context_state; - - unsigned int dirty; - - /* Maintain an LRU of contiguous regions of texture space. If - * you think you own a region of texture memory, and it has an - * age different to the one you set, then you are mistaken and - * it has been stolen by another client. If global texAge - * hasn't changed, there is no need to walk the list. - * - * These regions can be used as a proxy for the fine-grained - * texture information of other clients - by maintaining them - * in the same lru which is used to age their own textures, - * clients have an approximate lru for the whole of global - * texture space, and can make informed decisions as to which - * areas to kick out. There is no need to choose whether to - * kick out your own texture or someone else's - simply eject - * them all in LRU order. - */ - -#define GAMMA_NR_TEX_REGIONS 64 - GAMMATextureRegionRec texList[GAMMA_NR_TEX_REGIONS+1]; - /* Last elt is sentinal */ - int texAge; /* last time texture was uploaded */ - int last_enqueue; /* last time a buffer was enqueued */ - int last_dispatch; /* age of the most recently dispatched buffer */ - int last_quiescent; /* */ - int ctxOwner; /* last context to upload state */ - - int vertex_prim; -} GLINTSAREADRIRec, *GLINTSAREADRIPtr; - -/* - * Glint specific record passed back to client driver - * via DRIGetDeviceInfo request - */ -typedef struct { - drmRegion registers0; - drmRegion registers1; - drmRegion registers2; - drmRegion registers3; - int numMultiDevices; - int pprod; - int cpp; - int frontOffset; - int frontPitch; - int backOffset; - int backPitch; - int backX; - int backY; - int depthOffset; - int depthPitch; - int textureSize; - int logTextureGranularity; -} GLINTDRIRec, *GLINTDRIPtr; - -#define GLINT_DRI_BUF_COUNT 256 -#define GLINT_DRI_BUF_SIZE 4096 - -#define GAMMA_NR_TEX_REGIONS 64 - -#define DMA_WRITE(val,reg) \ -do { \ - pGlint->buf2D++ = Glint##reg##Tag; \ - pGlint->buf2D++ = val; \ -} while (0) - -#endif /* _GLINT_DRI_H_ */ diff --git a/src/glint_dripriv.h b/src/glint_dripriv.h deleted file mode 100644 index 76dfd2b..0000000 --- a/src/glint_dripriv.h +++ /dev/null @@ -1,296 +0,0 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/glint/glint_dripriv.h,v 1.5 2000/06/17 10:00:13 alanh Exp $ */ -/************************************************************************** - -Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. -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. - -**************************************************************************/ - -/* - * Author: - * Jens Owen <jens@tungstengraphics.com> - * - */ - -extern void GlxSetVisualConfigs( - int nconfigs, - __GLXvisualConfig *configs, - void **configprivs -); - -extern Bool GLINTCreateContext(ScreenPtr pScreen, - VisualPtr visual, - drm_context_t hwContext, - void* pVisualConfigPriv, - DRIContextType contextStore); - -extern void GLINTDRISwapContext( ScreenPtr pScreen, - DRISyncType syncType, - DRIContextType readContextType, - void* readContextStore, - DRIContextType writeContextType, - void* writeContextStore); - -/* Macros to Setup Generic Kernel Device Driver to Handle DMA for gamma */ - -/* WARNING!!! MAGIC NUMBER!!! The number of regions already added to the - kernel must be specified here. Currently, the number is 2. */ -#define DRM_REG(reg) \ - (2 \ - + ((reg < 0x1000) \ - ? 0 \ - : ((reg < 0x10000) ? 1 : ((reg < 0x11000) ? 2 : 3)))) - -#define DRM_OFF(reg) \ - ((reg < 0x1000) \ - ? reg \ - : ((reg < 0x10000) \ - ? (reg - 0x1000) \ - : ((reg < 0x11000) \ - ? (reg - 0x10000) \ - : (reg - 0x11000)))) - - -#define DRM_I_WRITE_R(reg,a,b,c,d) \ - DRM_I_WRITE(DRM_REG(reg), DRM_OFF(reg), a, b, c, d) - -#define DRM_I_WRITE_IMM_R(reg,a) \ - DRM_I_WRITE_IMM(DRM_REG(reg), DRM_OFF(reg), a) - -#define DRM_I_READ_R(reg) \ - DRM_I_READ(DRM_REG(reg), DRM_OFF(reg)) - -#define DRM_I_WHILE_IMM_R(reg,a,b) \ - DRM_I_WHILE_IMM(DRM_REG(reg), DRM_OFF(reg), a, b) - -#define DRM_I_IF_IMM_R(reg,a,b,c) \ - DRM_I_IF_IMM(DRM_REG(reg), DRM_OFF(reg), a, b, c) - -#define GLINTSync GlintSync -#define GLINTSyncTag 0x188 - -#define GLINT_MAX_DRAWABLES 15 -#define GLINT_GAMMA_CONTEXT_SIZE 964 -#define GLINT_GAMMA_CONTEXT_MASK 0x7ff - -typedef struct { - int index; -} GLINTConfigPrivRec, *GLINTConfigPrivPtr; - -typedef struct { - - /* 2D components */ - CARD32 CStartXDom; - CARD32 CdXDom; - CARD32 CStartXSub; - CARD32 CdXSub; - CARD32 CStartY; - CARD32 CdY; - CARD32 CGLINTCount; - CARD32 CPointTable0; - CARD32 CPointTable1; - CARD32 CPointTable2; - CARD32 CPointTable3; - CARD32 CRasterizerMode; - CARD32 CYLimits; - CARD32 CScanLineOwnership; - CARD32 CPixelSize; - CARD32 CScissorMode; - CARD32 CScissorMinXY; - CARD32 CScissorMaxXY; - CARD32 CScreenSize; - CARD32 CAreaStippleMode; - CARD32 CLineStippleMode; - CARD32 CLoadLineStippleCounters; - CARD32 CWindowOrigin; - CARD32 CRouterMode; - CARD32 CTextureAddressMode; - CARD32 CTextureReadMode; - CARD32 CTextureColorMode; - CARD32 CFogMode; - CARD32 CColorDDAMode; - CARD32 CGLINTColor; - CARD32 CAlphaTestMode; - CARD32 CAntialiasMode; - CARD32 CAlphaBlendMode; - CARD32 CDitherMode; - CARD32 CFBSoftwareWriteMask; - CARD32 CLogicalOpMode; - CARD32 CFBWriteData; - CARD32 CLBReadMode; - CARD32 CLBSourceOffset; - CARD32 CLBWindowBase; - CARD32 CLBWriteMode; - CARD32 CTextureDownloadOffset; - CARD32 CLBWindowOffset; - CARD32 CGLINTWindow; - CARD32 CStencilMode; - CARD32 CDepthMode; - CARD32 CGLINTDepth; - CARD32 CFBReadMode; - CARD32 CFBSourceOffset; - CARD32 CFBPixelOffset; - CARD32 CFBWindowBase; - CARD32 CFBWriteMode; - CARD32 CFBHardwareWriteMask; - CARD32 CFBBlockColor; - CARD32 CPatternRamMode; - CARD32 CFBBlockColorU; - CARD32 CFBBlockColorL; - CARD32 CFilterMode; - CARD32 CStatisticMode; - CARD32 CBroadcastMask; - - /* 3D components */ - CARD32 CSStart; - CARD32 CdSdx; - CARD32 CdSdyDom; - CARD32 CTStart; - CARD32 CdTdx; - CARD32 CdTdyDom; - CARD32 CQStart; - CARD32 CdQdx; - CARD32 CdQdyDom; - CARD32 CLOD; - CARD32 CdSdy; - CARD32 CdTdy; - CARD32 CdQdy; - CARD32 CTex; - CARD32 CTextureFormat; - CARD32 CTextureCacheControl; - CARD32 CGLINTBorderColor; - CARD32 CTexelLUTIndex; - CARD32 CTexelLUTData; - CARD32 CTexelLUTAddress; - CARD32 CTexelLUTTransfer; - CARD32 CTextureFilterMode; - CARD32 CTextureChromaUpper; - CARD32 CTextureChromaLower; - CARD32 CTxBaseAddr0; - CARD32 CTxBaseAddr1; - CARD32 CTxBaseAddr2; - CARD32 CTxBaseAddr3; - CARD32 CTxBaseAddr4; - CARD32 CTxBaseAddr5; - CARD32 CTxBaseAddr6; - CARD32 CTxBaseAddr7; - CARD32 CTxBaseAddr8; - CARD32 CTxBaseAddr9; - CARD32 CTxBaseAddr10; - CARD32 CTxBaseAddr11; - CARD32 CTxBaseAddr12; - CARD32 CTexelLUT0; - CARD32 CTexelLUT1; - CARD32 CTexelLUT2; - CARD32 CTexelLUT3; - CARD32 CTexelLUT4; - CARD32 CTexelLUT5; - CARD32 CTexelLUT6; - CARD32 CTexelLUT7; - CARD32 CTexelLUT8; - CARD32 CTexelLUT9; - CARD32 CTexelLUT10; - CARD32 CTexelLUT11; - CARD32 CTexelLUT12; - CARD32 CTexelLUT13; - CARD32 CTexelLUT14; - CARD32 CTexelLUT15; - CARD32 CTexel0; - CARD32 CTexel1; - CARD32 CTexel2; - CARD32 CTexel3; - CARD32 CTexel4; - CARD32 CTexel5; - CARD32 CTexel6; - CARD32 CTexel7; - CARD32 CInterp0; - CARD32 CInterp1; - CARD32 CInterp2; - CARD32 CInterp3; - CARD32 CInterp4; - CARD32 CTextureFilter; - CARD32 CTextureEnvColor; - CARD32 CFogColor; - CARD32 CFStart; - CARD32 CdFdx; - CARD32 CdFdyDom; - CARD32 CKsStart; - CARD32 CdKsdx; - CARD32 CdKsdyDom; - CARD32 CKdStart; - CARD32 CdKdStart; - CARD32 CdKddyDom; - CARD32 CRStart; - CARD32 CdRdx; - CARD32 CdRdyDom; - CARD32 CGStart; - CARD32 CdGdx; - CARD32 CdGdyDom; - CARD32 CBStart; - CARD32 CdBdx; - CARD32 CdBdyDom; - CARD32 CAStart; - CARD32 CdAdx; - CARD32 CdAdyDom; - CARD32 CConstantColor; - CARD32 CChromaUpper; - CARD32 CChromaLower; - CARD32 CChromaTestMode; - CARD32 CStencilData; - CARD32 CGLINTStencil; - CARD32 CZStartU; - CARD32 CZStartL; - CARD32 CdZdxU; - CARD32 CdZdxL; - CARD32 CdZdyDomU; - CARD32 CdZdyDomL; - CARD32 CFastClearDepth; - CARD32 CMinRegion; - CARD32 CMaxRegion; - CARD32 CKsRStart; - CARD32 CdKsRdx; - CARD32 CdKsRdyDom; - CARD32 CKsGStart; - CARD32 CdKsGdx; - CARD32 CdKsGdyDom; - CARD32 CKsBStart; - CARD32 CdKsBdx; - CARD32 CdKsBdyDom; - CARD32 CKdRStart; - CARD32 CdKdRdx; - CARD32 CdKdRdyDom; - CARD32 CKdGStart; - CARD32 CdKdGdx; - CARD32 CdKdGdyDom; - CARD32 CKdBStart; - CARD32 CdKdBdx; - CARD32 CdKdBdyDom; - -} GLINTMXRec; - -typedef struct { - GLINTMXRec MX1; - GLINTMXRec MX2; - CARD32 Gamma[GLINT_GAMMA_CONTEXT_SIZE]; -} GLINTDRIContextRec, *GLINTDRIContextPtr; diff --git a/src/glint_driver.c b/src/glint_driver.c index ffafc39..a0b378a 100644 --- a/src/glint_driver.c +++ b/src/glint_driver.c @@ -2799,19 +2799,6 @@ GLINTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) return FALSE; } -#ifdef XF86DRI_DEVEL - /* - * Setup DRI after visuals have been established, but before fbScreenInit - * is called. fbScreenInit will eventually call into the drivers - * InitGLXVisuals call back. - */ - if (!pGlint->NoAccel && pGlint->HWCursor) { - pGlint->directRenderingEnabled = GLINTDRIScreenInit(pScreen); - } else { - pGlint->directRenderingEnabled = FALSE; - } -#endif - /* * Call the framebuffer layer's ScreenInit function, and fill in other * pScreen fields. @@ -3037,22 +3024,6 @@ GLINTScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) xf86DPMSInit(pScreen, (DPMSSetProcPtr)GLINTDisplayPowerManagementSet, 0); -#ifdef XF86DRI_DEVEL - if (pGlint->directRenderingEnabled) { - /* Now that mi, cfb, drm and others have done their thing, - * complete the DRI setup. - */ - pGlint->directRenderingEnabled = GLINTDRIFinishScreenInit(pScreen); - } - if (pGlint->directRenderingEnabled) { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "direct rendering enabled\n"); - } else { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, - "direct rendering disabled\n"); - } -#endif - pScrn->memPhysBase = pGlint->FbAddress; pScrn->fbOffset = 0; @@ -3346,11 +3317,6 @@ GLINTCloseScreen(int scrnIndex, ScreenPtr pScreen) GLINTPtr pGlint = GLINTPTR(pScrn); TRACE_ENTER("GLINTCloseScreen"); -#ifdef XF86DRI_DEVEL - if (pGlint->directRenderingEnabled) { - GLINTDRICloseScreen(pScreen); - } -#endif switch (pGlint->Chipset) { case PCI_VENDOR_TI_CHIP_PERMEDIA2: diff --git a/src/glint_regs.h b/src/glint_regs.h index 426e9ae..cde8d8f 100644 --- a/src/glint_regs.h +++ b/src/glint_regs.h @@ -1282,7 +1282,6 @@ do{ \ } \ } -#ifndef XF86DRI_DEVEL #define LOADROP(rop) \ { \ if (pGlint->ROP != rop) { \ @@ -1290,14 +1289,7 @@ do{ \ pGlint->ROP = rop; \ } \ } -#else -#define LOADROP(rop) \ - { \ - GLINT_WRITE_REG(rop<<1|UNIT_ENABLE, LogicalOpMode); \ - pGlint->ROP = rop; \ - } -#endif - + #define CHECKCLIPPING \ { \ if (pGlint->ClippingOn) { \ @@ -1307,7 +1299,6 @@ do{ \ } \ } -#ifndef XF86DRI_DEVEL #define DO_PLANEMASK(planemask) \ { \ if (planemask != pGlint->planemask) { \ @@ -1316,14 +1307,6 @@ do{ \ GLINT_WRITE_REG(planemask, FBHardwareWriteMask);\ } \ } -#else -#define DO_PLANEMASK(planemask) \ - { \ - pGlint->planemask = planemask; \ - REPLICATE(planemask); \ - GLINT_WRITE_REG(planemask, FBHardwareWriteMask);\ - } -#endif /* Permedia Save/Restore functions */ diff --git a/src/pm3_accel.c b/src/pm3_accel.c index 786a3e3..4170e30 100644 --- a/src/pm3_accel.c +++ b/src/pm3_accel.c @@ -67,7 +67,6 @@ #define PM3_OTHERWRITEMASK \ (pGlint->PM3_UsingSGRAM ? PM3FBSoftwareWriteMask : PM3FBHardwareWriteMask ) -#ifndef XF86DRI_DEVEL #define PM3_PLANEMASK(planemask) \ { \ if (planemask != pGlint->planemask) { \ @@ -76,14 +75,6 @@ GLINT_WRITE_REG(planemask, PM3_WRITEMASK); \ } \ } -#else -#define PM3_PLANEMASK(planemask) \ - { \ - pGlint->planemask = planemask; \ - REPLICATE(planemask); \ - GLINT_WRITE_REG(planemask, PM3_WRITEMASK); \ - } -#endif /* Clipping */ static void Permedia3SetClippingRectangle(ScrnInfoPtr pScrn, int x, int y, diff --git a/src/tx_accel.c b/src/tx_accel.c index 7954ce0..0ce04c8 100644 --- a/src/tx_accel.c +++ b/src/tx_accel.c @@ -294,7 +294,6 @@ static void TXLoadCoord( ){ GLINTPtr pGlint = GLINTPTR(pScrn); -#ifndef XF86DRI_DEVEL if (w != pGlint->startxsub) { GLINT_WRITE_REG(w<<16, StartXSub); pGlint->startxsub = w; @@ -319,20 +318,6 @@ static void TXLoadCoord( GLINT_WRITE_REG(d<<16,dY); pGlint->dy = d; } -#else - GLINT_WRITE_REG(w<<16, StartXSub); - GLINT_WRITE_REG(x<<16,StartXDom); - GLINT_WRITE_REG(y<<16,StartY); - GLINT_WRITE_REG(h,GLINTCount); - GLINT_WRITE_REG(a<<16,dXDom); - GLINT_WRITE_REG(d<<16,dY); - pGlint->startxsub = w; - pGlint->startxdom = x; - pGlint->starty = y; - pGlint->count = h; - pGlint->dxdom = a; - pGlint->dy = d; -#endif } static void |