2 * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved.
3 * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved.
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sub license,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the
13 * next paragraph) shall be included in all copies or substantial portions
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
19 * VIA, S3 GRAPHICS, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
35 #include "via_context.h"
36 #include "via_state.h"
40 #include "via_ioctl.h"
42 #include "swrast/swrast.h"
43 #include "array_cache/acache.h"
45 #include "swrast_setup/swrast_setup.h"
47 #include "tnl/t_pipeline.h"
49 static GLuint ROP
[16] = {
50 HC_HROP_BLACK
, /* GL_CLEAR 0 */
51 HC_HROP_DPa
, /* GL_AND s & d */
52 HC_HROP_PDna
, /* GL_AND_REVERSE s & ~d */
53 HC_HROP_P
, /* GL_COPY s */
54 HC_HROP_DPna
, /* GL_AND_INVERTED ~s & d */
55 HC_HROP_D
, /* GL_NOOP d */
56 HC_HROP_DPx
, /* GL_XOR s ^ d */
57 HC_HROP_DPo
, /* GL_OR s | d */
58 HC_HROP_DPon
, /* GL_NOR ~(s | d) */
59 HC_HROP_DPxn
, /* GL_EQUIV ~(s ^ d) */
60 HC_HROP_Dn
, /* GL_INVERT ~d */
61 HC_HROP_PDno
, /* GL_OR_REVERSE s | ~d */
62 HC_HROP_Pn
, /* GL_COPY_INVERTED ~s */
63 HC_HROP_DPno
, /* GL_OR_INVERTED ~s | d */
64 HC_HROP_DPan
, /* GL_NAND ~(s & d) */
65 HC_HROP_WHITE
/* GL_SET 1 */
68 static __inline__ GLuint
viaPackColor(GLuint format
,
74 return PACK_COLOR_565(r
, g
, b
);
76 return PACK_COLOR_8888(a
, r
, g
, b
);
79 if (VIA_DEBUG
) fprintf(stderr
, "unknown format %d\n", (int)format
);
81 return PACK_COLOR_8888(a
, r
, g
, b
);
85 static void viaAlphaFunc(GLcontext
*ctx
, GLenum func
, GLfloat ref
)
87 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
91 static void viaBlendEquation(GLcontext
*ctx
, GLenum mode
)
94 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
96 /* Can only do GL_ADD equation in hardware */
97 FALLBACK(VIA_CONTEXT(ctx
), VIA_FALLBACK_BLEND_EQ
, mode
!= GL_FUNC_ADD_EXT
);
99 /* BlendEquation sets ColorLogicOpEnabled in an unexpected
102 FALLBACK(VIA_CONTEXT(ctx
), VIA_FALLBACK_LOGICOP
,
103 (ctx
->Color
.ColorLogicOpEnabled
&&
104 ctx
->Color
.LogicOp
!= GL_COPY
));
106 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
110 static void viaBlendFunc(GLcontext
*ctx
, GLenum sfactor
, GLenum dfactor
)
112 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
113 GLboolean fallback
= GL_FALSE
;
115 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
117 switch (ctx
->Color
.BlendSrcRGB
) {
119 case GL_SRC_ALPHA
: break;
121 case GL_DST_COLOR
: break;
122 case GL_ONE_MINUS_DST_COLOR
: break;
123 case GL_ONE_MINUS_SRC_ALPHA
: break;
124 case GL_DST_ALPHA
: break;
125 case GL_ONE_MINUS_DST_ALPHA
: break;
126 case GL_SRC_ALPHA_SATURATE
: /*a |= SDM_SRC_SRC_ALPHA; break;*/
127 case GL_CONSTANT_COLOR
:
128 case GL_ONE_MINUS_CONSTANT_COLOR
:
129 case GL_CONSTANT_ALPHA
:
130 case GL_ONE_MINUS_CONSTANT_ALPHA
:
137 switch (ctx
->Color
.BlendDstRGB
) {
138 case GL_SRC_ALPHA
: break;
139 case GL_ONE_MINUS_SRC_ALPHA
: break;
142 case GL_SRC_COLOR
: break;
143 case GL_ONE_MINUS_SRC_COLOR
: break;
144 case GL_DST_ALPHA
: break;
145 case GL_ONE_MINUS_DST_ALPHA
: break;
146 case GL_CONSTANT_COLOR
:
147 case GL_ONE_MINUS_CONSTANT_COLOR
:
148 case GL_CONSTANT_ALPHA
:
149 case GL_ONE_MINUS_CONSTANT_ALPHA
:
156 FALLBACK(vmesa
, VIA_FALLBACK_BLEND_FUNC
, fallback
);
158 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
162 /* Shouldn't be called as the extension is disabled.
164 static void viaBlendFuncSeparate(GLcontext
*ctx
, GLenum sfactorRGB
,
165 GLenum dfactorRGB
, GLenum sfactorA
,
168 if (dfactorRGB
!= dfactorA
|| sfactorRGB
!= sfactorA
) {
169 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glBlendEquation (disabled)");
172 viaBlendFunc(ctx
, sfactorRGB
, dfactorRGB
);
176 static void viaDepthFunc(GLcontext
*ctx
, GLenum func
)
178 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
182 static void viaDepthMask(GLcontext
*ctx
, GLboolean flag
)
184 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
188 static void viaPolygonStipple(GLcontext
*ctx
, const GLubyte
*mask
)
190 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
195 /* =============================================================
198 static void viaScissor(GLcontext
*ctx
, GLint x
, GLint y
,
199 GLsizei w
, GLsizei h
)
201 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
203 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
205 if (ctx
->Scissor
.Enabled
) {
206 VIA_FIREVERTICES(vmesa
); /* don't pipeline cliprect changes */
207 vmesa
->uploadCliprects
= GL_TRUE
;
210 vmesa
->scissorRect
.x1
= x
;
211 vmesa
->scissorRect
.y1
= vmesa
->driDrawable
->h
- (y
+ h
);
212 vmesa
->scissorRect
.x2
= x
+ w
;
213 vmesa
->scissorRect
.y2
= vmesa
->driDrawable
->h
- y
;
215 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
220 static void viaLogicOp(GLcontext
*ctx
, GLenum opcode
)
223 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
224 if (VIA_DEBUG
) fprintf(stderr
, "opcode = %x\n", opcode
);
225 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
229 /* Fallback to swrast for select and feedback.
231 static void viaRenderMode(GLcontext
*ctx
, GLenum mode
)
233 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
235 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
237 FALLBACK(vmesa
, VIA_FALLBACK_RENDERMODE
, (mode
!= GL_RENDER
));
239 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
244 static void viaDrawBuffer(GLcontext
*ctx
, GLenum mode
)
246 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
248 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
250 if (mode
== GL_FRONT_LEFT
) {
251 VIA_FIREVERTICES(vmesa
);
252 VIA_STATECHANGE(vmesa
, VIA_UPLOAD_BUFFERS
);
253 vmesa
->drawMap
= (char *)vmesa
->driScreen
->pFB
;
254 vmesa
->readMap
= (char *)vmesa
->driScreen
->pFB
;
255 vmesa
->drawPitch
= vmesa
->front
.pitch
;
256 vmesa
->readPitch
= vmesa
->front
.pitch
;
257 viaXMesaSetFrontClipRects(vmesa
);
258 FALLBACK(vmesa
, VIA_FALLBACK_DRAW_BUFFER
, GL_FALSE
);
261 else if (mode
== GL_BACK_LEFT
) {
262 VIA_FIREVERTICES(vmesa
);
263 VIA_STATECHANGE(vmesa
, VIA_UPLOAD_BUFFERS
);
264 vmesa
->drawMap
= vmesa
->back
.map
;
265 vmesa
->readMap
= vmesa
->back
.map
;
266 vmesa
->drawPitch
= vmesa
->back
.pitch
;
267 vmesa
->readPitch
= vmesa
->back
.pitch
;
268 viaXMesaSetBackClipRects(vmesa
);
269 FALLBACK(vmesa
, VIA_FALLBACK_DRAW_BUFFER
, GL_FALSE
);
273 FALLBACK(vmesa
, VIA_FALLBACK_DRAW_BUFFER
, GL_TRUE
);
277 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
281 static void viaClearColor(GLcontext
*ctx
, const GLfloat color
[4])
283 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
285 pcolor
[0] = (GLubyte
) (255 * color
[0]);
286 pcolor
[1] = (GLubyte
) (255 * color
[1]);
287 pcolor
[2] = (GLubyte
) (255 * color
[2]);
288 pcolor
[3] = (GLubyte
) (255 * color
[3]);
289 vmesa
->ClearColor
= viaPackColor(vmesa
->viaScreen
->bitsPerPixel
,
290 pcolor
[0], pcolor
[1],
291 pcolor
[2], pcolor
[3]);
295 /* =============================================================
296 * Culling - the via isn't quite as clean here as the rest of
297 * its interfaces, but it's not bad.
299 static void viaCullFaceFrontFace(GLcontext
*ctx
, GLenum unused
)
301 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
305 static void viaLineWidth(GLcontext
*ctx
, GLfloat widthf
)
307 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
311 static void viaPointSize(GLcontext
*ctx
, GLfloat sz
)
313 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
317 static void viaBitmap( GLcontext
*ctx
, GLint px
, GLint py
,
318 GLsizei width
, GLsizei height
,
319 const struct gl_pixelstore_attrib
*unpack
,
320 const GLubyte
*bitmap
)
322 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
324 /*=* [DBG] csmash : fix background overlap option menu *=*/
325 LOCK_HARDWARE(vmesa
);
326 viaFlushPrimsLocked(vmesa
);
327 UNLOCK_HARDWARE(vmesa
);
330 /*=* [DBG] csmash : fix segmentation fault *=*/
331 /*=* John Sheng [2003.7.18] texenv *=*/
332 /*if (!vmesa->drawMap && !vmesa->readMap) {*/
334 if (vmesa
->glCtx
->Color
._DrawDestMask
& BACK_LEFT_BIT
) {
335 viaDrawBuffer(ctx
, GL_BACK_LEFT
);
338 viaDrawBuffer(ctx
, GL_FRONT_LEFT
);
341 /*=* [DBG] csmash : white option words become brown *=*/
342 /*_swrast_Bitmap(ctx, px, py, width, height, unpack, bitmap );*/
345 fog
= ctx
->Fog
.Enabled
;
346 ctx
->Fog
.Enabled
= GL_FALSE
;
347 _swrast_Bitmap(ctx
, px
, py
, width
, height
, unpack
, bitmap
);
348 ctx
->Fog
.Enabled
= fog
;
352 /* =============================================================
355 static void viaColorMask(GLcontext
*ctx
,
356 GLboolean r
, GLboolean g
,
357 GLboolean b
, GLboolean a
)
359 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
363 /* Seperate specular not fully implemented on the via.
365 static void viaLightModelfv(GLcontext
*ctx
, GLenum pname
,
366 const GLfloat
*param
)
368 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
373 /* In Mesa 3.5 we can reliably do native flatshading.
375 static void viaShadeModel(GLcontext
*ctx
, GLenum mode
)
377 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
381 /* =============================================================
384 static void viaFogfv(GLcontext
*ctx
, GLenum pname
, const GLfloat
*param
)
386 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
390 /* =============================================================
392 static void viaEnable(GLcontext
*ctx
, GLenum cap
, GLboolean state
)
394 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
398 /* =============================================================
400 void viaEmitDrawingRectangle(viaContextPtr vmesa
)
402 __DRIdrawablePrivate
*dPriv
= vmesa
->driDrawable
;
403 viaScreenPrivate
*viaScreen
= vmesa
->viaScreen
;
404 int x0
= vmesa
->drawX
;
405 int y0
= vmesa
->drawY
;
406 int x1
= x0
+ dPriv
->w
;
407 int y1
= y0
+ dPriv
->h
;
408 /* GLuint dr2, dr3, dr4;
411 /* Coordinate origin of the window - may be offscreen.
413 /* dr4 = vmesa->BufferSetup[VIA_DESTREG_DR4] = ((y0 << 16) |
414 (((unsigned)x0) & 0xFFFF));
421 if (x1
> viaScreen
->width
- 1) x1
= viaScreen
->width
- 1;
422 if (y1
> viaScreen
->height
- 1) y1
= viaScreen
->height
- 1;
424 /* Onscreen drawing rectangle.
426 /* dr2 = vmesa->BufferSetup[VIA_DESTREG_DR2] = ((y0 << 16) | x0);
427 dr3 = vmesa->BufferSetup[VIA_DESTREG_DR3] = (((y1 + 1) << 16) | (x1 + 1));
430 vmesa
->dirty
|= VIA_UPLOAD_BUFFERS
;
434 static void viaCalcViewport(GLcontext
*ctx
)
436 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
437 const GLfloat
*v
= ctx
->Viewport
._WindowMap
.m
;
438 GLfloat
*m
= vmesa
->ViewportMatrix
.m
;
440 /* See also via_translate_vertex. SUBPIXEL adjustments can be done
441 * via state vars, too.
443 m
[MAT_SX
] = v
[MAT_SX
];
444 m
[MAT_TX
] = v
[MAT_TX
] + vmesa
->drawXoff
;
445 m
[MAT_SY
] = - v
[MAT_SY
];
446 m
[MAT_TY
] = - v
[MAT_TY
] + vmesa
->driDrawable
->h
;
447 /*=* John Sheng [2003.7.2] for visual config & viewperf drv-08 *=*/
448 if (vmesa
->depth
.bpp
== 16) {
449 m
[MAT_SZ
] = v
[MAT_SZ
] * (1.0 / 0xffff);
450 m
[MAT_TZ
] = v
[MAT_TZ
] * (1.0 / 0xffff);
453 m
[MAT_SZ
] = v
[MAT_SZ
] * (1.0 / 0xffffffff);
454 m
[MAT_TZ
] = v
[MAT_TZ
] * (1.0 / 0xffffffff);
458 static void viaViewport(GLcontext
*ctx
,
460 GLsizei width
, GLsizei height
)
462 viaCalcViewport(ctx
);
465 static void viaDepthRange(GLcontext
*ctx
,
466 GLclampd nearval
, GLclampd farval
)
468 viaCalcViewport(ctx
);
471 void viaPrintDirty(const char *msg
, GLuint state
)
475 fprintf(stderr
, "%s (0x%x): %s%s%s%s\n",
477 (unsigned int) state
,
478 (state
& VIA_UPLOAD_TEX0
) ? "upload-tex0, " : "",
479 (state
& VIA_UPLOAD_TEX1
) ? "upload-tex1, " : "",
480 (state
& VIA_UPLOAD_CTX
) ? "upload-ctx, " : "",
481 (state
& VIA_UPLOAD_BUFFERS
) ? "upload-bufs, " : ""
487 void viaInitState(GLcontext
*ctx
)
489 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
491 vmesa
->regCmdA
= HC_ACMD_HCmdA
;
492 vmesa
->regCmdB
= HC_ACMD_HCmdB
| HC_HVPMSK_X
| HC_HVPMSK_Y
| HC_HVPMSK_Z
;
493 vmesa
->regEnable
= HC_HenCW_MASK
;
495 if (vmesa
->glCtx
->Color
._DrawDestMask
& BACK_LEFT_BIT
) {
496 vmesa
->drawMap
= vmesa
->back
.map
;
497 vmesa
->readMap
= vmesa
->back
.map
;
500 vmesa
->drawMap
= (char *)vmesa
->driScreen
->pFB
;
501 vmesa
->readMap
= (char *)vmesa
->driScreen
->pFB
;
505 void viaChooseTextureState(GLcontext
*ctx
)
507 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
508 struct gl_texture_unit
*texUnit0
= &ctx
->Texture
.Unit
[0];
509 struct gl_texture_unit
*texUnit1
= &ctx
->Texture
.Unit
[1];
510 /*=* John Sheng [2003.7.18] texture combine *=*/
511 GLboolean AlphaCombine
[3];
513 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
515 if (texUnit0
->_ReallyEnabled
|| texUnit1
->_ReallyEnabled
) {
518 fprintf(stderr
, "Texture._ReallyEnabled - in\n");
519 fprintf(stderr
, "texUnit0->_ReallyEnabled = %x\n",texUnit0
->_ReallyEnabled
);
523 if (texUnit0
->_ReallyEnabled
) {
524 struct gl_texture_object
*texObj
= texUnit0
->_Current
;
525 struct gl_texture_image
*texImage
= texObj
->Image
[0];
528 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->_ReallyEnabled\n");
530 if (texImage
->Border
) {
531 FALLBACK(vmesa
, VIA_FALLBACK_TEXTURE
, GL_TRUE
);
534 vmesa
->regCmdB
|= HC_HVPMSK_S
| HC_HVPMSK_T
| HC_HVPMSK_W
| HC_HVPMSK_Cs
;
535 vmesa
->regEnable
|= HC_HenTXMP_MASK
| HC_HenTXCH_MASK
| HC_HenTXPP_MASK
;
537 switch (texObj
->MinFilter
) {
539 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Nearest
|
543 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Linear
|
546 case GL_NEAREST_MIPMAP_NEAREST
:
547 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Nearest
|
549 vmesa
->regHTXnTB_0
|= HC_HTXnFLDs_Nearest
;
551 case GL_LINEAR_MIPMAP_NEAREST
:
552 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Linear
|
554 vmesa
->regHTXnTB_0
|= HC_HTXnFLDs_Nearest
;
556 case GL_NEAREST_MIPMAP_LINEAR
:
557 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Nearest
|
559 vmesa
->regHTXnTB_0
|= HC_HTXnFLDs_Linear
;
561 case GL_LINEAR_MIPMAP_LINEAR
:
562 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Linear
|
564 vmesa
->regHTXnTB_0
|= HC_HTXnFLDs_Linear
;
570 if (texObj
->MagFilter
) {
571 vmesa
->regHTXnTB_0
|= HC_HTXnFLSe_Linear
|
575 vmesa
->regHTXnTB_0
|= HC_HTXnFLSe_Nearest
|
579 if (texObj
->WrapS
== GL_REPEAT
)
580 vmesa
->regHTXnMPMD_0
= HC_HTXnMPMD_Srepeat
;
582 vmesa
->regHTXnMPMD_0
= HC_HTXnMPMD_Sclamp
;
585 if (texObj
->WrapT
== GL_REPEAT
)
586 vmesa
->regHTXnMPMD_0
|= HC_HTXnMPMD_Trepeat
;
588 vmesa
->regHTXnMPMD_0
|= HC_HTXnMPMD_Tclamp
;
591 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode %x\n",texUnit0
->EnvMode
);
593 switch (texUnit0
->EnvMode
) {
595 switch (texImage
->Format
) {
599 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
601 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
602 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
603 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
604 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
605 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
607 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
609 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
611 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
612 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
613 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
614 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
615 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
616 vmesa
->regHTXnTBLRAa_0
= 0x0;
617 vmesa
->regHTXnTBLRFog_0
= 0x0;
622 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
624 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
625 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
626 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
627 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
628 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
630 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
632 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
634 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
635 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
636 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
637 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
638 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
639 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
640 vmesa
->regHTXnTBLRAa_0
= 0x0;
642 case GL_LUMINANCE_ALPHA
:
643 /* C = Lt*Cf, A = At*Af
645 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
647 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
648 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
649 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
650 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
651 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
653 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
655 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
657 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
658 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
659 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
660 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
661 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
662 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
663 vmesa
->regHTXnTBLRAa_0
= 0x0;
664 vmesa
->regHTXnTBLRFog_0
= 0x0;
667 /* C = It*Cf, A = It*Af
669 * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
671 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
672 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
673 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
674 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
675 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
677 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
679 * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
681 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
682 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
683 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
684 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
685 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
686 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
687 vmesa
->regHTXnTBLRAa_0
= 0x0;
688 vmesa
->regHTXnTBLRFog_0
= 0x0;
693 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
695 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
696 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
697 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
698 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
699 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
701 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
703 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
705 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
706 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
707 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
708 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
709 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
710 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
711 vmesa
->regHTXnTBLRAa_0
= 0x0;
713 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_MODULATE: GL_RGB\n");
717 /* C = Ct*Cf, A = At*Af
719 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
721 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
722 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
723 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
724 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
725 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
727 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
729 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
731 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
732 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
733 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
734 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
735 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
736 HC_HTXnTBLAbias_HTXnTBLRAbias
737 | HC_HTXnTBLAshift_No
;
739 vmesa
->regHTXnTBLRAa_0
= 0x0;
740 vmesa
->regHTXnTBLRFog_0
= 0x0;
742 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_MODULATE: GL_RGBA\n");
746 switch (texObj
->Palette
.Format
) {
750 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
752 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
753 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
754 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
755 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
756 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
758 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
760 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
762 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
763 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
| HC_HTXnTBLAb_TOPA
|
764 HC_HTXnTBLAb_Adif
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
765 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
766 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
767 vmesa
->regHTXnTBLRAa_0
= 0x0;
768 vmesa
->regHTXnTBLRFog_0
= 0x0;
773 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
775 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
776 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
777 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
778 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
779 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
781 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
783 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
785 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
786 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
787 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
788 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
789 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
790 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
791 vmesa
->regHTXnTBLRAa_0
= 0x0;
793 case GL_LUMINANCE_ALPHA
:
794 /* C = Lt*Cf, A = At*Af
796 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
798 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
799 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
800 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
801 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
802 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
804 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
806 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
808 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
809 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
810 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
811 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
812 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
813 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
814 vmesa
->regHTXnTBLRAa_0
= 0x0;
815 vmesa
->regHTXnTBLRFog_0
= 0x0;
818 /* C = It*Cf, A = It*Af
820 * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
822 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
823 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
824 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
825 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
826 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
828 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
830 * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
832 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
833 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
834 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
835 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
836 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
837 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
838 vmesa
->regHTXnTBLRAa_0
= 0x0;
839 vmesa
->regHTXnTBLRFog_0
= 0x0;
844 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
846 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
847 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
848 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
849 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
850 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
852 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
854 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
856 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
857 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
858 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
859 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
860 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
861 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
862 vmesa
->regHTXnTBLRAa_0
= 0x0;
865 /* C = Ct*Cf, A = At*Af
867 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
869 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
870 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
871 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
872 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
873 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
875 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
877 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
879 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
880 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
881 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
882 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
883 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
884 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
885 vmesa
->regHTXnTBLRAa_0
= 0x0;
886 vmesa
->regHTXnTBLRFog_0
= 0x0;
893 switch (texImage
->Format
) {
896 case GL_LUMINANCE_ALPHA
:
904 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
906 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
907 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
908 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
909 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
910 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
911 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
913 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
915 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
917 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
918 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
919 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
920 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
921 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
922 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
923 vmesa
->regHTXnTBLRAa_0
= 0x0;
925 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_DECAL: GL_RGB\n");
929 /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf
931 * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
933 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
934 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Atex
|
935 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_Tex
|
936 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
937 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
938 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
940 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
942 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
944 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
945 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
946 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
947 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
948 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
949 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
950 vmesa
->regHTXnTBLRAa_0
= 0x0;
952 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_DECAL: GL_RGBA\n");
956 switch (texObj
->Palette
.Format
) {
959 case GL_LUMINANCE_ALPHA
:
967 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
969 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
970 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
971 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
972 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
973 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
974 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
976 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
978 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
980 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
981 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
982 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
983 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
984 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
985 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
986 vmesa
->regHTXnTBLRAa_0
= 0x0;
988 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_COLOR_INDEX: GL_RGB\n");
992 /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf
994 * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
996 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
997 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Atex
|
998 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_Tex
|
999 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1000 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1001 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1002 HC_HTXnTBLCshift_No
;
1003 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1005 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1007 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1008 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1009 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1010 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1011 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1012 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1013 vmesa
->regHTXnTBLRAa_0
= 0x0;
1015 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_COLOR_INDEX: GL_RGBA\n");
1023 switch (texImage
->Format
) {
1027 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
1029 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1030 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1031 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1032 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1033 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1034 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1035 HC_HTXnTBLCshift_No
;
1036 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1038 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1040 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1041 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1042 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1043 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1044 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1045 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1046 vmesa
->regHTXnTBLRAa_0
= 0x0;
1049 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1050 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1051 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1052 /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf
1054 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1056 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1057 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1058 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1059 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1060 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1061 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1062 HC_HTXnTBLCshift_No
;
1063 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1064 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1066 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1068 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1069 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1070 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1071 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1072 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1073 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1074 vmesa
->regHTXnTBLRAa_0
= 0x0;
1076 case GL_LUMINANCE_ALPHA
:
1077 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1078 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1079 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1080 /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf
1082 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1084 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1085 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1086 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1087 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1088 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1089 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1090 HC_HTXnTBLCshift_No
;
1091 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1092 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1094 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
1096 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1097 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1098 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
1099 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1100 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1101 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
1102 vmesa
->regHTXnTBLRAa_0
= 0x0;
1103 vmesa
->regHTXnTBLRFog_0
= 0x0;
1106 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1107 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1108 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1109 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1110 /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac
1111 * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af
1113 * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1115 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1116 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1117 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1118 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1119 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1120 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1121 HC_HTXnTBLCshift_No
;
1122 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1123 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1125 * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No.
1127 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1128 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1129 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1130 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
1131 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
|
1132 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1133 vmesa
->regHTXnTBLRAa_0
= (a
<< 8);
1136 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1137 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1138 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1139 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1140 /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf
1142 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1144 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1145 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1146 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1147 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1148 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1149 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1150 HC_HTXnTBLCshift_No
;
1151 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1152 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1154 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1156 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1157 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1158 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1159 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1160 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1161 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1162 vmesa
->regHTXnTBLRAa_0
= 0x0;
1164 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_BLEND: GL_RGB\n");
1168 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1169 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1170 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1171 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1172 /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf
1174 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1176 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1177 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1178 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1179 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1180 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1181 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1182 HC_HTXnTBLCshift_No
;
1183 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1184 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1186 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
1188 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1189 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1190 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
1191 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1192 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1193 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
1194 vmesa
->regHTXnTBLRAa_0
= 0x0;
1195 vmesa
->regHTXnTBLRFog_0
= 0x0;
1197 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_BLEND: GL_RGBA\n");
1200 case GL_COLOR_INDEX
:
1201 switch (texObj
->Palette
.Format
) {
1205 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
1207 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1208 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1209 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1210 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1211 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1212 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1213 HC_HTXnTBLCshift_No
;
1214 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1216 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1218 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1219 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1220 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1221 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1222 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1223 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1224 vmesa
->regHTXnTBLRAa_0
= 0x0;
1227 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1228 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1229 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1230 /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf
1232 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1234 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1235 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1236 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1237 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1238 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1239 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1240 HC_HTXnTBLCshift_No
;
1241 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1242 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1244 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1246 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1247 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1248 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1249 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1250 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1251 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1252 vmesa
->regHTXnTBLRAa_0
= 0x0;
1254 case GL_LUMINANCE_ALPHA
:
1255 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1256 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1257 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1258 /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf
1260 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1262 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1263 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1264 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1265 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1266 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1267 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1268 HC_HTXnTBLCshift_No
;
1269 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1270 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1272 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
1274 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1275 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1276 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
1277 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1278 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1279 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
1280 vmesa
->regHTXnTBLRAa_0
= 0x0;
1281 vmesa
->regHTXnTBLRFog_0
= 0x0;
1284 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1285 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1286 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1287 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1288 /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac
1289 * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af
1291 * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1293 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1294 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1295 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1296 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1297 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1298 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1299 HC_HTXnTBLCshift_No
;
1300 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1301 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1303 * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No.
1305 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1306 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1307 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1308 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
1309 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
|
1310 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1311 vmesa
->regHTXnTBLRAa_0
= (a
<< 8);
1314 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1315 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1316 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1317 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1318 /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf
1320 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1322 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1323 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1324 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1325 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1326 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1327 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1328 HC_HTXnTBLCshift_No
;
1329 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1330 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1332 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1334 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1335 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1336 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1337 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1338 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1339 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1340 vmesa
->regHTXnTBLRAa_0
= 0x0;
1343 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1344 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1345 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1346 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1347 /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf
1349 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1351 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1352 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1353 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1354 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1355 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1356 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1357 HC_HTXnTBLCshift_No
;
1358 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1359 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1361 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
1363 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1364 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1365 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
1366 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1367 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1368 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
1369 vmesa
->regHTXnTBLRAa_0
= 0x0;
1370 vmesa
->regHTXnTBLRFog_0
= 0x0;
1377 switch (texImage
->Format
) {
1381 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
1383 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1384 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1385 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1386 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1387 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1388 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1389 HC_HTXnTBLCshift_No
;
1390 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1392 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1394 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1395 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1396 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1397 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1398 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1399 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1400 vmesa
->regHTXnTBLRAa_0
= 0x0;
1405 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
1407 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1408 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1409 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1410 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1411 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1412 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1413 HC_HTXnTBLCshift_No
;
1414 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1416 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1418 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1419 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1420 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1421 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1422 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1423 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1424 vmesa
->regHTXnTBLRAa_0
= 0x0;
1426 case GL_LUMINANCE_ALPHA
:
1429 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
1431 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1432 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1433 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1434 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1435 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1436 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1437 HC_HTXnTBLCshift_No
;
1438 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1440 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1442 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1443 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1444 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1445 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1446 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1447 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1448 vmesa
->regHTXnTBLRAa_0
= 0x0;
1453 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No.
1455 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1456 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1457 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1458 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1459 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1460 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1461 HC_HTXnTBLCshift_No
;
1462 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1464 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No.
1466 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1467 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1468 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1469 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1470 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1471 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1472 vmesa
->regHTXnTBLRAa_0
= 0x0;
1477 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
1479 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1480 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1481 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1482 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1483 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1484 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1485 HC_HTXnTBLCshift_No
;
1486 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1488 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1490 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1491 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1492 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1493 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1494 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1495 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1496 vmesa
->regHTXnTBLRAa_0
= 0x0;
1498 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_REPLACE: GL_RGB\n");
1504 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
1506 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1507 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1508 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1509 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1510 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1511 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1512 HC_HTXnTBLCshift_No
;
1513 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1515 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1517 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1518 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1519 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1520 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1521 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1522 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1523 vmesa
->regHTXnTBLRAa_0
= 0x0;
1525 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_REPLACE: GL_RGBA\n");
1528 case GL_COLOR_INDEX
:
1529 switch (texObj
->Palette
.Format
) {
1533 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
1535 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1536 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1537 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1538 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1539 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1540 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1541 HC_HTXnTBLCshift_No
;
1542 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1544 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1546 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1547 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1548 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1549 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1550 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1551 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1552 vmesa
->regHTXnTBLRAa_0
= 0x0;
1557 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
1559 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1560 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1561 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1562 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1563 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1564 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1565 HC_HTXnTBLCshift_No
;
1566 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1568 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1570 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1571 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1572 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1573 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1574 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1575 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1576 vmesa
->regHTXnTBLRAa_0
= 0x0;
1578 case GL_LUMINANCE_ALPHA
:
1581 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
1583 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1584 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1585 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1586 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1587 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1588 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1589 HC_HTXnTBLCshift_No
;
1590 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1592 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1594 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1595 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1596 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1597 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1598 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1599 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1600 vmesa
->regHTXnTBLRAa_0
= 0x0;
1605 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No.
1607 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1608 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1609 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1610 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1611 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1612 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1613 HC_HTXnTBLCshift_No
;
1614 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1616 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No.
1618 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1619 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1620 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1621 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1622 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1623 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1624 vmesa
->regHTXnTBLRAa_0
= 0x0;
1629 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
1631 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1632 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1633 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1634 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1635 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1636 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1637 HC_HTXnTBLCshift_No
;
1638 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1640 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1642 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1643 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1644 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1645 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1646 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1647 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1648 vmesa
->regHTXnTBLRAa_0
= 0x0;
1653 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
1655 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1656 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1657 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1658 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1659 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1660 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1661 HC_HTXnTBLCshift_No
;
1662 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1664 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1666 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1667 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1668 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1669 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1670 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1671 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1672 vmesa
->regHTXnTBLRAa_0
= 0x0;
1678 /*=* John Sheng [2003.7.18] texture combine *=*/
1680 switch (texUnit0
->CombineModeRGB
) {
1682 switch (texUnit0
->CombineSourceRGB
[0]) {
1684 switch (texUnit0
->CombineOperandRGB
[0]) {
1686 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1687 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1688 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1689 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1690 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1691 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
;
1692 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1694 case GL_ONE_MINUS_SRC_COLOR
:
1695 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1696 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1697 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1698 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1699 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1700 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Tex
;
1701 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1704 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1705 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1706 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1707 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1708 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1709 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Atex
;
1710 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1712 case GL_ONE_MINUS_SRC_ALPHA
:
1713 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1714 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1715 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1716 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1717 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1718 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Atex
;
1719 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1724 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1725 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1726 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1727 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1728 switch (texUnit0
->CombineOperandRGB
[0]) {
1730 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1731 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1732 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1733 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1734 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1735 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
1737 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1738 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1740 case GL_ONE_MINUS_SRC_COLOR
:
1741 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1742 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1743 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1744 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1745 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1746 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
1747 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1748 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1751 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1752 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1753 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1754 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1755 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1756 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
1757 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1758 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
1760 case GL_ONE_MINUS_SRC_ALPHA
:
1761 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1762 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1763 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1764 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1765 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1766 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
1767 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1768 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
1772 case GL_PRIMARY_COLOR
:
1773 switch (texUnit0
->CombineOperandRGB
[0]) {
1775 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1776 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1777 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1778 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1779 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1780 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
;
1781 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1783 case GL_ONE_MINUS_SRC_COLOR
:
1784 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1785 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1786 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1787 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1788 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1789 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Dif
;
1790 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1793 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1794 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1795 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1796 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1797 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1798 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Adif
;
1799 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1801 case GL_ONE_MINUS_SRC_ALPHA
:
1802 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1803 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1804 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1805 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1806 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1807 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Adif
;
1808 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1813 switch (texUnit0
->CombineOperandRGB
[0]) {
1815 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1816 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1817 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1818 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1819 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1820 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
;
1821 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1823 case GL_ONE_MINUS_SRC_COLOR
:
1824 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1825 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1826 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1827 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1828 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1829 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Dif
;
1830 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1833 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1834 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1835 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1836 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1837 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1838 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Adif
;
1839 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1841 case GL_ONE_MINUS_SRC_ALPHA
:
1842 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1843 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1844 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1845 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1846 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1847 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Adif
;
1848 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1853 switch ((GLint
)(texUnit0
->CombineScaleShiftRGB
)) {
1855 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
1858 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
1861 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
1867 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1868 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
1869 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1870 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1871 switch (texUnit0
->CombineOperandRGB
[0]) {
1873 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
1876 case GL_ONE_MINUS_SRC_COLOR
:
1877 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
1881 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
1884 case GL_ONE_MINUS_SRC_ALPHA
:
1885 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
1889 switch (texUnit0
->CombineOperandRGB
[1]) {
1891 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
1894 case GL_ONE_MINUS_SRC_COLOR
:
1895 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
1899 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
1902 case GL_ONE_MINUS_SRC_ALPHA
:
1903 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
1907 switch (texUnit0
->CombineSourceRGB
[0]) {
1909 if (AlphaCombine
[0]==0) {
1910 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
1913 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Atex
;
1917 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1918 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1919 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1920 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1921 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
1922 if (AlphaCombine
[0]==0) {
1923 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
1926 vmesa
->regHTXnTBLRCa_0
= (a
<< 16) | (a
<< 8) | a
;
1929 case GL_PRIMARY_COLOR
:
1930 if (AlphaCombine
[0]==0) {
1931 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
1934 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
1938 if (AlphaCombine
[0]==0) {
1939 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
1942 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
1946 switch (texUnit0
->CombineSourceRGB
[1]) {
1948 if (AlphaCombine
[1]==0) {
1949 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
1952 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
1956 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1957 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1958 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1959 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1960 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
1961 if (AlphaCombine
[1]==0) {
1962 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1965 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
1968 case GL_PRIMARY_COLOR
:
1969 if (AlphaCombine
[1]==0) {
1970 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
1973 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
1977 if (AlphaCombine
[1]==0) {
1978 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
1981 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
1985 switch ((GLint
)(texUnit0
->CombineScaleShiftRGB
)) {
1987 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
1990 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
1993 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
1999 if (texUnit0
->CombineModeRGB
==GL_ADD
) {
2000 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2001 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
2004 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
2005 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
2007 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2008 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
| HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
;
2009 vmesa
->regHTXnTBLRCa_0
= ( 255<<16 | 255<<8 |255 );
2010 switch (texUnit0
->CombineOperandRGB
[0]) {
2012 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
2015 case GL_ONE_MINUS_SRC_COLOR
:
2016 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
2020 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
2023 case GL_ONE_MINUS_SRC_ALPHA
:
2024 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
2028 switch (texUnit0
->CombineOperandRGB
[1]) {
2030 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_TOPC
;
2033 case GL_ONE_MINUS_SRC_COLOR
:
2034 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_InvTOPC
;
2038 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_TOPC
;
2041 case GL_ONE_MINUS_SRC_ALPHA
:
2042 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_InvTOPC
;
2046 switch (texUnit0
->CombineSourceRGB
[0]) {
2048 if (AlphaCombine
[0]==0) {
2049 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
2052 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
2056 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2057 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2058 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2059 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2060 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
2061 if (AlphaCombine
[0]==0) {
2062 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
2065 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
2068 case GL_PRIMARY_COLOR
:
2070 if (AlphaCombine
[0]==0) {
2071 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
2074 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
2078 switch (texUnit0
->CombineSourceRGB
[1]) {
2080 if (AlphaCombine
[1]==0) {
2081 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Tex
;
2084 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Atex
;
2088 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2089 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2090 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2091 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2092 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_HTXnTBLRC
;
2093 if (AlphaCombine
[1]==0) {
2094 vmesa
->regHTXnTBLRCc_0
= (r
<< 16) | (g
<< 8) | b
;
2097 vmesa
->regHTXnTBLRCc_0
= (a
<< 16) | (a
<< 8) | a
;
2100 case GL_PRIMARY_COLOR
:
2102 if (AlphaCombine
[1]==0) {
2103 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Dif
;
2106 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Adif
;
2110 switch ((GLint
)(texUnit0
->CombineScaleShiftRGB
)) {
2112 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
2115 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
2118 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
2122 case GL_ADD_SIGNED
:
2123 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
;
2124 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2125 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2126 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
|
2127 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_HTXnTBLRC
;
2128 vmesa
->regHTXnTBLRCa_0
= ( 255<<16 | 255<<8 |255 );
2129 vmesa
->regHTXnTBLRCc_0
= ( 128<<16 | 128<<8 |128 );
2130 switch (texUnit0
->CombineOperandRGB
[0]) {
2132 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
2135 case GL_ONE_MINUS_SRC_COLOR
:
2136 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
2140 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
2143 case GL_ONE_MINUS_SRC_ALPHA
:
2144 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
2148 switch (texUnit0
->CombineOperandRGB
[1]) {
2150 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
2153 case GL_ONE_MINUS_SRC_COLOR
:
2154 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
2158 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
2161 case GL_ONE_MINUS_SRC_ALPHA
:
2162 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
2166 switch (texUnit0
->CombineSourceRGB
[0]) {
2168 if (AlphaCombine
[0]==0) {
2169 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
2172 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
2176 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2177 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2178 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2179 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2180 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
2181 if (AlphaCombine
[0]==0) {
2182 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
2185 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
2188 case GL_PRIMARY_COLOR
:
2190 if (AlphaCombine
[0]==0) {
2191 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
2194 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
2198 switch (texUnit0
->CombineSourceRGB
[1]) {
2200 if (AlphaCombine
[1]==0) {
2201 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Tex
;
2204 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Atex
;
2208 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2209 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2210 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2211 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2212 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_HTXnTBLRC
;
2213 if (AlphaCombine
[1]==0) {
2214 vmesa
->regHTXnTBLRCbias_0
= (r
<< 16) | (g
<< 8) | b
;
2217 vmesa
->regHTXnTBLRCbias_0
= (a
<< 16) | (a
<< 8) | a
;
2220 case GL_PRIMARY_COLOR
:
2222 if (AlphaCombine
[1]==0) {
2223 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Dif
;
2226 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Adif
;
2230 switch ((GLint
)(texUnit0
->CombineScaleShiftRGB
)) {
2232 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
2235 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
2238 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
2242 case GL_INTERPOLATE
:
2243 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
;
2244 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2245 switch (texUnit0
->CombineOperandRGB
[0]) {
2247 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_TOPC
;
2250 case GL_ONE_MINUS_SRC_COLOR
:
2251 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_InvTOPC
;
2255 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_TOPC
;
2258 case GL_ONE_MINUS_SRC_ALPHA
:
2259 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_InvTOPC
;
2263 switch (texUnit0
->CombineOperandRGB
[1]) {
2265 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_TOPC
;
2266 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
2269 case GL_ONE_MINUS_SRC_COLOR
:
2270 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_InvTOPC
;
2271 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
2275 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_TOPC
;
2276 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
2279 case GL_ONE_MINUS_SRC_ALPHA
:
2280 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_InvTOPC
;
2281 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
2285 switch (texUnit0
->CombineOperandRGB
[2]) {
2287 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_TOPC
;
2290 case GL_ONE_MINUS_SRC_COLOR
:
2291 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_InvTOPC
;
2295 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_TOPC
;
2298 case GL_ONE_MINUS_SRC_ALPHA
:
2299 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_InvTOPC
;
2303 switch (texUnit0
->CombineSourceRGB
[0]) {
2305 if (AlphaCombine
[0]==0) {
2306 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
2309 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
2313 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2314 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2315 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2316 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2317 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
2318 if (AlphaCombine
[0]==0) {
2319 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
2322 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
2325 case GL_PRIMARY_COLOR
:
2327 if (AlphaCombine
[0]==0) {
2328 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
2331 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
2335 switch (texUnit0
->CombineSourceRGB
[1]) {
2337 if (AlphaCombine
[0]==0) {
2338 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Tex
;
2339 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Tex
;
2342 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Atex
;
2343 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Atex
;
2347 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2348 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2349 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2350 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2351 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_HTXnTBLRC
;
2352 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_HTXnTBLRC
;
2353 if (AlphaCombine
[0]==0) {
2354 vmesa
->regHTXnTBLRCc_0
= (r
<< 16) | (g
<< 8) | b
;
2355 vmesa
->regHTXnTBLRCbias_0
= (r
<< 16) | (g
<< 8) | b
;
2358 vmesa
->regHTXnTBLRCc_0
= (a
<< 16) | (a
<< 8) | a
;
2359 vmesa
->regHTXnTBLRCbias_0
= (a
<< 16) | (a
<< 8) | a
;
2362 case GL_PRIMARY_COLOR
:
2364 if (AlphaCombine
[0]==0) {
2365 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Dif
;
2366 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Dif
;
2369 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Adif
;
2370 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Adif
;
2374 switch (texUnit0
->CombineSourceRGB
[2]) {
2376 if (AlphaCombine
[0]==0) {
2377 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
2380 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Atex
;
2384 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2385 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2386 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2387 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2388 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
2389 if (AlphaCombine
[0]==0) {
2390 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
2393 vmesa
->regHTXnTBLRCa_0
= (a
<< 16) | (a
<< 8) | a
;
2396 case GL_PRIMARY_COLOR
:
2398 if (AlphaCombine
[0]==0) {
2399 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
2402 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
2406 switch ((GLint
)(texUnit0
->CombineScaleShiftRGB
)) {
2408 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
2411 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
2414 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
2419 switch (texUnit0
->CombineModeA
) {
2421 switch (texUnit0
->CombineSourceA
[0]) {
2423 switch (texUnit0
->CombineOperandA
[0]) {
2425 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2426 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2427 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2428 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2429 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2430 HC_HTXnTBLAbias_Atex
;
2431 vmesa
->regHTXnTBLRAa_0
= 0x0;
2433 case GL_ONE_MINUS_SRC_ALPHA
:
2434 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2435 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2436 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2437 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2438 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2439 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_Atex
;
2440 vmesa
->regHTXnTBLRAa_0
= 0x0;
2445 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2446 switch (texUnit0
->CombineOperandA
[0]) {
2448 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2449 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2450 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2451 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2452 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2453 HC_HTXnTBLAbias_HTXnTBLRAbias
;
2454 vmesa
->regHTXnTBLRAa_0
= 0x0;
2455 vmesa
->regHTXnTBLRFog_0
= a
;
2457 case GL_ONE_MINUS_SRC_ALPHA
:
2458 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2459 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2460 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2461 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2462 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2463 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
2464 vmesa
->regHTXnTBLRAa_0
= 0x0;
2465 vmesa
->regHTXnTBLRFog_0
= a
;
2469 case GL_PRIMARY_COLOR
:
2471 switch (texUnit0
->CombineOperandA
[0]) {
2473 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2474 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2475 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2476 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2477 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2478 HC_HTXnTBLAbias_Adif
;
2479 vmesa
->regHTXnTBLRAa_0
= 0x0;
2481 case GL_ONE_MINUS_SRC_ALPHA
:
2482 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2483 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2484 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2485 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2486 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2487 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_Adif
;
2488 vmesa
->regHTXnTBLRAa_0
= 0x0;
2493 switch ((GLint
)(texUnit0
->CombineScaleShiftA
)) {
2495 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2498 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2501 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2506 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2507 HC_HTXnTBLAbias_HTXnTBLRAbias
;
2508 vmesa
->regHTXnTBLRFog_0
= 0x0;
2509 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2510 vmesa
->regHTXnTBLRAa_0
= 0x0;
2511 switch (texUnit0
->CombineOperandA
[0]) {
2513 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_TOPA
;
2515 case GL_ONE_MINUS_SRC_ALPHA
:
2516 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_InvTOPA
;
2519 switch (texUnit0
->CombineOperandA
[1]) {
2521 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
2523 case GL_ONE_MINUS_SRC_ALPHA
:
2524 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
2527 switch (texUnit0
->CombineSourceA
[0]) {
2529 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Atex
;
2532 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2533 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_HTXnTBLRA
;
2534 vmesa
->regHTXnTBLRAa_0
|= a
<<16;
2536 case GL_PRIMARY_COLOR
:
2538 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Adif
;
2541 switch (texUnit0
->CombineSourceA
[1]) {
2543 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
2546 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2547 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
2548 vmesa
->regHTXnTBLRAa_0
|= a
<<8;
2550 case GL_PRIMARY_COLOR
:
2552 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
2555 switch ((GLint
)(texUnit0
->CombineScaleShiftA
)) {
2557 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2560 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2563 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2569 if(texUnit0
->CombineModeA
==GL_ADD
) {
2570 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
2573 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
2575 vmesa
->regHTXnTBLRFog_0
= 0;
2576 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
| HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
;
2577 vmesa
->regHTXnTBLRAa_0
= 0x0 | ( 255<<16 );
2578 switch (texUnit0
->CombineOperandA
[0]) {
2580 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
2582 case GL_ONE_MINUS_SRC_ALPHA
:
2583 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
2586 switch (texUnit0
->CombineOperandA
[1]) {
2588 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_TOPA
;
2590 case GL_ONE_MINUS_SRC_ALPHA
:
2591 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_InvTOPA
;
2594 switch (texUnit0
->CombineSourceA
[0]) {
2596 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
2599 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2600 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
2601 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
2603 case GL_PRIMARY_COLOR
:
2605 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
2608 switch (texUnit0
->CombineSourceA
[1]) {
2610 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Atex
;
2613 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2614 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_HTXnTBLRA
;
2615 vmesa
->regHTXnTBLRAa_0
|= a
;
2617 case GL_PRIMARY_COLOR
:
2619 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Adif
;
2622 switch ((GLint
)(texUnit0
->CombineScaleShiftA
)) {
2624 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2627 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2630 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2634 case GL_ADD_SIGNED
:
2635 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
;
2636 vmesa
->regHTXnTBLRFog_0
= 0x0;
2637 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2638 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2639 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2640 vmesa
->regHTXnTBLRAa_0
= ( 255<<16 | 0<<8 |128 );
2641 switch (texUnit0
->CombineOperandA
[0]) {
2643 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
2645 case GL_ONE_MINUS_SRC_ALPHA
:
2646 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
2649 switch (texUnit0
->CombineOperandA
[1]) {
2652 case GL_ONE_MINUS_SRC_ALPHA
:
2653 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Inv
;
2656 switch (texUnit0
->CombineSourceA
[0]) {
2658 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
2661 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2662 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
2663 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
2665 case GL_PRIMARY_COLOR
:
2667 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
2670 switch (texUnit0
->CombineSourceA
[1]) {
2672 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Atex
;
2675 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2676 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_HTXnTBLRAbias
;
2677 vmesa
->regHTXnTBLRFog_0
|= a
;
2679 case GL_PRIMARY_COLOR
:
2681 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Adif
;
2684 switch ((GLint
)(texUnit0
->CombineScaleShiftA
)) {
2686 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2689 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2692 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2696 case GL_INTERPOLATE
:
2697 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
;
2698 vmesa
->regHTXnTBLRAa_0
= 0x0;
2699 vmesa
->regHTXnTBLRFog_0
= 0x0;
2700 switch (texUnit0
->CombineOperandA
[0]) {
2702 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAb_TOPA
;
2704 case GL_ONE_MINUS_SRC_ALPHA
:
2705 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAb_InvTOPA
;
2708 switch (texUnit0
->CombineOperandA
[1]) {
2710 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAc_TOPA
;
2712 case GL_ONE_MINUS_SRC_ALPHA
:
2713 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAc_InvTOPA
;
2714 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Inv
;
2717 switch (texUnit0
->CombineOperandA
[2]) {
2719 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAa_TOPA
;
2721 case GL_ONE_MINUS_SRC_ALPHA
:
2722 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAa_InvTOPA
;
2725 switch (texUnit0
->CombineSourceA
[0]) {
2727 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
2730 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2731 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
2732 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
2734 case GL_PRIMARY_COLOR
:
2736 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
2739 switch (texUnit0
->CombineSourceA
[1]) {
2741 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Atex
;
2742 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Atex
;
2745 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2746 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_HTXnTBLRA
;
2747 vmesa
->regHTXnTBLRAa_0
|= a
;
2748 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_HTXnTBLRAbias
;
2749 vmesa
->regHTXnTBLRFog_0
|= a
;
2751 case GL_PRIMARY_COLOR
:
2753 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Adif
;
2754 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Adif
;
2757 switch (texUnit0
->CombineSourceA
[2]) {
2759 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Atex
;
2762 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2763 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_HTXnTBLRA
;
2764 vmesa
->regHTXnTBLRAa_0
|= (a
<< 16);
2766 case GL_PRIMARY_COLOR
:
2768 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Adif
;
2771 switch (texUnit0
->CombineScaleShiftA
) {
2773 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2776 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2779 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2788 /*=* John Sheng [2003.7.18] texture add *=*/
2790 switch(texImage
->Format
) {
2792 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2793 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
2794 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
2795 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2796 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
2797 HC_HTXnTBLCshift_No
;
2798 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2799 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2800 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
2801 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2802 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2803 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2804 vmesa
->regHTXnTBLRAa_0
= 0x0;
2805 vmesa
->regHTXnTBLRFog_0
= 0x0;
2808 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2809 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2810 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2811 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2812 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2813 HC_HTXnTBLCshift_No
;
2814 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2815 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2816 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2817 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2818 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2819 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2820 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2821 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
2822 vmesa
->regHTXnTBLRAa_0
= 0x0;
2824 case GL_LUMINANCE_ALPHA
:
2825 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2826 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2827 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2828 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2829 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2830 HC_HTXnTBLCshift_No
;
2831 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2832 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2833 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2834 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
2835 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
2836 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2837 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2838 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2839 vmesa
->regHTXnTBLRAa_0
= 0x0;
2840 vmesa
->regHTXnTBLRFog_0
= 0x0;
2843 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2844 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2845 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2846 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2847 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2848 HC_HTXnTBLCshift_No
;
2849 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2850 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2851 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2852 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2853 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Atex
|
2854 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
2855 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2856 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2857 /*=* John Sheng [2003.7.18] texenv *=*/
2858 /*vmesa->regHTXnTBLRAa_0 = 0x0;*/
2859 vmesa
->regHTXnTBLRAa_0
= (255<<16) | (255<<8) | 255;;
2860 vmesa
->regHTXnTBLRFog_0
= 0x0 | 255<<16;
2863 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2864 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2865 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2866 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2867 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2868 HC_HTXnTBLCshift_No
;
2869 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2870 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2871 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2872 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2873 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2874 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2875 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2876 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
2877 vmesa
->regHTXnTBLRAa_0
= 0x0;
2880 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2881 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2882 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2883 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2884 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2885 HC_HTXnTBLCshift_No
;
2886 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2887 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2888 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2889 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
2890 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
2891 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2892 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2893 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2894 vmesa
->regHTXnTBLRAa_0
= 0x0;
2895 vmesa
->regHTXnTBLRFog_0
= 0x0;
2897 case GL_COLOR_INDEX
:
2898 switch(texObj
->Palette
.Format
) {
2900 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2901 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
2902 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
2903 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2904 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
2905 HC_HTXnTBLCshift_No
;
2906 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2907 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2908 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
2909 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2910 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2911 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2912 vmesa
->regHTXnTBLRAa_0
= 0x0;
2913 vmesa
->regHTXnTBLRFog_0
= 0x0;
2916 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2917 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2918 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2919 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2920 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2921 HC_HTXnTBLCshift_No
;
2922 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2923 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2924 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2925 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2926 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2927 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2928 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2929 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
2930 vmesa
->regHTXnTBLRAa_0
= 0x0;
2932 case GL_LUMINANCE_ALPHA
:
2933 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2934 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2935 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2936 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2937 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2938 HC_HTXnTBLCshift_No
;
2939 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2940 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2941 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2942 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
2943 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
2944 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2945 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2946 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2947 vmesa
->regHTXnTBLRAa_0
= 0x0;
2948 vmesa
->regHTXnTBLRFog_0
= 0x0;
2951 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2952 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2953 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2954 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2955 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2956 HC_HTXnTBLCshift_No
;
2957 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2958 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2959 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2960 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2961 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Atex
|
2962 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
2963 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2964 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2965 vmesa
->regHTXnTBLRAa_0
= 0x0;
2966 vmesa
->regHTXnTBLRFog_0
= 0x0 | 255<<16;
2969 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2970 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2971 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2972 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2973 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2974 HC_HTXnTBLCshift_No
;
2975 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2976 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2977 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2978 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2979 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2980 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2981 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2982 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
2983 vmesa
->regHTXnTBLRAa_0
= 0x0;
2986 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2987 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2988 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2989 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2990 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2991 HC_HTXnTBLCshift_No
;
2992 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2993 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2994 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2995 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
2996 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
2997 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2998 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2999 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3000 vmesa
->regHTXnTBLRAa_0
= 0x0;
3001 vmesa
->regHTXnTBLRFog_0
= 0x0;
3007 /*=* John Sheng [2003.7.18] texture dot3 *=*/
3010 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLDOT4
| HC_HTXnTBLCop_Add
|
3011 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3012 HC_HTXnTBLCshift_2
| HC_HTXnTBLAop_Add
|
3013 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3014 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
3015 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
3016 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3017 vmesa
->regHTXnTBLRFog_0
= 0x0;
3018 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
3019 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3020 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3021 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3022 vmesa
->regHTXnTBLRAa_0
= 0x0;
3023 switch (texUnit0
->CombineOperandRGB
[0]) {
3025 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
3027 case GL_ONE_MINUS_SRC_COLOR
:
3028 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
3031 switch (texUnit0
->CombineOperandRGB
[1]) {
3033 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
3035 case GL_ONE_MINUS_SRC_COLOR
:
3036 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
3039 switch (texUnit0
->CombineSourceRGB
[0]) {
3041 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
3044 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
3045 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
3046 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
3047 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
3048 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
3050 case GL_PRIMARY_COLOR
:
3052 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
3055 switch (texUnit0
->CombineSourceRGB
[1]) {
3057 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
3060 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
3061 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
3062 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
3063 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
3064 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
3066 case GL_PRIMARY_COLOR
:
3068 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
3077 /* Should turn Cs off if actually no Cs */
3080 if (texUnit1
->_ReallyEnabled
) {
3081 struct gl_texture_object
*texObj
= texUnit1
->_Current
;
3082 struct gl_texture_image
*texImage
= texObj
->Image
[0];
3085 if (texImage
->Border
) {
3086 FALLBACK(vmesa
, VIA_FALLBACK_TEXTURE
, GL_TRUE
);
3090 switch (texObj
->MinFilter
) {
3092 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Nearest
|
3093 HC_HTXnFLTs_Nearest
;
3096 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Linear
|
3099 case GL_NEAREST_MIPMAP_NEAREST
:
3100 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Nearest
|
3101 HC_HTXnFLTs_Nearest
;
3102 vmesa
->regHTXnTB_1
|= HC_HTXnFLDs_Nearest
;
3104 case GL_LINEAR_MIPMAP_NEAREST
:
3105 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Linear
|
3107 vmesa
->regHTXnTB_1
|= HC_HTXnFLDs_Nearest
;
3109 case GL_NEAREST_MIPMAP_LINEAR
:
3110 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Nearest
|
3111 HC_HTXnFLTs_Nearest
;
3112 vmesa
->regHTXnTB_1
|= HC_HTXnFLDs_Linear
;
3114 case GL_LINEAR_MIPMAP_LINEAR
:
3115 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Linear
|
3117 vmesa
->regHTXnTB_1
|= HC_HTXnFLDs_Linear
;
3123 switch(texObj
->MagFilter
) {
3125 vmesa
->regHTXnTB_1
|= HC_HTXnFLSs_Nearest
|
3126 HC_HTXnFLTs_Nearest
;
3129 vmesa
->regHTXnTB_1
|= HC_HTXnFLSs_Linear
|
3134 if (texObj
->WrapS
== GL_REPEAT
)
3135 vmesa
->regHTXnMPMD_1
= HC_HTXnMPMD_Srepeat
;
3137 vmesa
->regHTXnMPMD_1
= HC_HTXnMPMD_Sclamp
;
3140 if (texObj
->WrapT
== GL_REPEAT
)
3141 vmesa
->regHTXnMPMD_1
|= HC_HTXnMPMD_Trepeat
;
3143 vmesa
->regHTXnMPMD_1
|= HC_HTXnMPMD_Tclamp
;
3146 switch (texUnit1
->EnvMode
) {
3148 switch (texImage
->Format
) {
3150 /* C = Cf, A = At*Af
3152 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3154 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3155 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
3156 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3157 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3158 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3159 HC_HTXnTBLCshift_No
;
3160 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3162 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3164 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3165 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
| HC_HTXnTBLAb_TOPA
|
3166 HC_HTXnTBLAb_Acur
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3167 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3168 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3169 vmesa
->regHTXnTBLRAa_1
= 0x0;
3170 vmesa
->regHTXnTBLRFog_1
= 0x0;
3173 /* C = Lt*Cf, A = Af
3175 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3177 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3178 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3179 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3180 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3181 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3182 HC_HTXnTBLCshift_No
;
3183 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3185 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3187 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3188 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3189 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3190 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3191 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3192 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3193 vmesa
->regHTXnTBLRAa_1
= 0x0;
3195 case GL_LUMINANCE_ALPHA
:
3196 /* C = Lt*Cf, A = At*Af
3198 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3200 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3201 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3202 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3203 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3204 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3205 HC_HTXnTBLCshift_No
;
3206 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3208 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3210 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3211 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3212 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3213 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3214 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3215 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3216 vmesa
->regHTXnTBLRAa_1
= 0x0;
3217 vmesa
->regHTXnTBLRFog_1
= 0x0;
3220 /* C = It*Cf, A = It*Af
3222 * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3224 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3225 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3226 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3227 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3228 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3229 HC_HTXnTBLCshift_No
;
3230 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3232 * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3234 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3235 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3236 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3237 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3238 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3239 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3240 vmesa
->regHTXnTBLRAa_1
= 0x0;
3241 vmesa
->regHTXnTBLRFog_1
= 0x0;
3244 /* C = Ct*Cf, A = Af
3246 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3248 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3249 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3250 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3251 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3252 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3253 HC_HTXnTBLCshift_No
;
3254 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3256 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3258 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3259 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3260 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3261 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3262 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3263 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3264 vmesa
->regHTXnTBLRAa_1
= 0x0;
3267 /* C = Ct*Cf, A = At*Af
3269 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3271 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3272 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3273 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3274 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3275 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3276 HC_HTXnTBLCshift_No
;
3277 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3279 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3281 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3282 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3283 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3284 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3285 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3286 HC_HTXnTBLAbias_HTXnTBLRAbias
3287 | HC_HTXnTBLAshift_No
;
3289 vmesa
->regHTXnTBLRAa_1
= 0x0;
3290 vmesa
->regHTXnTBLRFog_1
= 0x0;
3292 case GL_COLOR_INDEX
:
3293 switch (texObj
->Palette
.Format
) {
3295 /* C = Cf, A = At*Af
3297 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3299 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3300 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
3301 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3302 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3303 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3304 HC_HTXnTBLCshift_No
;
3305 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3307 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3309 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3310 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
| HC_HTXnTBLAb_TOPA
|
3311 HC_HTXnTBLAb_Acur
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3312 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3313 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3314 vmesa
->regHTXnTBLRAa_1
= 0x0;
3315 vmesa
->regHTXnTBLRFog_1
= 0x0;
3318 /* C = Lt*Cf, A = Af
3320 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3322 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3323 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3324 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3325 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3326 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3327 HC_HTXnTBLCshift_No
;
3328 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3330 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3332 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3333 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3334 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3335 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3336 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3337 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3338 vmesa
->regHTXnTBLRAa_1
= 0x0;
3340 case GL_LUMINANCE_ALPHA
:
3341 /* C = Lt*Cf, A = At*Af
3343 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3345 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3346 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3347 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3348 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3349 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3350 HC_HTXnTBLCshift_No
;
3351 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3353 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3355 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3356 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3357 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3358 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3359 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3360 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3361 vmesa
->regHTXnTBLRAa_1
= 0x0;
3362 vmesa
->regHTXnTBLRFog_1
= 0x0;
3365 /* C = It*Cf, A = It*Af
3367 * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3369 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3370 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3371 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3372 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3373 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3374 HC_HTXnTBLCshift_No
;
3375 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3377 * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3379 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3380 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3381 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3382 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3383 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3384 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3385 vmesa
->regHTXnTBLRAa_1
= 0x0;
3386 vmesa
->regHTXnTBLRFog_1
= 0x0;
3389 /* C = Ct*Cf, A = Af
3391 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3393 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3394 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3395 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3396 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3397 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3398 HC_HTXnTBLCshift_No
;
3399 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3401 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3403 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3404 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3405 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3406 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3407 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3408 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3409 vmesa
->regHTXnTBLRAa_1
= 0x0;
3412 /* C = Ct*Cf, A = At*Af
3414 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3416 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3417 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3418 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3419 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3420 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3421 HC_HTXnTBLCshift_No
;
3422 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3424 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3426 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3427 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3428 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3429 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3430 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3431 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3432 vmesa
->regHTXnTBLRAa_1
= 0x0;
3433 vmesa
->regHTXnTBLRFog_1
= 0x0;
3440 switch (texImage
->Format
) {
3443 case GL_LUMINANCE_ALPHA
:
3451 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
3453 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3454 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3455 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3456 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3457 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3458 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3459 HC_HTXnTBLCshift_No
;
3460 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3462 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3464 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3465 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3466 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3467 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3468 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3469 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3470 vmesa
->regHTXnTBLRAa_1
= 0x0;
3473 /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf
3475 * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3477 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3478 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Atex
|
3479 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_Tex
|
3480 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3481 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3482 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3483 HC_HTXnTBLCshift_No
;
3484 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3486 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3488 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3489 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3490 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3491 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3492 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3493 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3494 vmesa
->regHTXnTBLRAa_1
= 0x0;
3496 case GL_COLOR_INDEX
:
3497 switch (texObj
->Palette
.Format
) {
3500 case GL_LUMINANCE_ALPHA
:
3508 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
3510 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3511 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3512 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3513 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3514 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3515 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3516 HC_HTXnTBLCshift_No
;
3517 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3519 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3521 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3522 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3523 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3524 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3525 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3526 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3527 vmesa
->regHTXnTBLRAa_1
= 0x0;
3530 /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf
3532 * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3534 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3535 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Atex
|
3536 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_Tex
|
3537 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3538 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3539 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3540 HC_HTXnTBLCshift_No
;
3541 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3543 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3545 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3546 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3547 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3548 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3549 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3550 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3551 vmesa
->regHTXnTBLRAa_1
= 0x0;
3558 switch (texImage
->Format
) {
3562 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3564 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3565 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3566 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3567 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3568 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3569 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3570 HC_HTXnTBLCshift_No
;
3571 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3573 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3575 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3576 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3577 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3578 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3579 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3580 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3581 vmesa
->regHTXnTBLRAa_1
= 0x0;
3584 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3585 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3586 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3587 /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf
3589 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3591 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3592 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3593 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3594 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3595 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3596 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3597 HC_HTXnTBLCshift_No
;
3598 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3599 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3601 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3603 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3604 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3605 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3606 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3607 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3608 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3609 vmesa
->regHTXnTBLRAa_1
= 0x0;
3611 case GL_LUMINANCE_ALPHA
:
3612 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3613 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3614 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3615 /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf
3617 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3619 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3620 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3621 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3622 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3623 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3624 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3625 HC_HTXnTBLCshift_No
;
3626 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3627 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3629 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3631 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3632 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3633 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3634 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3635 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3636 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3637 vmesa
->regHTXnTBLRAa_1
= 0x0;
3638 vmesa
->regHTXnTBLRFog_1
= 0x0;
3641 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3642 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3643 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3644 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3645 /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac
3646 * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af
3648 * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3650 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3651 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3652 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3653 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3654 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3655 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3656 HC_HTXnTBLCshift_No
;
3657 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3658 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3660 * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No.
3662 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3663 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3664 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3665 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Acur
;
3666 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Sub
|
3667 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3668 vmesa
->regHTXnTBLRAa_1
= (a
<< 8);
3671 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3672 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3673 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3674 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3675 /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf
3677 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3679 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3680 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3681 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3682 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3683 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3684 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3685 HC_HTXnTBLCshift_No
;
3686 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3687 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3689 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3691 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3692 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3693 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3694 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3695 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3696 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3697 vmesa
->regHTXnTBLRAa_1
= 0x0;
3700 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3701 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3702 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3703 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3704 /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf
3706 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3708 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3709 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3710 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3711 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3712 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3713 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3714 HC_HTXnTBLCshift_No
;
3715 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3716 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3718 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3720 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3721 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3722 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3723 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3724 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3725 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3726 vmesa
->regHTXnTBLRAa_1
= 0x0;
3727 vmesa
->regHTXnTBLRFog_1
= 0x0;
3729 case GL_COLOR_INDEX
:
3730 switch (texObj
->Palette
.Format
) {
3734 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3736 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3737 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3738 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3739 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3740 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3741 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3742 HC_HTXnTBLCshift_No
;
3743 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3745 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3747 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3748 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3749 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3750 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3751 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3752 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3753 vmesa
->regHTXnTBLRAa_1
= 0x0;
3756 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3757 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3758 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3759 /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf
3761 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3763 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3764 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3765 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3766 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3767 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3768 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3769 HC_HTXnTBLCshift_No
;
3770 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3771 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3773 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3775 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3776 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3777 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3778 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3779 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3780 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3781 vmesa
->regHTXnTBLRAa_1
= 0x0;
3783 case GL_LUMINANCE_ALPHA
:
3784 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3785 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3786 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3787 /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf
3789 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3791 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3792 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3793 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3794 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3795 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3796 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3797 HC_HTXnTBLCshift_No
;
3798 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3799 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3801 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3803 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3804 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3805 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3806 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3807 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3808 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3809 vmesa
->regHTXnTBLRAa_1
= 0x0;
3810 vmesa
->regHTXnTBLRFog_1
= 0x0;
3813 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3814 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3815 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3816 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3817 /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac
3818 * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af
3820 * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3822 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3823 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3824 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3825 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3826 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3827 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3828 HC_HTXnTBLCshift_No
;
3829 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3830 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3832 * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No.
3834 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3835 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3836 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3837 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Acur
;
3838 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Sub
|
3839 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3840 vmesa
->regHTXnTBLRAa_1
= (a
<< 8);
3843 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3844 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3845 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3846 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3847 /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf
3849 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3851 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3852 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3853 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3854 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3855 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3856 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3857 HC_HTXnTBLCshift_No
;
3858 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3859 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3861 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3863 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3864 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3865 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3866 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3867 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3868 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3869 vmesa
->regHTXnTBLRAa_1
= 0x0;
3872 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3873 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3874 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3875 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3876 /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf
3878 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3880 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3881 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3882 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3883 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3884 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3885 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3886 HC_HTXnTBLCshift_No
;
3887 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3888 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3890 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3892 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3893 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3894 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3895 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3896 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3897 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3898 vmesa
->regHTXnTBLRAa_1
= 0x0;
3899 vmesa
->regHTXnTBLRFog_1
= 0x0;
3906 switch (texImage
->Format
) {
3910 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3912 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3913 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3914 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3915 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3916 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3917 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3918 HC_HTXnTBLCshift_No
;
3919 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3921 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
3923 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3924 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3925 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3926 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3927 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3928 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
3929 vmesa
->regHTXnTBLRAa_1
= 0x0;
3934 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
3936 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3937 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3938 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3939 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3940 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3941 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3942 HC_HTXnTBLCshift_No
;
3943 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3945 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3947 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3948 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3949 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3950 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3951 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3952 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3953 vmesa
->regHTXnTBLRAa_1
= 0x0;
3955 case GL_LUMINANCE_ALPHA
:
3958 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
3960 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3961 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3962 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3963 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3964 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3965 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3966 HC_HTXnTBLCshift_No
;
3967 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3969 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
3971 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3972 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3973 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3974 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3975 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3976 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
3977 vmesa
->regHTXnTBLRAa_1
= 0x0;
3982 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No.
3984 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3985 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3986 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3987 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3988 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3989 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3990 HC_HTXnTBLCshift_No
;
3991 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3993 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No.
3995 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3996 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3997 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3998 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3999 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4000 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4001 vmesa
->regHTXnTBLRAa_1
= 0x0;
4006 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
4008 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4009 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4010 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4011 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4012 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4013 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4014 HC_HTXnTBLCshift_No
;
4015 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4017 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
4019 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4020 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4021 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4022 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4023 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4024 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
4025 vmesa
->regHTXnTBLRAa_1
= 0x0;
4030 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
4032 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4033 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4034 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4035 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4036 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4037 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4038 HC_HTXnTBLCshift_No
;
4039 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4041 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
4043 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4044 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4045 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4046 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4047 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4048 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4049 vmesa
->regHTXnTBLRAa_1
= 0x0;
4051 case GL_COLOR_INDEX
:
4052 switch (texObj
->Palette
.Format
) {
4056 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
4058 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4059 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4060 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4061 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4062 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4063 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
4064 HC_HTXnTBLCshift_No
;
4065 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4067 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
4069 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4070 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4071 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4072 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4073 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4074 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4075 vmesa
->regHTXnTBLRAa_1
= 0x0;
4080 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
4082 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4083 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4084 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4085 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4086 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4087 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4088 HC_HTXnTBLCshift_No
;
4089 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4091 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
4093 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4094 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4095 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4096 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4097 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4098 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
4099 vmesa
->regHTXnTBLRAa_1
= 0x0;
4101 case GL_LUMINANCE_ALPHA
:
4104 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
4106 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4107 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4108 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4109 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4110 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4111 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4112 HC_HTXnTBLCshift_No
;
4113 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4115 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
4117 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4118 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4119 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4120 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4121 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4122 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4123 vmesa
->regHTXnTBLRAa_1
= 0x0;
4128 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No.
4130 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4131 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4132 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4133 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4134 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4135 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4136 HC_HTXnTBLCshift_No
;
4137 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4139 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No.
4141 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4142 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4143 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4144 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4145 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4146 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4147 vmesa
->regHTXnTBLRAa_1
= 0x0;
4152 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
4154 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4155 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4156 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4157 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4158 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4159 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4160 HC_HTXnTBLCshift_No
;
4161 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4163 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
4165 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4166 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4167 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4168 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4169 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4170 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
4171 vmesa
->regHTXnTBLRAa_1
= 0x0;
4176 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
4178 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4179 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4180 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4181 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4182 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4183 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4184 HC_HTXnTBLCshift_No
;
4185 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4187 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
4189 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4190 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4191 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4192 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4193 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4194 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4195 vmesa
->regHTXnTBLRAa_1
= 0x0;
4201 /*=* John Sheng [2003.7.18] texture combine *=*/
4203 switch (texUnit1
->CombineModeRGB
) {
4205 switch (texUnit1
->CombineSourceRGB
[0]) {
4207 switch (texUnit1
->CombineOperandRGB
[0]) {
4209 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4210 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4211 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4212 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4213 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4214 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
;
4215 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4217 case GL_ONE_MINUS_SRC_COLOR
:
4218 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4219 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4220 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4221 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4222 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4223 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Tex
;
4224 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4227 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4228 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4229 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4230 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4231 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4232 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Atex
;
4233 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4235 case GL_ONE_MINUS_SRC_ALPHA
:
4236 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4237 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4238 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4239 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4240 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4241 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Atex
;
4242 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4247 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4248 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4249 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4250 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4251 switch (texUnit1
->CombineOperandRGB
[0]) {
4253 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4254 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4255 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4256 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4257 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4258 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
4260 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4261 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4263 case GL_ONE_MINUS_SRC_COLOR
:
4264 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4265 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4266 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4267 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4268 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4269 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
4270 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4271 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4274 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4275 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4276 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4277 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4278 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4279 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
4280 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4281 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4283 case GL_ONE_MINUS_SRC_ALPHA
:
4284 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4285 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4286 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4287 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4288 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4289 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
4290 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4291 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4295 case GL_PRIMARY_COLOR
:
4296 switch (texUnit1
->CombineOperandRGB
[0]) {
4298 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4299 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4300 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4301 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4302 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4303 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
;
4304 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4306 case GL_ONE_MINUS_SRC_COLOR
:
4307 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4308 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4309 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4310 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4311 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4312 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Dif
;
4313 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4316 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4317 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4318 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4319 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4320 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4321 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Adif
;
4322 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4324 case GL_ONE_MINUS_SRC_ALPHA
:
4325 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4326 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4327 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4328 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4329 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4330 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Adif
;
4331 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4336 switch (texUnit1
->CombineOperandRGB
[0]) {
4338 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4339 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4340 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4341 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4342 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4343 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
;
4344 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4346 case GL_ONE_MINUS_SRC_COLOR
:
4347 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4348 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4349 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4350 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4351 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4352 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Dif
;
4353 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4356 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4357 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4358 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4359 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4360 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4361 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Adif
;
4362 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4364 case GL_ONE_MINUS_SRC_ALPHA
:
4365 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4366 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4367 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4368 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4369 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4370 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Adif
;
4371 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4376 switch ((GLint
)(texUnit1
->CombineScaleShiftRGB
)) {
4378 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4381 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4384 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4390 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4391 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
4392 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4393 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4394 switch (texUnit1
->CombineOperandRGB
[0]) {
4396 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
4399 case GL_ONE_MINUS_SRC_COLOR
:
4400 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
4404 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
4407 case GL_ONE_MINUS_SRC_ALPHA
:
4408 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
4412 switch (texUnit1
->CombineOperandRGB
[1]) {
4414 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4417 case GL_ONE_MINUS_SRC_COLOR
:
4418 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4422 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4425 case GL_ONE_MINUS_SRC_ALPHA
:
4426 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4430 switch (texUnit1
->CombineSourceRGB
[0]) {
4432 if (AlphaCombine
[0]==0) {
4433 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
4436 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Atex
;
4440 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4441 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4442 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4443 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4444 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
4445 if (AlphaCombine
[0]==0) {
4446 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
4449 vmesa
->regHTXnTBLRCa_0
= (a
<< 16) | (a
<< 8) | a
;
4452 case GL_PRIMARY_COLOR
:
4453 if (AlphaCombine
[0]==0) {
4454 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
4457 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
4461 if (AlphaCombine
[0]==0) {
4462 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
4465 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
4469 switch (texUnit1
->CombineSourceRGB
[1]) {
4471 if (AlphaCombine
[1]==0) {
4472 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4475 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
4479 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4480 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4481 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4482 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4483 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
4484 if (AlphaCombine
[1]==0) {
4485 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4488 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4491 case GL_PRIMARY_COLOR
:
4492 if (AlphaCombine
[1]==0) {
4493 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4496 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4500 if (AlphaCombine
[1]==0) {
4501 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4504 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4508 switch ((GLint
)(texUnit1
->CombineScaleShiftRGB
)) {
4510 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4513 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4516 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4522 if (texUnit1
->CombineModeRGB
==GL_ADD
) {
4523 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4524 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
4527 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
4528 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
4530 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4531 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
| HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
;
4532 vmesa
->regHTXnTBLRCa_0
= ( 255<<16 | 255<<8 |255 );
4533 switch (texUnit1
->CombineOperandRGB
[0]) {
4535 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4538 case GL_ONE_MINUS_SRC_COLOR
:
4539 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4543 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4546 case GL_ONE_MINUS_SRC_ALPHA
:
4547 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4551 switch (texUnit1
->CombineOperandRGB
[1]) {
4553 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_TOPC
;
4556 case GL_ONE_MINUS_SRC_COLOR
:
4557 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_InvTOPC
;
4561 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_TOPC
;
4564 case GL_ONE_MINUS_SRC_ALPHA
:
4565 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_InvTOPC
;
4569 switch (texUnit1
->CombineSourceRGB
[0]) {
4571 if (AlphaCombine
[0]==0) {
4572 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4575 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
4579 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4580 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4581 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4582 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4583 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
4584 if (AlphaCombine
[0]==0) {
4585 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4588 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4591 case GL_PRIMARY_COLOR
:
4593 if (AlphaCombine
[0]==0) {
4594 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4597 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4601 switch (texUnit1
->CombineSourceRGB
[1]) {
4603 if (AlphaCombine
[1]==0) {
4604 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Tex
;
4607 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Atex
;
4611 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4612 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4613 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4614 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4615 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_HTXnTBLRC
;
4616 if (AlphaCombine
[1]==0) {
4617 vmesa
->regHTXnTBLRCc_0
= (r
<< 16) | (g
<< 8) | b
;
4620 vmesa
->regHTXnTBLRCc_0
= (a
<< 16) | (a
<< 8) | a
;
4623 case GL_PRIMARY_COLOR
:
4625 if (AlphaCombine
[1]==0) {
4626 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Dif
;
4629 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Adif
;
4633 switch ((GLint
)(texUnit1
->CombineScaleShiftRGB
)) {
4635 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4638 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4641 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4645 case GL_ADD_SIGNED
:
4646 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
;
4647 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4648 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4649 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
|
4650 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_HTXnTBLRC
;
4651 vmesa
->regHTXnTBLRCa_0
= ( 255<<16 | 255<<8 |255 );
4652 vmesa
->regHTXnTBLRCc_0
= ( 128<<16 | 128<<8 |128 );
4653 switch (texUnit1
->CombineOperandRGB
[0]) {
4655 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4658 case GL_ONE_MINUS_SRC_COLOR
:
4659 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4663 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4666 case GL_ONE_MINUS_SRC_ALPHA
:
4667 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4671 switch (texUnit1
->CombineOperandRGB
[1]) {
4673 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
4676 case GL_ONE_MINUS_SRC_COLOR
:
4677 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
4681 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
4684 case GL_ONE_MINUS_SRC_ALPHA
:
4685 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
4689 switch (texUnit1
->CombineSourceRGB
[0]) {
4691 if (AlphaCombine
[0]==0) {
4692 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4695 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
4699 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4700 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4701 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4702 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4703 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
4704 if (AlphaCombine
[0]==0) {
4705 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4708 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4711 case GL_PRIMARY_COLOR
:
4713 if (AlphaCombine
[0]==0) {
4714 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4717 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4721 switch (texUnit1
->CombineSourceRGB
[1]) {
4723 if (AlphaCombine
[1]==0) {
4724 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Tex
;
4727 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Atex
;
4731 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4732 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4733 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4734 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4735 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_HTXnTBLRC
;
4736 if (AlphaCombine
[1]==0) {
4737 vmesa
->regHTXnTBLRCbias_0
= (r
<< 16) | (g
<< 8) | b
;
4740 vmesa
->regHTXnTBLRCbias_0
= (a
<< 16) | (a
<< 8) | a
;
4743 case GL_PRIMARY_COLOR
:
4745 if (AlphaCombine
[1]==0) {
4746 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Dif
;
4749 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Adif
;
4753 switch ((GLint
)(texUnit1
->CombineScaleShiftRGB
)) {
4755 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4758 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4761 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4765 case GL_INTERPOLATE
:
4766 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
;
4767 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4768 switch (texUnit1
->CombineOperandRGB
[0]) {
4770 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_TOPC
;
4773 case GL_ONE_MINUS_SRC_COLOR
:
4774 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_InvTOPC
;
4778 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_TOPC
;
4781 case GL_ONE_MINUS_SRC_ALPHA
:
4782 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_InvTOPC
;
4786 switch (texUnit1
->CombineOperandRGB
[1]) {
4788 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_TOPC
;
4789 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
4792 case GL_ONE_MINUS_SRC_COLOR
:
4793 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_InvTOPC
;
4794 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
4798 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_TOPC
;
4799 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
4802 case GL_ONE_MINUS_SRC_ALPHA
:
4803 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_InvTOPC
;
4804 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
4808 switch (texUnit1
->CombineOperandRGB
[2]) {
4810 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_TOPC
;
4813 case GL_ONE_MINUS_SRC_COLOR
:
4814 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_InvTOPC
;
4818 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_TOPC
;
4821 case GL_ONE_MINUS_SRC_ALPHA
:
4822 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_InvTOPC
;
4826 switch (texUnit1
->CombineSourceRGB
[0]) {
4828 if (AlphaCombine
[0]==0) {
4829 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4832 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
4836 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4837 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4838 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4839 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4840 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
4841 if (AlphaCombine
[0]==0) {
4842 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4845 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4848 case GL_PRIMARY_COLOR
:
4850 if (AlphaCombine
[0]==0) {
4851 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4854 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4858 switch (texUnit1
->CombineSourceRGB
[1]) {
4860 if (AlphaCombine
[0]==0) {
4861 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Tex
;
4862 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Tex
;
4865 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Atex
;
4866 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Atex
;
4870 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4871 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4872 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4873 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4874 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_HTXnTBLRC
;
4875 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_HTXnTBLRC
;
4876 if (AlphaCombine
[0]==0) {
4877 vmesa
->regHTXnTBLRCc_0
= (r
<< 16) | (g
<< 8) | b
;
4878 vmesa
->regHTXnTBLRCbias_0
= (r
<< 16) | (g
<< 8) | b
;
4881 vmesa
->regHTXnTBLRCc_0
= (a
<< 16) | (a
<< 8) | a
;
4882 vmesa
->regHTXnTBLRCbias_0
= (a
<< 16) | (a
<< 8) | a
;
4885 case GL_PRIMARY_COLOR
:
4887 if (AlphaCombine
[0]==0) {
4888 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Dif
;
4889 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Dif
;
4892 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Adif
;
4893 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Adif
;
4897 switch (texUnit1
->CombineSourceRGB
[2]) {
4899 if (AlphaCombine
[0]==0) {
4900 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
4903 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Atex
;
4907 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4908 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4909 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4910 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4911 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
4912 if (AlphaCombine
[0]==0) {
4913 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
4916 vmesa
->regHTXnTBLRCa_0
= (a
<< 16) | (a
<< 8) | a
;
4919 case GL_PRIMARY_COLOR
:
4921 if (AlphaCombine
[0]==0) {
4922 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
4925 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
4929 switch ((GLint
)(texUnit1
->CombineScaleShiftRGB
)) {
4931 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4934 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4937 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4944 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLDOT4
| HC_HTXnTBLCop_Add
|
4945 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
4946 HC_HTXnTBLCshift_2
| HC_HTXnTBLAop_Add
|
4947 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
4948 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4949 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4950 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4951 vmesa
->regHTXnTBLRFog_0
= 0x0;
4952 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
4953 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4954 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4955 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4956 vmesa
->regHTXnTBLRAa_0
= 0x0;
4957 switch (texUnit1
->CombineOperandRGB
[0]) {
4959 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
4961 case GL_ONE_MINUS_SRC_COLOR
:
4962 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
4965 switch (texUnit1
->CombineOperandRGB
[1]) {
4967 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4969 case GL_ONE_MINUS_SRC_COLOR
:
4970 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4973 switch (texUnit1
->CombineSourceRGB
[0]) {
4975 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
4978 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4979 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4980 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4981 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
4982 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
4984 case GL_PRIMARY_COLOR
:
4986 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
4989 switch (texUnit1
->CombineSourceRGB
[1]) {
4991 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4994 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4995 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4996 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4997 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
4998 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
5000 case GL_PRIMARY_COLOR
:
5002 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
5008 switch (texUnit1
->CombineModeA
) {
5010 switch (texUnit1
->CombineSourceA
[0]) {
5012 switch (texUnit1
->CombineOperandA
[0]) {
5014 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5015 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5016 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5017 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5018 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5019 HC_HTXnTBLAbias_Atex
;
5020 vmesa
->regHTXnTBLRAa_0
= 0x0;
5022 case GL_ONE_MINUS_SRC_ALPHA
:
5023 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5024 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5025 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5026 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5027 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5028 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_Atex
;
5029 vmesa
->regHTXnTBLRAa_0
= 0x0;
5034 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5035 switch (texUnit1
->CombineOperandA
[0]) {
5037 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5038 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5039 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5040 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5041 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5042 HC_HTXnTBLAbias_HTXnTBLRAbias
;
5043 vmesa
->regHTXnTBLRAa_0
= 0x0;
5044 vmesa
->regHTXnTBLRFog_0
= a
;
5046 case GL_ONE_MINUS_SRC_ALPHA
:
5047 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5048 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5049 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5050 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5051 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5052 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
5053 vmesa
->regHTXnTBLRAa_0
= 0x0;
5054 vmesa
->regHTXnTBLRFog_0
= a
;
5058 case GL_PRIMARY_COLOR
:
5060 switch (texUnit1
->CombineOperandA
[0]) {
5062 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5063 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5064 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5065 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5066 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5067 HC_HTXnTBLAbias_Adif
;
5068 vmesa
->regHTXnTBLRAa_0
= 0x0;
5070 case GL_ONE_MINUS_SRC_ALPHA
:
5071 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5072 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5073 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5074 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5075 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5076 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_Adif
;
5077 vmesa
->regHTXnTBLRAa_0
= 0x0;
5082 switch ((GLint
)(texUnit1
->CombineScaleShiftA
)) {
5084 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5087 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5090 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5095 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5096 HC_HTXnTBLAbias_HTXnTBLRAbias
;
5097 vmesa
->regHTXnTBLRFog_0
= 0x0;
5098 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5099 vmesa
->regHTXnTBLRAa_0
= 0x0;
5100 switch (texUnit1
->CombineOperandA
[0]) {
5102 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_TOPA
;
5104 case GL_ONE_MINUS_SRC_ALPHA
:
5105 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_InvTOPA
;
5108 switch (texUnit1
->CombineOperandA
[1]) {
5110 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
5112 case GL_ONE_MINUS_SRC_ALPHA
:
5113 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
5116 switch (texUnit1
->CombineSourceA
[0]) {
5118 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Atex
;
5121 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5122 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_HTXnTBLRA
;
5123 vmesa
->regHTXnTBLRAa_0
|= a
<<16;
5125 case GL_PRIMARY_COLOR
:
5127 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Adif
;
5130 switch (texUnit1
->CombineSourceA
[1]) {
5132 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
5135 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5136 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
5137 vmesa
->regHTXnTBLRAa_0
|= a
<<8;
5139 case GL_PRIMARY_COLOR
:
5141 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
5144 switch ((GLint
)(texUnit1
->CombineScaleShiftA
)) {
5146 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5149 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5152 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5158 if(texUnit1
->CombineModeA
==GL_ADD
) {
5159 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
5162 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
5164 vmesa
->regHTXnTBLRFog_0
= 0;
5165 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
| HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
;
5166 vmesa
->regHTXnTBLRAa_0
= 0x0 | ( 255<<16 );
5167 switch (texUnit1
->CombineOperandA
[0]) {
5169 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
5171 case GL_ONE_MINUS_SRC_ALPHA
:
5172 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
5175 switch (texUnit1
->CombineOperandA
[1]) {
5177 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_TOPA
;
5179 case GL_ONE_MINUS_SRC_ALPHA
:
5180 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_InvTOPA
;
5183 switch (texUnit1
->CombineSourceA
[0]) {
5185 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
5188 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5189 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
5190 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
5192 case GL_PRIMARY_COLOR
:
5194 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
5197 switch (texUnit1
->CombineSourceA
[1]) {
5199 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Atex
;
5202 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5203 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_HTXnTBLRA
;
5204 vmesa
->regHTXnTBLRAa_0
|= a
;
5206 case GL_PRIMARY_COLOR
:
5208 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Adif
;
5211 switch ((GLint
)(texUnit1
->CombineScaleShiftA
)) {
5213 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5216 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5219 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5223 case GL_ADD_SIGNED
:
5224 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
;
5225 vmesa
->regHTXnTBLRFog_0
= 0x0;
5226 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5227 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5228 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5229 vmesa
->regHTXnTBLRAa_0
= ( 255<<16 | 0<<8 |128 );
5230 switch (texUnit1
->CombineOperandA
[0]) {
5232 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
5234 case GL_ONE_MINUS_SRC_ALPHA
:
5235 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
5238 switch (texUnit1
->CombineOperandA
[1]) {
5241 case GL_ONE_MINUS_SRC_ALPHA
:
5242 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Inv
;
5245 switch (texUnit1
->CombineSourceA
[0]) {
5247 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
5250 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5251 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
5252 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
5254 case GL_PRIMARY_COLOR
:
5256 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
5259 switch (texUnit1
->CombineSourceA
[1]) {
5261 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Atex
;
5264 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5265 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_HTXnTBLRAbias
;
5266 vmesa
->regHTXnTBLRFog_0
|= a
;
5268 case GL_PRIMARY_COLOR
:
5270 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Adif
;
5273 switch ((GLint
)(texUnit1
->CombineScaleShiftA
)) {
5275 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5278 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5281 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5285 case GL_INTERPOLATE
:
5286 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
;
5287 vmesa
->regHTXnTBLRAa_0
= 0x0;
5288 vmesa
->regHTXnTBLRFog_0
= 0x0;
5289 switch (texUnit1
->CombineOperandA
[0]) {
5291 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAb_TOPA
;
5293 case GL_ONE_MINUS_SRC_ALPHA
:
5294 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAb_InvTOPA
;
5297 switch (texUnit1
->CombineOperandA
[1]) {
5299 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAc_TOPA
;
5301 case GL_ONE_MINUS_SRC_ALPHA
:
5302 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAc_InvTOPA
;
5303 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Inv
;
5306 switch (texUnit1
->CombineOperandA
[2]) {
5308 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAa_TOPA
;
5310 case GL_ONE_MINUS_SRC_ALPHA
:
5311 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAa_InvTOPA
;
5314 switch (texUnit1
->CombineSourceA
[0]) {
5316 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
5319 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5320 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
5321 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
5323 case GL_PRIMARY_COLOR
:
5325 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
5328 switch (texUnit1
->CombineSourceA
[1]) {
5330 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Atex
;
5331 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Atex
;
5334 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5335 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_HTXnTBLRA
;
5336 vmesa
->regHTXnTBLRAa_0
|= a
;
5337 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_HTXnTBLRAbias
;
5338 vmesa
->regHTXnTBLRFog_0
|= a
;
5340 case GL_PRIMARY_COLOR
:
5342 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Adif
;
5343 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Adif
;
5346 switch (texUnit1
->CombineSourceA
[2]) {
5348 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Atex
;
5351 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5352 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_HTXnTBLRA
;
5353 vmesa
->regHTXnTBLRAa_0
|= (a
<< 16);
5355 case GL_PRIMARY_COLOR
:
5357 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Adif
;
5360 switch (texUnit1
->CombineScaleShiftA
) {
5362 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5365 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5368 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5378 /*=* John Sheng [2003.7.18] texture add *=*/
5380 switch(texImage
->Format
) {
5382 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5383 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
5384 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
5385 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5386 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
5387 HC_HTXnTBLCshift_No
;
5388 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5389 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5390 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
5391 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5392 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5393 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5394 vmesa
->regHTXnTBLRAa_0
= 0x0;
5395 vmesa
->regHTXnTBLRFog_0
= 0x0;
5398 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5399 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5400 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5401 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5402 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5403 HC_HTXnTBLCshift_No
;
5404 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5405 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5406 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5407 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5408 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5409 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5410 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5411 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
5412 vmesa
->regHTXnTBLRAa_0
= 0x0;
5414 case GL_LUMINANCE_ALPHA
:
5415 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5416 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5417 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5418 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5419 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5420 HC_HTXnTBLCshift_No
;
5421 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5422 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5423 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5424 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
5425 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
5426 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5427 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5428 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5429 vmesa
->regHTXnTBLRAa_0
= 0x0;
5430 vmesa
->regHTXnTBLRFog_0
= 0x0;
5433 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5434 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5435 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5436 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5437 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5438 HC_HTXnTBLCshift_No
;
5439 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5440 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5441 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5442 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5443 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Atex
|
5444 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
5445 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5446 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5447 /*=* John Sheng [2003.7.18] texenv *=*/
5448 /*vmesa->regHTXnTBLRAa_0 = 0x0;*/
5449 vmesa
->regHTXnTBLRAa_0
= (255<<16) | (255<<8) | 255;;
5450 vmesa
->regHTXnTBLRFog_0
= 0x0 | 255<<16;
5453 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5454 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5455 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5456 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5457 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5458 HC_HTXnTBLCshift_No
;
5459 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5460 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5461 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5462 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5463 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5464 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5465 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5466 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
5467 vmesa
->regHTXnTBLRAa_0
= 0x0;
5470 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5471 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5472 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5473 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5474 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5475 HC_HTXnTBLCshift_No
;
5476 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5477 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5478 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5479 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
5480 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
5481 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5482 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5483 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5484 vmesa
->regHTXnTBLRAa_0
= 0x0;
5485 vmesa
->regHTXnTBLRFog_0
= 0x0;
5487 case GL_COLOR_INDEX
:
5488 switch(texObj
->Palette
.Format
) {
5490 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5491 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
5492 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
5493 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5494 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
5495 HC_HTXnTBLCshift_No
;
5496 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5497 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5498 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
5499 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5500 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5501 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5502 vmesa
->regHTXnTBLRAa_0
= 0x0;
5503 vmesa
->regHTXnTBLRFog_0
= 0x0;
5506 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5507 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5508 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5509 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5510 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5511 HC_HTXnTBLCshift_No
;
5512 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5513 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5514 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5515 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5516 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5517 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5518 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5519 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
5520 vmesa
->regHTXnTBLRAa_0
= 0x0;
5522 case GL_LUMINANCE_ALPHA
:
5523 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5524 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5525 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5526 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5527 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5528 HC_HTXnTBLCshift_No
;
5529 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5530 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5531 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5532 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
5533 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
5534 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5535 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5536 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5537 vmesa
->regHTXnTBLRAa_0
= 0x0;
5538 vmesa
->regHTXnTBLRFog_0
= 0x0;
5541 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5542 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5543 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5544 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5545 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5546 HC_HTXnTBLCshift_No
;
5547 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5548 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5549 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5550 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5551 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Atex
|
5552 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
5553 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5554 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5555 vmesa
->regHTXnTBLRAa_0
= 0x0;
5556 vmesa
->regHTXnTBLRFog_0
= 0x0 | 255<<16;
5559 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5560 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5561 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5562 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5563 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5564 HC_HTXnTBLCshift_No
;
5565 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5566 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5567 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5568 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5569 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5570 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5571 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5572 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
5573 vmesa
->regHTXnTBLRAa_0
= 0x0;
5576 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5577 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5578 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5579 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5580 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5581 HC_HTXnTBLCshift_No
;
5582 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5583 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5584 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5585 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
5586 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
5587 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5588 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5589 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5590 vmesa
->regHTXnTBLRAa_0
= 0x0;
5591 vmesa
->regHTXnTBLRFog_0
= 0x0;
5597 /*=* John Sheng [2003.7.18] texture dot3 *=*/
5600 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLDOT4
| HC_HTXnTBLCop_Add
|
5601 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5602 HC_HTXnTBLCshift_2
| HC_HTXnTBLAop_Add
|
5603 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5604 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5605 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5606 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
5607 vmesa
->regHTXnTBLRFog_0
= 0x0;
5608 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5609 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5610 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5611 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5612 vmesa
->regHTXnTBLRAa_0
= 0x0;
5613 switch (texUnit1
->CombineOperandRGB
[0]) {
5615 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
5617 case GL_ONE_MINUS_SRC_COLOR
:
5618 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
5621 switch (texUnit1
->CombineOperandRGB
[1]) {
5623 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
5625 case GL_ONE_MINUS_SRC_COLOR
:
5626 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
5629 switch (texUnit1
->CombineSourceRGB
[0]) {
5631 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
5634 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
5635 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
5636 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
5637 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
5638 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
5640 case GL_PRIMARY_COLOR
:
5642 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
5645 switch (texUnit1
->CombineSourceRGB
[1]) {
5647 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
5650 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
5651 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
5652 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
5653 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
5654 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
5656 case GL_PRIMARY_COLOR
:
5658 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
5666 vmesa
->dirty
|= VIA_UPLOAD_TEXTURE
;
5669 if (ctx
->Fog
.Enabled
)
5670 vmesa
->regCmdB
&= (~(HC_HVPMSK_S
| HC_HVPMSK_T
));
5672 vmesa
->regCmdB
&= (~(HC_HVPMSK_S
| HC_HVPMSK_T
| HC_HVPMSK_W
));
5673 vmesa
->regEnable
&= (~(HC_HenTXMP_MASK
| HC_HenTXCH_MASK
| HC_HenTXPP_MASK
));
5674 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5677 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
5682 void viaChooseColorState(GLcontext
*ctx
)
5684 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
5685 GLenum s
= ctx
->Color
.BlendSrcRGB
;
5686 GLenum d
= ctx
->Color
.BlendDstRGB
;
5688 /* The HW's blending equation is:
5689 * (Ca * FCa + Cbias + Cb * FCb) << Cshift
5692 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
5695 if (ctx
->Color
.BlendEnabled
) {
5696 vmesa
->regEnable
|= HC_HenABL_MASK
;
5697 /* Ca -- always from source color.
5699 vmesa
->regHABLCsat
= HC_HABLCsat_MASK
| HC_HABLCa_OPC
|
5701 /* Aa -- always from source alpha.
5703 vmesa
->regHABLAsat
= HC_HABLAsat_MASK
| HC_HABLAa_OPA
|
5705 /* FCa -- depend on following condition.
5706 * FAa -- depend on following condition.
5712 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_HABLRCa
;
5713 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_HABLFRA
;
5714 vmesa
->regHABLRFCa
= 0x0;
5715 vmesa
->regHABLRAa
= 0x0;
5720 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_HABLRCa
;
5721 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_HABLFRA
;
5722 vmesa
->regHABLRFCa
= 0x0;
5723 vmesa
->regHABLRAa
= 0x0;
5728 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_Csrc
;
5729 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_Asrc
;
5731 case GL_ONE_MINUS_SRC_COLOR
:
5732 /* (1, 1, 1, 1) - (Rs, Gs, Bs, As)
5734 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_Csrc
;
5735 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_Asrc
;
5740 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_Cdst
;
5741 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_Adst
;
5743 case GL_ONE_MINUS_DST_COLOR
:
5744 /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad)
5746 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_Cdst
;
5747 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_Adst
;
5752 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_Asrc
;
5753 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_Asrc
;
5755 case GL_ONE_MINUS_SRC_ALPHA
:
5756 /* (1, 1, 1, 1) - (As, As, As, As)
5758 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_Asrc
;
5759 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_Asrc
;
5763 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5766 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_HABLRCa
;
5767 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_HABLFRA
;
5768 vmesa
->regHABLRFCa
= 0x0;
5769 vmesa
->regHABLRAa
= 0x0;
5774 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_Adst
;
5775 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_Adst
;
5779 case GL_ONE_MINUS_DST_ALPHA
:
5781 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5782 /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0)
5784 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_HABLRCa
;
5785 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_HABLFRA
;
5786 vmesa
->regHABLRFCa
= 0x0;
5787 vmesa
->regHABLRAa
= 0x0;
5790 /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad)
5792 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_Adst
;
5793 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_Adst
;
5797 case GL_SRC_ALPHA_SATURATE
:
5799 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5800 /* (f, f, f, 1), f = min(As, 1 - Ad) = min(As, 1 - 1) = 0
5801 * So (f, f, f, 1) = (0, 0, 0, 1)
5803 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_HABLRCa
;
5804 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_HABLFRA
;
5805 vmesa
->regHABLRFCa
= 0x0;
5806 vmesa
->regHABLRAa
= 0x0;
5809 /* (f, f, f, 1), f = min(As, 1 - Ad)
5811 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_mimAsrcInvAdst
;
5812 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_HABLFRA
;
5813 vmesa
->regHABLRFCa
= 0x0;
5814 vmesa
->regHABLRAa
= 0x0;
5825 vmesa
->regHABLCsat
|= HC_HABLCbias_HABLRCbias
;
5826 vmesa
->regHABLAsat
|= HC_HABLAbias_HABLRAbias
;
5828 /* Cb -- always from destination color.
5830 vmesa
->regHABLCop
= HC_HABLCb_OPC
| HC_HABLCb_Cdst
;
5831 /* Ab -- always from destination alpha.
5833 vmesa
->regHABLAop
= HC_HABLAb_OPA
| HC_HABLAb_Adst
;
5834 /* FCb -- depend on following condition.
5840 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_HABLRCb
;
5841 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_HABLFRA
;
5842 vmesa
->regHABLRFCb
= 0x0;
5843 vmesa
->regHABLRAb
= 0x0;
5848 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_HABLRCb
;
5849 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_HABLFRA
;
5850 vmesa
->regHABLRFCb
= 0x0;
5851 vmesa
->regHABLRAb
= 0x0;
5856 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_Csrc
;
5857 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_Asrc
;
5859 case GL_ONE_MINUS_SRC_COLOR
:
5860 /* (1, 1, 1, 1) - (Rs, Gs, Bs, As)
5862 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_Csrc
;
5863 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_Asrc
;
5868 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_Cdst
;
5869 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_Adst
;
5871 case GL_ONE_MINUS_DST_COLOR
:
5872 /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad)
5874 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_Cdst
;
5875 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_Adst
;
5880 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_Asrc
;
5881 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_Asrc
;
5883 case GL_ONE_MINUS_SRC_ALPHA
:
5884 /* (1, 1, 1, 1) - (As, As, As, As)
5886 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_Asrc
;
5887 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_Asrc
;
5891 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5894 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_HABLRCb
;
5895 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_HABLFRA
;
5896 vmesa
->regHABLRFCb
= 0x0;
5897 vmesa
->regHABLRAb
= 0x0;
5902 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_Adst
;
5903 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_Adst
;
5907 case GL_ONE_MINUS_DST_ALPHA
:
5909 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5910 /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0)
5912 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_HABLRCb
;
5913 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_HABLFRA
;
5914 vmesa
->regHABLRFCb
= 0x0;
5915 vmesa
->regHABLRAb
= 0x0;
5918 /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad)
5920 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_Adst
;
5921 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_Adst
;
5926 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_HABLRCb
;
5927 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_HABLFRA
;
5928 vmesa
->regHABLRFCb
= 0x0;
5929 vmesa
->regHABLRAb
= 0x0;
5933 if (vmesa
->viaScreen
->bitsPerPixel
<= 16)
5934 vmesa
->regEnable
&= ~HC_HenDT_MASK
;
5936 vmesa
->dirty
|= (VIA_UPLOAD_BLEND
| VIA_UPLOAD_ENABLE
);
5939 vmesa
->regEnable
&= (~HC_HenABL_MASK
);
5940 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5943 if (ctx
->Color
.AlphaEnabled
) {
5944 vmesa
->regEnable
|= HC_HenAT_MASK
;
5945 vmesa
->regHATMD
= (((GLchan
)ctx
->Color
.AlphaRef
) & 0xFF) |
5946 ((ctx
->Color
.AlphaFunc
- GL_NEVER
) << 8);
5947 vmesa
->dirty
|= (VIA_UPLOAD_ALPHATEST
| VIA_UPLOAD_ENABLE
);
5950 vmesa
->regEnable
&= (~HC_HenAT_MASK
);
5951 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5954 if (ctx
->Color
.DitherFlag
&& (vmesa
->viaScreen
->bitsPerPixel
< 32)) {
5955 if (ctx
->Color
.BlendEnabled
) {
5956 vmesa
->regEnable
&= ~HC_HenDT_MASK
;
5959 vmesa
->regEnable
|= HC_HenDT_MASK
;
5961 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5964 if (ctx
->Color
.ColorLogicOpEnabled
)
5965 vmesa
->regHROP
= ROP
[ctx
->Color
.LogicOp
& 0xF];
5967 vmesa
->regHROP
= HC_HROP_P
;
5969 vmesa
->regHFBBMSKL
= (*(GLuint
*)&ctx
->Color
.ColorMask
[0]) & 0xFFFFFF;
5970 vmesa
->regHROP
|= ((*(GLuint
*)&ctx
->Color
.ColorMask
[0]) >> 24) & 0xFF;
5971 vmesa
->dirty
|= VIA_UPLOAD_MASK_ROP
;
5973 if ((GLuint
)((GLuint
*)&ctx
->Color
.ColorMask
[0]) & 0xFF000000)
5974 vmesa
->regEnable
|= HC_HenAW_MASK
;
5976 vmesa
->regEnable
&= (~HC_HenAW_MASK
);
5977 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5979 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
5983 void viaChooseFogState(GLcontext
*ctx
)
5985 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
5987 if (ctx
->Fog
.Enabled
) {
5990 vmesa
->regCmdB
|= (HC_HVPMSK_Cd
| HC_HVPMSK_Cs
| HC_HVPMSK_W
);
5991 vmesa
->regEnable
|= HC_HenFOG_MASK
;
5993 /* Use fog equation 0 (OpenGL's default) & local fog.
5995 vmesa
->regHFogLF
= 0x0;
5997 r
= (GLubyte
)(ctx
->Fog
.Color
[0] * 255.0F
);
5998 g
= (GLubyte
)(ctx
->Fog
.Color
[1] * 255.0F
);
5999 b
= (GLubyte
)(ctx
->Fog
.Color
[2] * 255.0F
);
6000 a
= (GLubyte
)(ctx
->Fog
.Color
[3] * 255.0F
);
6001 vmesa
->regHFogCL
= (r
<< 16) | (g
<< 8) | b
;
6002 vmesa
->regHFogCH
= a
;
6003 vmesa
->dirty
|= (VIA_UPLOAD_FOG
| VIA_UPLOAD_ENABLE
);
6006 if((!ctx
->Texture
.Unit
[0]._ReallyEnabled
) &&
6007 (!ctx
->Texture
.Unit
[1]._ReallyEnabled
)) {
6008 vmesa
->regCmdB
&= ~ HC_HVPMSK_W
;
6009 vmesa
->regCmdB
&= ~ HC_HVPMSK_Cs
;
6011 vmesa
->regEnable
&= ~HC_HenFOG_MASK
;
6012 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6016 void viaChooseDepthState(GLcontext
*ctx
)
6018 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6019 if (ctx
->Depth
.Test
) {
6020 vmesa
->regCmdB
|= HC_HVPMSK_Z
;
6021 vmesa
->regEnable
|= HC_HenZT_MASK
;
6022 if (ctx
->Depth
.Mask
)
6023 vmesa
->regEnable
|= HC_HenZW_MASK
;
6025 vmesa
->regEnable
&= (~HC_HenZW_MASK
);
6026 vmesa
->regHZWTMD
= (ctx
->Depth
.Func
- GL_NEVER
) << 16;
6027 vmesa
->dirty
|= (VIA_UPLOAD_DEPTH
| VIA_UPLOAD_ENABLE
);
6031 /* Still need to send parameter Z.
6034 vmesa
->regCmdB
|= HC_HVPMSK_Z
;
6035 vmesa
->regEnable
&= ~HC_HenZT_MASK
;
6037 /*=* [DBG] racer : can't display cars in car selection menu *=*/
6038 /*if (ctx->Depth.Mask)
6039 vmesa->regEnable |= HC_HenZW_MASK;
6041 vmesa->regEnable &= (~HC_HenZW_MASK);*/
6042 vmesa
->regEnable
&= (~HC_HenZW_MASK
);
6044 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6048 void viaChooseLightState(GLcontext
*ctx
)
6050 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6052 if (ctx
->Light
.ShadeModel
== GL_SMOOTH
) {
6053 vmesa
->regCmdA
|= HC_HShading_Gouraud
;
6054 vmesa
->regCmdB
|= HC_HVPMSK_Cd
;
6057 vmesa
->regCmdA
&= ~HC_HShading_Gouraud
;
6058 vmesa
->regCmdB
|= HC_HVPMSK_Cd
;
6062 void viaChooseLineState(GLcontext
*ctx
)
6064 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6066 if (ctx
->Line
.SmoothFlag
) {
6067 vmesa
->regEnable
|= HC_HenAA_MASK
;
6070 if (!ctx
->Polygon
.SmoothFlag
) {
6071 vmesa
->regEnable
&= ~HC_HenAA_MASK
;
6075 if (ctx
->Line
.StippleFlag
) {
6076 vmesa
->regEnable
|= HC_HenLP_MASK
;
6077 vmesa
->regHLP
= ctx
->Line
.StipplePattern
;
6078 vmesa
->regHLPRF
= ctx
->Line
.StippleFactor
;
6079 vmesa
->dirty
|= VIA_UPLOAD_LINESTIPPLE
;
6082 vmesa
->regEnable
&= ~HC_HenLP_MASK
;
6084 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6087 void viaChoosePolygonState(GLcontext
*ctx
)
6089 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6091 if (ctx
->Polygon
.SmoothFlag
) {
6092 vmesa
->regEnable
|= HC_HenAA_MASK
;
6095 if (!ctx
->Line
.SmoothFlag
) {
6096 vmesa
->regEnable
&= ~HC_HenAA_MASK
;
6100 if (ctx
->Polygon
.StippleFlag
) {
6101 vmesa
->regEnable
|= HC_HenSP_MASK
;
6102 vmesa
->dirty
|= VIA_UPLOAD_POLYGONSTIPPLE
;
6105 vmesa
->regEnable
&= ~HC_HenSP_MASK
;
6108 if (ctx
->Polygon
.CullFlag
) {
6109 vmesa
->regEnable
|= HC_HenFBCull_MASK
;
6112 vmesa
->regEnable
&= ~HC_HenFBCull_MASK
;
6114 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6117 void viaChooseStencilState(GLcontext
*ctx
)
6119 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6121 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
6124 if (ctx
->Stencil
.Enabled
) {
6127 vmesa
->regEnable
|= HC_HenST_MASK
;
6128 temp
= (ctx
->Stencil
.Ref
[0] & 0xFF) << HC_HSTREF_SHIFT
;
6129 temp
|= 0xFF << HC_HSTOPMSK_SHIFT
;
6130 temp
|= (ctx
->Stencil
.ValueMask
[0] & 0xFF);
6131 vmesa
->regHSTREF
= temp
;
6133 temp
= (ctx
->Stencil
.Function
[0] - GL_NEVER
) << 16;
6135 switch (ctx
->Stencil
.FailFunc
[0]) {
6137 temp
|= HC_HSTOPSF_KEEP
;
6140 temp
|= HC_HSTOPSF_ZERO
;
6143 temp
|= HC_HSTOPSF_REPLACE
;
6146 temp
|= HC_HSTOPSF_INVERT
;
6149 temp
|= HC_HSTOPSF_INCR
;
6152 temp
|= HC_HSTOPSF_DECR
;
6156 switch (ctx
->Stencil
.ZFailFunc
[0]) {
6158 temp
|= HC_HSTOPSPZF_KEEP
;
6161 temp
|= HC_HSTOPSPZF_ZERO
;
6164 temp
|= HC_HSTOPSPZF_REPLACE
;
6167 temp
|= HC_HSTOPSPZF_INVERT
;
6170 temp
|= HC_HSTOPSPZF_INCR
;
6173 temp
|= HC_HSTOPSPZF_DECR
;
6177 switch (ctx
->Stencil
.ZPassFunc
[0]) {
6179 temp
|= HC_HSTOPSPZP_KEEP
;
6182 temp
|= HC_HSTOPSPZP_ZERO
;
6185 temp
|= HC_HSTOPSPZP_REPLACE
;
6188 temp
|= HC_HSTOPSPZP_INVERT
;
6191 temp
|= HC_HSTOPSPZP_INCR
;
6194 temp
|= HC_HSTOPSPZP_DECR
;
6197 vmesa
->regHSTMD
= temp
;
6199 vmesa
->dirty
|= (VIA_UPLOAD_STENCIL
| VIA_UPLOAD_STENCIL
);
6202 vmesa
->regEnable
&= ~HC_HenST_MASK
;
6203 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6206 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
6210 void viaChoosePoint(GLcontext
*ctx
)
6215 void viaChooseLine(GLcontext
*ctx
)
6220 void viaChooseTriangle(GLcontext
*ctx
)
6222 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6224 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
6226 if (VIA_DEBUG
) fprintf(stderr
, "GL_CULL_FACE = %x\n", GL_CULL_FACE
);
6227 if (VIA_DEBUG
) fprintf(stderr
, "ctx->Polygon.CullFlag = %x\n", ctx
->Polygon
.CullFlag
);
6229 if (VIA_DEBUG
) fprintf(stderr
, "GL_FRONT = %x\n", GL_FRONT
);
6230 if (VIA_DEBUG
) fprintf(stderr
, "ctx->Polygon.CullFaceMode = %x\n", ctx
->Polygon
.CullFaceMode
);
6231 if (VIA_DEBUG
) fprintf(stderr
, "GL_CCW = %x\n", GL_CCW
);
6232 if (VIA_DEBUG
) fprintf(stderr
, "ctx->Polygon.FrontFace = %x\n", ctx
->Polygon
.FrontFace
);
6234 if (ctx
->Polygon
.CullFlag
== GL_TRUE
) {
6235 switch (ctx
->Polygon
.CullFaceMode
) {
6237 if (ctx
->Polygon
.FrontFace
== GL_CCW
)
6238 vmesa
->regCmdB
|= HC_HBFace_MASK
;
6240 vmesa
->regCmdB
&= ~HC_HBFace_MASK
;
6243 if (ctx
->Polygon
.FrontFace
== GL_CW
)
6244 vmesa
->regCmdB
|= HC_HBFace_MASK
;
6246 vmesa
->regCmdB
&= ~HC_HBFace_MASK
;
6248 case GL_FRONT_AND_BACK
:
6253 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
6257 static void viaChooseState(GLcontext
*ctx
, GLuint newState
)
6259 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6260 struct gl_texture_unit
*texUnit0
= &ctx
->Texture
.Unit
[0];
6261 struct gl_texture_unit
*texUnit1
= &ctx
->Texture
.Unit
[1];
6263 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
6265 if (VIA_DEBUG
) fprintf(stderr
, "newState = %x\n", newState
);
6267 if (!(newState
& (_NEW_COLOR
|
6274 _NEW_POLYGONSTIPPLE
|
6279 vmesa
->newState
= newState
;
6281 if (texUnit0
->_ReallyEnabled
|| texUnit1
->_ReallyEnabled
|| ctx
->Fog
.Enabled
) {
6282 vmesa
->regCmdB
|= HC_HVPMSK_Cs
;
6285 vmesa
->regCmdB
&= ~ HC_HVPMSK_Cs
;
6288 if (newState
& _NEW_TEXTURE
)
6289 viaChooseTextureState(ctx
);
6291 if (newState
& _NEW_COLOR
)
6292 viaChooseColorState(ctx
);
6294 if (newState
& _NEW_DEPTH
)
6295 viaChooseDepthState(ctx
);
6297 if (newState
& _NEW_FOG
)
6298 viaChooseFogState(ctx
);
6300 if (newState
& _NEW_LIGHT
)
6301 viaChooseLightState(ctx
);
6303 if (newState
& _NEW_LINE
)
6304 viaChooseLineState(ctx
);
6306 if (newState
& (_NEW_POLYGON
| _NEW_POLYGONSTIPPLE
))
6307 viaChoosePolygonState(ctx
);
6309 if (newState
& _NEW_STENCIL
)
6310 viaChooseStencilState(ctx
);
6312 viaChooseTriangle(ctx
);
6315 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
6319 static void viaInvalidateState(GLcontext
*ctx
, GLuint newState
)
6321 _swrast_InvalidateState(ctx
, newState
);
6322 _swsetup_InvalidateState(ctx
, newState
);
6323 _ac_InvalidateState(ctx
, newState
);
6324 _tnl_InvalidateState(ctx
, newState
);
6325 viaChooseState(ctx
, newState
);
6328 void viaInitStateFuncs(GLcontext
*ctx
)
6330 /* Callbacks for internal Mesa events.
6332 ctx
->Driver
.UpdateState
= viaInvalidateState
;
6336 ctx
->Driver
.AlphaFunc
= viaAlphaFunc
;
6337 ctx
->Driver
.BlendEquation
= viaBlendEquation
;
6338 //ctx->Driver.BlendFunc = viaBlendFunc;
6339 ctx
->Driver
.BlendFuncSeparate
= viaBlendFuncSeparate
;
6340 ctx
->Driver
.ClearColor
= viaClearColor
;
6341 ctx
->Driver
.ColorMask
= viaColorMask
;
6342 ctx
->Driver
.CullFace
= viaCullFaceFrontFace
;
6343 ctx
->Driver
.DepthFunc
= viaDepthFunc
;
6344 ctx
->Driver
.DepthMask
= viaDepthMask
;
6345 ctx
->Driver
.DrawBuffer
= viaDrawBuffer
;
6346 ctx
->Driver
.Enable
= viaEnable
;
6347 ctx
->Driver
.Fogfv
= viaFogfv
;
6348 ctx
->Driver
.FrontFace
= viaCullFaceFrontFace
;
6349 ctx
->Driver
.LineWidth
= viaLineWidth
;
6350 ctx
->Driver
.LogicOpcode
= viaLogicOp
;
6351 ctx
->Driver
.PolygonStipple
= viaPolygonStipple
;
6352 ctx
->Driver
.RenderMode
= viaRenderMode
;
6353 ctx
->Driver
.Scissor
= viaScissor
;
6354 ctx
->Driver
.ShadeModel
= viaShadeModel
;
6355 ctx
->Driver
.DepthRange
= viaDepthRange
;
6356 ctx
->Driver
.Viewport
= viaViewport
;
6357 ctx
->Driver
.PointSize
= viaPointSize
;
6358 ctx
->Driver
.LightModelfv
= viaLightModelfv
;
6360 /* Pixel path fallbacks.
6362 ctx
->Driver
.Accum
= _swrast_Accum
;
6363 ctx
->Driver
.Bitmap
= viaBitmap
;
6365 ctx
->Driver
.CopyPixels
= _swrast_CopyPixels
;
6366 ctx
->Driver
.DrawPixels
= _swrast_DrawPixels
;
6367 ctx
->Driver
.ReadPixels
= _swrast_ReadPixels
;
6368 ctx
->Driver
.ResizeBuffers
= viaReAllocateBuffers
;
6370 /* Swrast hooks for imaging extensions:
6372 ctx
->Driver
.CopyColorTable
= _swrast_CopyColorTable
;
6373 ctx
->Driver
.CopyColorSubTable
= _swrast_CopyColorSubTable
;
6374 ctx
->Driver
.CopyConvolutionFilter1D
= _swrast_CopyConvolutionFilter1D
;
6375 ctx
->Driver
.CopyConvolutionFilter2D
= _swrast_CopyConvolutionFilter2D
;