r200_maos_arrays.c revision c10c3eab4c9d8617bb12dc5958eb9cfe06cc2e4d
1521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)/*
2521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)Copyright (C) The Weather Channel, Inc.  2002.  All Rights Reserved.
3521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)
4521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)The Weather Channel (TM) funded Tungsten Graphics to develop the
5521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)initial release of the Radeon 8500 driver under the XFree86 license.
6521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)This notice must be preserved.
7521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)
8521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)Permission is hereby granted, free of charge, to any person obtaining
9521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)a copy of this software and associated documentation files (the
10521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)"Software"), to deal in the Software without restriction, including
11521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)without limitation the rights to use, copy, modify, merge, publish,
12521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)distribute, sublicense, and/or sell copies of the Software, and to
13521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)permit persons to whom the Software is furnished to do so, subject to
14521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)the following conditions:
15521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)
16521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)The above copyright notice and this permission notice (including the
17521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)next paragraph) shall be included in all copies or substantial
18521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)portions of the Software.
19521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)
20521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
24521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)
28521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)**************************************************************************/
29521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)
30521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)/*
31521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) * Authors:
32521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) *   Keith Whitwell <keith@tungstengraphics.com>
33521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) */
34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "main/glheader.h"
36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "main/mtypes.h"
377757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch#include "main/colormac.h"
385d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#include "main/imports.h"
3906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles)#include "main/macros.h"
40f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)
41521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "swrast_setup/swrast_setup.h"
4251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "math/m_translate.h"
431e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "tnl/tnl.h"
441e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "tnl/t_context.h"
4551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)
4676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "r200_context.h"
47f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "r200_ioctl.h"
48f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "r200_state.h"
4951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#include "r200_swtcl.h"
50521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "r200_maos.h"
510019e4eead4d990e4304c54a9028aca9122fb256Ben Murdoch#include "r200_tcl.h"
52521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)
53f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#if defined(USE_X86_ASM)
5451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)#define COPY_DWORDS( dst, src, nr )					\
5551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)do {									\
56c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)	int __tmp;							\
57521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	__asm__ __volatile__( "rep ; movsl"				\
58f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)			      : "=%c" (__tmp), "=D" (dst), "=S" (__tmp)	\
59f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)			      : "0" (nr),				\
60f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)			        "D" ((long)dst),			\
61f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)			        "S" ((long)src) );			\
62f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} while (0)
63f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#else
64f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#define COPY_DWORDS( dst, src, nr )		\
65f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)do {						\
66f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   int j;					\
67f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   for ( j = 0 ; j < nr ; j++ )			\
68f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)      dst[j] = ((int *)src)[j];			\
69f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   dst += nr;					\
70f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} while (0)
71f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#endif
72f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)
73f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)/* Emit any changed arrays to new GART memory, re-emit a packet to
74f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * update the arrays.
75f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) */
76f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)void r200EmitArrays( struct gl_context *ctx, GLubyte *vimap_rev )
77f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){
78f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   r200ContextPtr rmesa = R200_CONTEXT( ctx );
79f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   struct vertex_buffer *VB = &TNL_CONTEXT( ctx )->vb;
80f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   GLuint nr = 0;
81f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   GLuint vfmt0 = 0, vfmt1 = 0;
82f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   GLuint count = VB->Count;
83f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   GLuint i, emitsize;
84f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)
85f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   //   fprintf(stderr,"emit arrays\n");
86f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)   for ( i = 0; i < 15; i++ ) {
87f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)      GLubyte attrib = vimap_rev[i];
88f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)      if (attrib != 255) {
89f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)	 switch (i) {
90197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch	 case 0:
91521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    emitsize = (VB->AttribPtr[attrib]->size);
92197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch	    switch (emitsize) {
93521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    case 4:
94197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch	       vfmt0 |= R200_VTX_W0;
95521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	       /* fallthrough */
96521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    case 3:
971e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)	       vfmt0 |= R200_VTX_Z0;
98f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)	       break;
99f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)	    case 2:
100f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)	       break;
101197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch	    default: assert(0);
102f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)	    }
103f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)	    break;
104197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch	 case 1:
105521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    assert(attrib == VERT_ATTRIB_WEIGHT);
106a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)	    emitsize = (VB->AttribPtr[attrib]->size);
107521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    vfmt0 |= emitsize << R200_VTX_WEIGHT_COUNT_SHIFT;
108521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    break;
109521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 case 2:
110521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    assert(attrib == VERT_ATTRIB_NORMAL);
111a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)	    emitsize = 3;
112197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch	    vfmt0 |= R200_VTX_N0;
113521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    break;
114197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch	 case 3:
115521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    /* special handling to fix up fog. Will get us into trouble with vbos...*/
116521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    assert(attrib == VERT_ATTRIB_FOG);
11751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)	    if (!rmesa->radeon.tcl.aos[i].bo) {
118521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	       if (ctx->VertexProgram._Enabled)
119a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)		  rcommon_emit_vector( ctx,
120521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)				       &(rmesa->radeon.tcl.aos[nr]),
121521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)				       (char *)VB->AttribPtr[attrib]->data,
122323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)				       1,
123323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)				       VB->AttribPtr[attrib]->stride,
124323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)				       count);
125d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)	       else
126521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)		 rcommon_emit_vecfog( ctx,
127521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)				      &(rmesa->radeon.tcl.aos[nr]),
128521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)				      (char *)VB->AttribPtr[attrib]->data,
129521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)				      VB->AttribPtr[attrib]->stride,
130e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch				      count);
131521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    }
132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)	    vfmt0 |= R200_VTX_DISCRETE_FOG;
133521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    goto after_emit;
134521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    break;
135521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 case 4:
136521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 case 5:
137e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch	 case 6:
138521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 case 7:
139d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)	    if (VB->AttribPtr[attrib]->size == 4 &&
140521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	       (VB->AttribPtr[attrib]->stride != 0 ||
141521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)		VB->AttribPtr[attrib]->data[0][3] != 1.0)) emitsize = 4;
142521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    else emitsize = 3;
143521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    if (emitsize == 4)
144521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	       vfmt0 |= R200_VTX_FP_RGBA << (R200_VTX_COLOR_0_SHIFT + (i - 4) * 2);
145521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    else {
14651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)	       vfmt0 |= R200_VTX_FP_RGB << (R200_VTX_COLOR_0_SHIFT + (i - 4) * 2);
147521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    }
14851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)	    break;
14951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)	 case 8:
150e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch	 case 9:
151e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch	 case 10:
152521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 case 11:
153521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 case 12:
154521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 case 13:
155197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch	    emitsize = VB->AttribPtr[attrib]->size;
156521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    vfmt1 |= emitsize << (R200_VTX_TEX0_COMP_CNT_SHIFT + (i - 8) * 3);
157521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    break;
1587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci	 case 14:
159521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    emitsize = VB->AttribPtr[attrib]->size >= 2 ? VB->AttribPtr[attrib]->size : 2;
160197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch	    switch (emitsize) {
161521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    case 2:
162521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	       vfmt0 |= R200_VTX_XY1;
16351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)	       /* fallthrough */
164521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    case 3:
165a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)	       vfmt0 |= R200_VTX_Z1;
166521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	       /* fallthrough */
167521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    case 4:
168521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	       vfmt0 |= R200_VTX_W1;
169323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)	       /* fallthrough */
170e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch	    }
171521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    break;
172d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)	 default:
173521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    assert(0);
174521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	    emitsize = 0;
175521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 }
176323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)	 if (!rmesa->radeon.tcl.aos[nr].bo) {
177521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	   rcommon_emit_vector( ctx,
178521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)				&(rmesa->radeon.tcl.aos[nr]),
179323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)				(char *)VB->AttribPtr[attrib]->data,
180521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)				emitsize,
181521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)				VB->AttribPtr[attrib]->stride,
182323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)				count );
183521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 }
184521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)after_emit:
185323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)	 assert(nr < 12);
186521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)	 nr++;
187521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)      }
188521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)   }
189323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
190521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)   if (vfmt0 != rmesa->hw.vtx.cmd[VTX_VTXFMT_0] ||
191521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)       vfmt1 != rmesa->hw.vtx.cmd[VTX_VTXFMT_1]) {
192521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)      R200_STATECHANGE( rmesa, vtx );
193e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch      rmesa->hw.vtx.cmd[VTX_VTXFMT_0] = vfmt0;
194521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)      rmesa->hw.vtx.cmd[VTX_VTXFMT_1] = vfmt1;
195521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)   }
1961e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)
197521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)   rmesa->radeon.tcl.aos_count = nr;
198521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)}
199521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)
200e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch