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 viaBlendEquationSeparate(GLcontext
*ctx
, GLenum rgbMode
, GLenum aMode
)
94 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
97 /* GL_EXT_blend_equation_separate not supported */
98 ASSERT(rgbMode
== aMode
);
100 /* Can only do GL_ADD equation in hardware */
101 FALLBACK(VIA_CONTEXT(ctx
), VIA_FALLBACK_BLEND_EQ
, rgbMode
!= GL_FUNC_ADD_EXT
);
103 /* BlendEquation sets ColorLogicOpEnabled in an unexpected
106 FALLBACK(VIA_CONTEXT(ctx
), VIA_FALLBACK_LOGICOP
,
107 (ctx
->Color
.ColorLogicOpEnabled
&&
108 ctx
->Color
.LogicOp
!= GL_COPY
));
110 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
114 static void viaBlendFunc(GLcontext
*ctx
, GLenum sfactor
, GLenum dfactor
)
116 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
117 GLboolean fallback
= GL_FALSE
;
119 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
121 switch (ctx
->Color
.BlendSrcRGB
) {
123 case GL_SRC_ALPHA
: break;
125 case GL_DST_COLOR
: break;
126 case GL_ONE_MINUS_DST_COLOR
: break;
127 case GL_ONE_MINUS_SRC_ALPHA
: break;
128 case GL_DST_ALPHA
: break;
129 case GL_ONE_MINUS_DST_ALPHA
: break;
130 case GL_SRC_ALPHA_SATURATE
: /*a |= SDM_SRC_SRC_ALPHA; break;*/
131 case GL_CONSTANT_COLOR
:
132 case GL_ONE_MINUS_CONSTANT_COLOR
:
133 case GL_CONSTANT_ALPHA
:
134 case GL_ONE_MINUS_CONSTANT_ALPHA
:
141 switch (ctx
->Color
.BlendDstRGB
) {
142 case GL_SRC_ALPHA
: break;
143 case GL_ONE_MINUS_SRC_ALPHA
: break;
146 case GL_SRC_COLOR
: break;
147 case GL_ONE_MINUS_SRC_COLOR
: break;
148 case GL_DST_ALPHA
: break;
149 case GL_ONE_MINUS_DST_ALPHA
: break;
150 case GL_CONSTANT_COLOR
:
151 case GL_ONE_MINUS_CONSTANT_COLOR
:
152 case GL_CONSTANT_ALPHA
:
153 case GL_ONE_MINUS_CONSTANT_ALPHA
:
160 FALLBACK(vmesa
, VIA_FALLBACK_BLEND_FUNC
, fallback
);
162 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
166 /* Shouldn't be called as the extension is disabled.
168 static void viaBlendFuncSeparate(GLcontext
*ctx
, GLenum sfactorRGB
,
169 GLenum dfactorRGB
, GLenum sfactorA
,
172 if (dfactorRGB
!= dfactorA
|| sfactorRGB
!= sfactorA
) {
173 _mesa_error(ctx
, GL_INVALID_OPERATION
, "glBlendEquation (disabled)");
176 viaBlendFunc(ctx
, sfactorRGB
, dfactorRGB
);
180 static void viaDepthFunc(GLcontext
*ctx
, GLenum func
)
182 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
186 static void viaDepthMask(GLcontext
*ctx
, GLboolean flag
)
188 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
192 static void viaPolygonStipple(GLcontext
*ctx
, const GLubyte
*mask
)
194 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
199 /* =============================================================
202 static void viaScissor(GLcontext
*ctx
, GLint x
, GLint y
,
203 GLsizei w
, GLsizei h
)
205 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
207 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
209 if (ctx
->Scissor
.Enabled
) {
210 VIA_FIREVERTICES(vmesa
); /* don't pipeline cliprect changes */
211 vmesa
->uploadCliprects
= GL_TRUE
;
214 vmesa
->scissorRect
.x1
= x
;
215 vmesa
->scissorRect
.y1
= vmesa
->driDrawable
->h
- (y
+ h
);
216 vmesa
->scissorRect
.x2
= x
+ w
;
217 vmesa
->scissorRect
.y2
= vmesa
->driDrawable
->h
- y
;
219 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
224 static void viaLogicOp(GLcontext
*ctx
, GLenum opcode
)
227 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
228 if (VIA_DEBUG
) fprintf(stderr
, "opcode = %x\n", opcode
);
229 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
233 /* Fallback to swrast for select and feedback.
235 static void viaRenderMode(GLcontext
*ctx
, GLenum mode
)
237 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
239 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
241 FALLBACK(vmesa
, VIA_FALLBACK_RENDERMODE
, (mode
!= GL_RENDER
));
243 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
248 static void viaDrawBuffer(GLcontext
*ctx
, GLenum mode
)
250 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
252 if (VIA_DEBUG
) fprintf(stderr
, "%s in\n", __FUNCTION__
);
254 if (mode
== GL_FRONT
) {
255 VIA_FIREVERTICES(vmesa
);
256 VIA_STATECHANGE(vmesa
, VIA_UPLOAD_BUFFERS
);
257 vmesa
->drawMap
= (char *)vmesa
->driScreen
->pFB
;
258 vmesa
->readMap
= (char *)vmesa
->driScreen
->pFB
;
259 vmesa
->drawPitch
= vmesa
->front
.pitch
;
260 vmesa
->readPitch
= vmesa
->front
.pitch
;
261 viaXMesaSetFrontClipRects(vmesa
);
262 FALLBACK(vmesa
, VIA_FALLBACK_DRAW_BUFFER
, GL_FALSE
);
265 else if (mode
== GL_BACK
) {
266 VIA_FIREVERTICES(vmesa
);
267 VIA_STATECHANGE(vmesa
, VIA_UPLOAD_BUFFERS
);
268 vmesa
->drawMap
= vmesa
->back
.map
;
269 vmesa
->readMap
= vmesa
->back
.map
;
270 vmesa
->drawPitch
= vmesa
->back
.pitch
;
271 vmesa
->readPitch
= vmesa
->back
.pitch
;
272 viaXMesaSetBackClipRects(vmesa
);
273 FALLBACK(vmesa
, VIA_FALLBACK_DRAW_BUFFER
, GL_FALSE
);
277 FALLBACK(vmesa
, VIA_FALLBACK_DRAW_BUFFER
, GL_TRUE
);
281 if (VIA_DEBUG
) fprintf(stderr
, "%s out\n", __FUNCTION__
);
285 static void viaClearColor(GLcontext
*ctx
, const GLfloat color
[4])
287 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
289 pcolor
[0] = (GLubyte
) (255 * color
[0]);
290 pcolor
[1] = (GLubyte
) (255 * color
[1]);
291 pcolor
[2] = (GLubyte
) (255 * color
[2]);
292 pcolor
[3] = (GLubyte
) (255 * color
[3]);
293 vmesa
->ClearColor
= viaPackColor(vmesa
->viaScreen
->bitsPerPixel
,
294 pcolor
[0], pcolor
[1],
295 pcolor
[2], pcolor
[3]);
299 /* =============================================================
300 * Culling - the via isn't quite as clean here as the rest of
301 * its interfaces, but it's not bad.
303 static void viaCullFaceFrontFace(GLcontext
*ctx
, GLenum unused
)
305 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
309 static void viaLineWidth(GLcontext
*ctx
, GLfloat widthf
)
311 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
315 static void viaPointSize(GLcontext
*ctx
, GLfloat sz
)
317 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
321 static void viaBitmap( GLcontext
*ctx
, GLint px
, GLint py
,
322 GLsizei width
, GLsizei height
,
323 const struct gl_pixelstore_attrib
*unpack
,
324 const GLubyte
*bitmap
)
326 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
328 /*=* [DBG] csmash : fix background overlap option menu *=*/
329 LOCK_HARDWARE(vmesa
);
330 viaFlushPrimsLocked(vmesa
);
331 UNLOCK_HARDWARE(vmesa
);
334 /*=* [DBG] csmash : fix segmentation fault *=*/
335 /*=* John Sheng [2003.7.18] texenv *=*/
336 /*if (!vmesa->drawMap && !vmesa->readMap) {*/
338 if (vmesa
->glCtx
->Color
._DrawDestMask
== __GL_BACK_BUFFER_MASK
) {
339 viaDrawBuffer(ctx
, GL_BACK
);
342 viaDrawBuffer(ctx
, GL_FRONT
);
345 /*=* [DBG] csmash : white option words become brown *=*/
346 /*_swrast_Bitmap(ctx, px, py, width, height, unpack, bitmap );*/
349 fog
= ctx
->Fog
.Enabled
;
350 ctx
->Fog
.Enabled
= GL_FALSE
;
351 _swrast_Bitmap(ctx
, px
, py
, width
, height
, unpack
, bitmap
);
352 ctx
->Fog
.Enabled
= fog
;
356 /* =============================================================
359 static void viaColorMask(GLcontext
*ctx
,
360 GLboolean r
, GLboolean g
,
361 GLboolean b
, GLboolean a
)
363 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
367 /* Seperate specular not fully implemented on the via.
369 static void viaLightModelfv(GLcontext
*ctx
, GLenum pname
,
370 const GLfloat
*param
)
372 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
377 /* In Mesa 3.5 we can reliably do native flatshading.
379 static void viaShadeModel(GLcontext
*ctx
, GLenum mode
)
381 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
385 /* =============================================================
388 static void viaFogfv(GLcontext
*ctx
, GLenum pname
, const GLfloat
*param
)
390 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
394 /* =============================================================
396 static void viaEnable(GLcontext
*ctx
, GLenum cap
, GLboolean state
)
398 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
402 /* =============================================================
404 void viaEmitDrawingRectangle(viaContextPtr vmesa
)
406 __DRIdrawablePrivate
*dPriv
= vmesa
->driDrawable
;
407 viaScreenPrivate
*viaScreen
= vmesa
->viaScreen
;
408 int x0
= vmesa
->drawX
;
409 int y0
= vmesa
->drawY
;
410 int x1
= x0
+ dPriv
->w
;
411 int y1
= y0
+ dPriv
->h
;
412 /* GLuint dr2, dr3, dr4;
415 /* Coordinate origin of the window - may be offscreen.
417 /* dr4 = vmesa->BufferSetup[VIA_DESTREG_DR4] = ((y0 << 16) |
418 (((unsigned)x0) & 0xFFFF));
425 if (x1
> viaScreen
->width
- 1) x1
= viaScreen
->width
- 1;
426 if (y1
> viaScreen
->height
- 1) y1
= viaScreen
->height
- 1;
428 /* Onscreen drawing rectangle.
430 /* dr2 = vmesa->BufferSetup[VIA_DESTREG_DR2] = ((y0 << 16) | x0);
431 dr3 = vmesa->BufferSetup[VIA_DESTREG_DR3] = (((y1 + 1) << 16) | (x1 + 1));
434 vmesa
->dirty
|= VIA_UPLOAD_BUFFERS
;
438 static void viaCalcViewport(GLcontext
*ctx
)
440 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
441 const GLfloat
*v
= ctx
->Viewport
._WindowMap
.m
;
442 GLfloat
*m
= vmesa
->ViewportMatrix
.m
;
444 /* See also via_translate_vertex. SUBPIXEL adjustments can be done
445 * via state vars, too.
447 m
[MAT_SX
] = v
[MAT_SX
];
448 m
[MAT_TX
] = v
[MAT_TX
] + vmesa
->drawXoff
;
449 m
[MAT_SY
] = - v
[MAT_SY
];
450 m
[MAT_TY
] = - v
[MAT_TY
] + vmesa
->driDrawable
->h
;
451 /*=* John Sheng [2003.7.2] for visual config & viewperf drv-08 *=*/
452 if (vmesa
->depth
.bpp
== 16) {
453 m
[MAT_SZ
] = v
[MAT_SZ
] * (1.0 / 0xffff);
454 m
[MAT_TZ
] = v
[MAT_TZ
] * (1.0 / 0xffff);
457 m
[MAT_SZ
] = v
[MAT_SZ
] * (1.0 / 0xffffffff);
458 m
[MAT_TZ
] = v
[MAT_TZ
] * (1.0 / 0xffffffff);
462 static void viaViewport(GLcontext
*ctx
,
464 GLsizei width
, GLsizei height
)
466 viaCalcViewport(ctx
);
469 static void viaDepthRange(GLcontext
*ctx
,
470 GLclampd nearval
, GLclampd farval
)
472 viaCalcViewport(ctx
);
475 void viaPrintDirty(const char *msg
, GLuint state
)
479 fprintf(stderr
, "%s (0x%x): %s%s%s%s\n",
481 (unsigned int) state
,
482 (state
& VIA_UPLOAD_TEX0
) ? "upload-tex0, " : "",
483 (state
& VIA_UPLOAD_TEX1
) ? "upload-tex1, " : "",
484 (state
& VIA_UPLOAD_CTX
) ? "upload-ctx, " : "",
485 (state
& VIA_UPLOAD_BUFFERS
) ? "upload-bufs, " : ""
491 void viaInitState(GLcontext
*ctx
)
493 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
495 vmesa
->regCmdA
= HC_ACMD_HCmdA
;
496 vmesa
->regCmdB
= HC_ACMD_HCmdB
| HC_HVPMSK_X
| HC_HVPMSK_Y
| HC_HVPMSK_Z
;
497 vmesa
->regEnable
= HC_HenCW_MASK
;
499 if (vmesa
->glCtx
->Color
._DrawDestMask
== __GL_BACK_BUFFER_MASK
) {
500 vmesa
->drawMap
= vmesa
->back
.map
;
501 vmesa
->readMap
= vmesa
->back
.map
;
504 vmesa
->drawMap
= (char *)vmesa
->driScreen
->pFB
;
505 vmesa
->readMap
= (char *)vmesa
->driScreen
->pFB
;
509 void viaChooseTextureState(GLcontext
*ctx
)
511 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
512 struct gl_texture_unit
*texUnit0
= &ctx
->Texture
.Unit
[0];
513 struct gl_texture_unit
*texUnit1
= &ctx
->Texture
.Unit
[1];
514 /*=* John Sheng [2003.7.18] texture combine *=*/
515 GLboolean AlphaCombine
[3];
517 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
519 if (texUnit0
->_ReallyEnabled
|| texUnit1
->_ReallyEnabled
) {
522 fprintf(stderr
, "Texture._ReallyEnabled - in\n");
523 fprintf(stderr
, "texUnit0->_ReallyEnabled = %x\n",texUnit0
->_ReallyEnabled
);
527 if (texUnit0
->_ReallyEnabled
) {
528 struct gl_texture_object
*texObj
= texUnit0
->_Current
;
529 struct gl_texture_image
*texImage
= texObj
->Image
[0][0];
532 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->_ReallyEnabled\n");
534 if (texImage
->Border
) {
535 FALLBACK(vmesa
, VIA_FALLBACK_TEXTURE
, GL_TRUE
);
538 vmesa
->regCmdB
|= HC_HVPMSK_S
| HC_HVPMSK_T
| HC_HVPMSK_W
| HC_HVPMSK_Cs
;
539 vmesa
->regEnable
|= HC_HenTXMP_MASK
| HC_HenTXCH_MASK
| HC_HenTXPP_MASK
;
541 switch (texObj
->MinFilter
) {
543 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Nearest
|
547 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Linear
|
550 case GL_NEAREST_MIPMAP_NEAREST
:
551 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Nearest
|
553 vmesa
->regHTXnTB_0
|= HC_HTXnFLDs_Nearest
;
555 case GL_LINEAR_MIPMAP_NEAREST
:
556 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Linear
|
558 vmesa
->regHTXnTB_0
|= HC_HTXnFLDs_Nearest
;
560 case GL_NEAREST_MIPMAP_LINEAR
:
561 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Nearest
|
563 vmesa
->regHTXnTB_0
|= HC_HTXnFLDs_Linear
;
565 case GL_LINEAR_MIPMAP_LINEAR
:
566 vmesa
->regHTXnTB_0
= HC_HTXnFLSs_Linear
|
568 vmesa
->regHTXnTB_0
|= HC_HTXnFLDs_Linear
;
574 if (texObj
->MagFilter
) {
575 vmesa
->regHTXnTB_0
|= HC_HTXnFLSe_Linear
|
579 vmesa
->regHTXnTB_0
|= HC_HTXnFLSe_Nearest
|
583 if (texObj
->WrapS
== GL_REPEAT
)
584 vmesa
->regHTXnMPMD_0
= HC_HTXnMPMD_Srepeat
;
586 vmesa
->regHTXnMPMD_0
= HC_HTXnMPMD_Sclamp
;
589 if (texObj
->WrapT
== GL_REPEAT
)
590 vmesa
->regHTXnMPMD_0
|= HC_HTXnMPMD_Trepeat
;
592 vmesa
->regHTXnMPMD_0
|= HC_HTXnMPMD_Tclamp
;
595 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode %x\n",texUnit0
->EnvMode
);
597 switch (texUnit0
->EnvMode
) {
599 switch (texImage
->Format
) {
603 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
605 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
606 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
607 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
608 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
609 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
611 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
613 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
615 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
616 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
617 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
618 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
619 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
620 vmesa
->regHTXnTBLRAa_0
= 0x0;
621 vmesa
->regHTXnTBLRFog_0
= 0x0;
626 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
628 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
629 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
630 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
631 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
632 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
634 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
636 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
638 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
639 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
640 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
641 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
642 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
643 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
644 vmesa
->regHTXnTBLRAa_0
= 0x0;
646 case GL_LUMINANCE_ALPHA
:
647 /* C = Lt*Cf, A = At*Af
649 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
651 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
652 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
653 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
654 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
655 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
657 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
659 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
661 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
662 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
663 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
664 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
665 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
666 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
667 vmesa
->regHTXnTBLRAa_0
= 0x0;
668 vmesa
->regHTXnTBLRFog_0
= 0x0;
671 /* C = It*Cf, A = It*Af
673 * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
675 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
676 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
677 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
678 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
679 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
681 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
683 * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
685 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
686 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
687 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
688 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
689 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
690 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
691 vmesa
->regHTXnTBLRAa_0
= 0x0;
692 vmesa
->regHTXnTBLRFog_0
= 0x0;
697 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
699 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
700 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
701 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
702 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
703 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
705 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
707 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
709 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
710 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
711 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
712 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
713 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
714 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
715 vmesa
->regHTXnTBLRAa_0
= 0x0;
717 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_MODULATE: GL_RGB\n");
721 /* C = Ct*Cf, A = At*Af
723 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
725 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
726 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
727 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
728 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
729 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
731 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
733 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
735 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
736 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
737 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
738 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
739 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
740 HC_HTXnTBLAbias_HTXnTBLRAbias
741 | HC_HTXnTBLAshift_No
;
743 vmesa
->regHTXnTBLRAa_0
= 0x0;
744 vmesa
->regHTXnTBLRFog_0
= 0x0;
746 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_MODULATE: GL_RGBA\n");
750 switch (texObj
->Palette
.Format
) {
754 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
756 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
757 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
758 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
759 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
760 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
762 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
764 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
766 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
767 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
| HC_HTXnTBLAb_TOPA
|
768 HC_HTXnTBLAb_Adif
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
769 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
770 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
771 vmesa
->regHTXnTBLRAa_0
= 0x0;
772 vmesa
->regHTXnTBLRFog_0
= 0x0;
777 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
779 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
780 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
781 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
782 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
783 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
785 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
787 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
789 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
790 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
791 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
792 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
793 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
794 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
795 vmesa
->regHTXnTBLRAa_0
= 0x0;
797 case GL_LUMINANCE_ALPHA
:
798 /* C = Lt*Cf, A = At*Af
800 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
802 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
803 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
804 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
805 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
806 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
808 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
810 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
812 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
813 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
814 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
815 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
816 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
817 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
818 vmesa
->regHTXnTBLRAa_0
= 0x0;
819 vmesa
->regHTXnTBLRFog_0
= 0x0;
822 /* C = It*Cf, A = It*Af
824 * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
826 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
827 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
828 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
829 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
830 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
832 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
834 * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
836 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
837 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
838 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
839 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
840 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
841 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
842 vmesa
->regHTXnTBLRAa_0
= 0x0;
843 vmesa
->regHTXnTBLRFog_0
= 0x0;
848 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
850 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
851 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
852 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
853 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
854 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
856 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
858 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
860 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
861 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
862 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
863 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
864 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
865 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
866 vmesa
->regHTXnTBLRAa_0
= 0x0;
869 /* C = Ct*Cf, A = At*Af
871 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
873 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
874 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
875 HC_HTXnTBLCb_Dif
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
876 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
877 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
879 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
881 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
883 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
884 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
885 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
886 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
887 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
888 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
889 vmesa
->regHTXnTBLRAa_0
= 0x0;
890 vmesa
->regHTXnTBLRFog_0
= 0x0;
897 switch (texImage
->Format
) {
900 case GL_LUMINANCE_ALPHA
:
908 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
910 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
911 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
912 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
913 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
914 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
915 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
917 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
919 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
921 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
922 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
923 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
924 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
925 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
926 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
927 vmesa
->regHTXnTBLRAa_0
= 0x0;
929 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_DECAL: GL_RGB\n");
933 /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf
935 * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
937 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
938 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Atex
|
939 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_Tex
|
940 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
941 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
942 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
944 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
946 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
948 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
949 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
950 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
951 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
952 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
953 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
954 vmesa
->regHTXnTBLRAa_0
= 0x0;
956 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_DECAL: GL_RGBA\n");
960 switch (texObj
->Palette
.Format
) {
963 case GL_LUMINANCE_ALPHA
:
971 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
973 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
974 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
975 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
976 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
977 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
978 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
980 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
982 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
984 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
985 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
986 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
987 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
988 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
989 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
990 vmesa
->regHTXnTBLRAa_0
= 0x0;
992 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_COLOR_INDEX: GL_RGB\n");
996 /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf
998 * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1000 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1001 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Atex
|
1002 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_Tex
|
1003 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1004 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1005 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1006 HC_HTXnTBLCshift_No
;
1007 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1009 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1011 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1012 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1013 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1014 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1015 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1016 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1017 vmesa
->regHTXnTBLRAa_0
= 0x0;
1019 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_COLOR_INDEX: GL_RGBA\n");
1027 switch (texImage
->Format
) {
1031 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
1033 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1034 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1035 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1036 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1037 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1038 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1039 HC_HTXnTBLCshift_No
;
1040 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1042 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1044 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1045 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1046 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1047 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1048 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1049 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1050 vmesa
->regHTXnTBLRAa_0
= 0x0;
1053 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1054 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1055 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1056 /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf
1058 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1060 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1061 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1062 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1063 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1064 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1065 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1066 HC_HTXnTBLCshift_No
;
1067 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1068 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1070 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1072 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1073 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1074 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1075 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1076 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1077 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1078 vmesa
->regHTXnTBLRAa_0
= 0x0;
1080 case GL_LUMINANCE_ALPHA
:
1081 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1082 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1083 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1084 /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf
1086 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1088 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1089 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1090 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1091 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1092 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1093 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1094 HC_HTXnTBLCshift_No
;
1095 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1096 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1098 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
1100 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1101 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1102 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
1103 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1104 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1105 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
1106 vmesa
->regHTXnTBLRAa_0
= 0x0;
1107 vmesa
->regHTXnTBLRFog_0
= 0x0;
1110 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1111 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1112 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1113 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1114 /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac
1115 * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af
1117 * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1119 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1120 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1121 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1122 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1123 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1124 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1125 HC_HTXnTBLCshift_No
;
1126 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1127 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1129 * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No.
1131 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1132 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1133 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1134 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
1135 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
|
1136 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1137 vmesa
->regHTXnTBLRAa_0
= (a
<< 8);
1140 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1141 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1142 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1143 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1144 /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf
1146 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1148 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1149 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1150 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1151 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1152 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1153 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1154 HC_HTXnTBLCshift_No
;
1155 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1156 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1158 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1160 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1161 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1162 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1163 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1164 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1165 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1166 vmesa
->regHTXnTBLRAa_0
= 0x0;
1168 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_BLEND: GL_RGB\n");
1172 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1173 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1174 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1175 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1176 /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf
1178 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1180 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1181 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1182 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1183 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1184 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1185 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1186 HC_HTXnTBLCshift_No
;
1187 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1188 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1190 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
1192 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1193 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1194 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
1195 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1196 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1197 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
1198 vmesa
->regHTXnTBLRAa_0
= 0x0;
1199 vmesa
->regHTXnTBLRFog_0
= 0x0;
1201 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_BLEND: GL_RGBA\n");
1204 case GL_COLOR_INDEX
:
1205 switch (texObj
->Palette
.Format
) {
1209 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
1211 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1212 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1213 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1214 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1215 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1216 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1217 HC_HTXnTBLCshift_No
;
1218 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1220 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1222 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1223 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1224 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1225 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1226 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1227 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1228 vmesa
->regHTXnTBLRAa_0
= 0x0;
1231 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1232 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1233 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1234 /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf
1236 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1238 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1239 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1240 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1241 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1242 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1243 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1244 HC_HTXnTBLCshift_No
;
1245 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1246 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1248 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1250 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1251 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1252 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1253 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1254 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1255 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1256 vmesa
->regHTXnTBLRAa_0
= 0x0;
1258 case GL_LUMINANCE_ALPHA
:
1259 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1260 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1261 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1262 /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf
1264 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1266 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1267 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1268 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1269 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1270 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1271 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1272 HC_HTXnTBLCshift_No
;
1273 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1274 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1276 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
1278 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1279 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1280 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
1281 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1282 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1283 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
1284 vmesa
->regHTXnTBLRAa_0
= 0x0;
1285 vmesa
->regHTXnTBLRFog_0
= 0x0;
1288 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1289 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1290 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1291 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1292 /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac
1293 * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af
1295 * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1297 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1298 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1299 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1300 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1301 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1302 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1303 HC_HTXnTBLCshift_No
;
1304 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1305 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1307 * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No.
1309 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1310 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1311 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1312 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
1313 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
|
1314 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1315 vmesa
->regHTXnTBLRAa_0
= (a
<< 8);
1318 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1319 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1320 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1321 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1322 /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf
1324 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1326 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1327 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1328 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1329 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1330 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1331 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1332 HC_HTXnTBLCshift_No
;
1333 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1334 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1336 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1338 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1339 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1340 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1341 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1342 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1343 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1344 vmesa
->regHTXnTBLRAa_0
= 0x0;
1347 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1348 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1349 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1350 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1351 /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf
1353 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
1355 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1356 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
1357 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
1358 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
1359 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
1360 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1361 HC_HTXnTBLCshift_No
;
1362 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1363 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1365 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
1367 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1368 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
1369 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
1370 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1371 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1372 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
1373 vmesa
->regHTXnTBLRAa_0
= 0x0;
1374 vmesa
->regHTXnTBLRFog_0
= 0x0;
1381 switch (texImage
->Format
) {
1385 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
1387 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1388 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1389 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1390 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1391 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1392 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1393 HC_HTXnTBLCshift_No
;
1394 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1396 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1398 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1399 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1400 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1401 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1402 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1403 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1404 vmesa
->regHTXnTBLRAa_0
= 0x0;
1409 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
1411 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1412 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1413 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1414 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1415 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1416 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1417 HC_HTXnTBLCshift_No
;
1418 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1420 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1422 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1423 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1424 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1425 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1426 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1427 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1428 vmesa
->regHTXnTBLRAa_0
= 0x0;
1430 case GL_LUMINANCE_ALPHA
:
1433 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
1435 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1436 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1437 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1438 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1439 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1440 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1441 HC_HTXnTBLCshift_No
;
1442 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1444 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1446 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1447 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1448 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1449 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1450 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1451 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1452 vmesa
->regHTXnTBLRAa_0
= 0x0;
1457 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No.
1459 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1460 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1461 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1462 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1463 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1464 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1465 HC_HTXnTBLCshift_No
;
1466 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1468 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No.
1470 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1471 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1472 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1473 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1474 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1475 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1476 vmesa
->regHTXnTBLRAa_0
= 0x0;
1481 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
1483 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1484 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1485 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1486 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1487 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1488 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1489 HC_HTXnTBLCshift_No
;
1490 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1492 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1494 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1495 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1496 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1497 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1498 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1499 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1500 vmesa
->regHTXnTBLRAa_0
= 0x0;
1502 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_REPLACE: GL_RGB\n");
1508 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
1510 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1511 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1512 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1513 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1514 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1515 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1516 HC_HTXnTBLCshift_No
;
1517 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1519 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1521 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1522 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1523 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1524 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1525 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1526 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1527 vmesa
->regHTXnTBLRAa_0
= 0x0;
1529 if (VIA_DEBUG
) fprintf(stderr
, "texUnit0->EnvMode: GL_REPLACE: GL_RGBA\n");
1532 case GL_COLOR_INDEX
:
1533 switch (texObj
->Palette
.Format
) {
1537 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
1539 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1540 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1541 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1542 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1543 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1544 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
1545 HC_HTXnTBLCshift_No
;
1546 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1548 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1550 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1551 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1552 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1553 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1554 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1555 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1556 vmesa
->regHTXnTBLRAa_0
= 0x0;
1561 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
1563 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1564 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1565 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1566 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1567 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1568 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1569 HC_HTXnTBLCshift_No
;
1570 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1572 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1574 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1575 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1576 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1577 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1578 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1579 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1580 vmesa
->regHTXnTBLRAa_0
= 0x0;
1582 case GL_LUMINANCE_ALPHA
:
1585 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
1587 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1588 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1589 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1590 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1591 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1592 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1593 HC_HTXnTBLCshift_No
;
1594 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1596 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1598 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1599 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1600 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1601 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1602 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1603 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1604 vmesa
->regHTXnTBLRAa_0
= 0x0;
1609 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No.
1611 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1612 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1613 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1614 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1615 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1616 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1617 HC_HTXnTBLCshift_No
;
1618 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1620 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No.
1622 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1623 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1624 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1625 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1626 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1627 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1628 vmesa
->regHTXnTBLRAa_0
= 0x0;
1633 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
1635 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1636 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1637 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1638 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1639 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1640 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1641 HC_HTXnTBLCshift_No
;
1642 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1644 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
1646 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1647 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1648 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1649 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1650 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1651 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
1652 vmesa
->regHTXnTBLRAa_0
= 0x0;
1657 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
1659 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1660 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1661 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1662 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1663 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1664 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
1665 HC_HTXnTBLCshift_No
;
1666 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1668 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
1670 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
1671 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
1672 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
1673 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
1674 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
1675 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
1676 vmesa
->regHTXnTBLRAa_0
= 0x0;
1682 /*=* John Sheng [2003.7.18] texture combine *=*/
1684 switch (texUnit0
->Combine
.ModeRGB
) {
1686 switch (texUnit0
->Combine
.SourceRGB
[0]) {
1688 switch (texUnit0
->Combine
.OperandRGB
[0]) {
1690 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1691 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1692 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1693 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1694 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1695 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
;
1696 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1698 case GL_ONE_MINUS_SRC_COLOR
:
1699 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1700 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1701 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1702 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1703 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1704 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Tex
;
1705 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1708 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1709 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1710 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1711 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1712 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1713 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Atex
;
1714 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1716 case GL_ONE_MINUS_SRC_ALPHA
:
1717 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1718 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1719 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1720 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1721 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1722 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Atex
;
1723 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1728 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1729 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1730 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1731 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1732 switch (texUnit0
->Combine
.OperandRGB
[0]) {
1734 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1735 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1736 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1737 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1738 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1739 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
1741 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1742 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1744 case GL_ONE_MINUS_SRC_COLOR
:
1745 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1746 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1747 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1748 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1749 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1750 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
1751 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1752 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1755 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1756 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1757 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1758 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1759 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1760 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
1761 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1762 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
1764 case GL_ONE_MINUS_SRC_ALPHA
:
1765 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1766 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1767 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1768 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1769 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1770 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
1771 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1772 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
1776 case GL_PRIMARY_COLOR
:
1777 switch (texUnit0
->Combine
.OperandRGB
[0]) {
1779 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1780 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1781 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1782 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1783 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1784 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
;
1785 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1787 case GL_ONE_MINUS_SRC_COLOR
:
1788 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1789 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1790 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1791 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1792 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1793 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Dif
;
1794 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1797 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1798 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1799 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1800 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1801 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1802 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Adif
;
1803 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1805 case GL_ONE_MINUS_SRC_ALPHA
:
1806 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1807 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1808 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1809 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1810 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1811 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Adif
;
1812 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1817 switch (texUnit0
->Combine
.OperandRGB
[0]) {
1819 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1820 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1821 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1822 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1823 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1824 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
;
1825 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1827 case GL_ONE_MINUS_SRC_COLOR
:
1828 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1829 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1830 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1831 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1832 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1833 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Dif
;
1834 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1837 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1838 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1839 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1840 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1841 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1842 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Adif
;
1843 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1845 case GL_ONE_MINUS_SRC_ALPHA
:
1846 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
1847 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
1848 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
1849 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1850 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1851 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Adif
;
1852 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1857 switch ((GLint
)(texUnit0
->Combine
.ScaleShiftRGB
)) {
1859 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
1862 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
1865 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
1871 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
1872 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
1873 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
1874 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
1875 switch (texUnit0
->Combine
.OperandRGB
[0]) {
1877 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
1880 case GL_ONE_MINUS_SRC_COLOR
:
1881 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
1885 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
1888 case GL_ONE_MINUS_SRC_ALPHA
:
1889 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
1893 switch (texUnit0
->Combine
.OperandRGB
[1]) {
1895 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
1898 case GL_ONE_MINUS_SRC_COLOR
:
1899 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
1903 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
1906 case GL_ONE_MINUS_SRC_ALPHA
:
1907 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
1911 switch (texUnit0
->Combine
.SourceRGB
[0]) {
1913 if (AlphaCombine
[0]==0) {
1914 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
1917 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Atex
;
1921 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1922 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1923 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1924 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1925 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
1926 if (AlphaCombine
[0]==0) {
1927 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
1930 vmesa
->regHTXnTBLRCa_0
= (a
<< 16) | (a
<< 8) | a
;
1933 case GL_PRIMARY_COLOR
:
1934 if (AlphaCombine
[0]==0) {
1935 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
1938 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
1942 if (AlphaCombine
[0]==0) {
1943 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
1946 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
1950 switch (texUnit0
->Combine
.SourceRGB
[1]) {
1952 if (AlphaCombine
[1]==0) {
1953 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
1956 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
1960 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
1961 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
1962 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
1963 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
1964 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
1965 if (AlphaCombine
[1]==0) {
1966 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
1969 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
1972 case GL_PRIMARY_COLOR
:
1973 if (AlphaCombine
[1]==0) {
1974 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
1977 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
1981 if (AlphaCombine
[1]==0) {
1982 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
1985 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
1989 switch ((GLint
)(texUnit0
->Combine
.ScaleShiftRGB
)) {
1991 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
1994 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
1997 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
2003 if (texUnit0
->Combine
.ModeRGB
==GL_ADD
) {
2004 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2005 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
2008 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
2009 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
2011 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2012 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
| HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
;
2013 vmesa
->regHTXnTBLRCa_0
= ( 255<<16 | 255<<8 |255 );
2014 switch (texUnit0
->Combine
.OperandRGB
[0]) {
2016 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
2019 case GL_ONE_MINUS_SRC_COLOR
:
2020 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
2024 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
2027 case GL_ONE_MINUS_SRC_ALPHA
:
2028 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
2032 switch (texUnit0
->Combine
.OperandRGB
[1]) {
2034 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_TOPC
;
2037 case GL_ONE_MINUS_SRC_COLOR
:
2038 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_InvTOPC
;
2042 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_TOPC
;
2045 case GL_ONE_MINUS_SRC_ALPHA
:
2046 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_InvTOPC
;
2050 switch (texUnit0
->Combine
.SourceRGB
[0]) {
2052 if (AlphaCombine
[0]==0) {
2053 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
2056 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
2060 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2061 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2062 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2063 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2064 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
2065 if (AlphaCombine
[0]==0) {
2066 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
2069 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
2072 case GL_PRIMARY_COLOR
:
2074 if (AlphaCombine
[0]==0) {
2075 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
2078 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
2082 switch (texUnit0
->Combine
.SourceRGB
[1]) {
2084 if (AlphaCombine
[1]==0) {
2085 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Tex
;
2088 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Atex
;
2092 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2093 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2094 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2095 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2096 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_HTXnTBLRC
;
2097 if (AlphaCombine
[1]==0) {
2098 vmesa
->regHTXnTBLRCc_0
= (r
<< 16) | (g
<< 8) | b
;
2101 vmesa
->regHTXnTBLRCc_0
= (a
<< 16) | (a
<< 8) | a
;
2104 case GL_PRIMARY_COLOR
:
2106 if (AlphaCombine
[1]==0) {
2107 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Dif
;
2110 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Adif
;
2114 switch ((GLint
)(texUnit0
->Combine
.ScaleShiftRGB
)) {
2116 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
2119 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
2122 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
2126 case GL_ADD_SIGNED
:
2127 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
;
2128 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2129 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2130 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
|
2131 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_HTXnTBLRC
;
2132 vmesa
->regHTXnTBLRCa_0
= ( 255<<16 | 255<<8 |255 );
2133 vmesa
->regHTXnTBLRCc_0
= ( 128<<16 | 128<<8 |128 );
2134 switch (texUnit0
->Combine
.OperandRGB
[0]) {
2136 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
2139 case GL_ONE_MINUS_SRC_COLOR
:
2140 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
2144 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
2147 case GL_ONE_MINUS_SRC_ALPHA
:
2148 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
2152 switch (texUnit0
->Combine
.OperandRGB
[1]) {
2154 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
2157 case GL_ONE_MINUS_SRC_COLOR
:
2158 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
2162 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
2165 case GL_ONE_MINUS_SRC_ALPHA
:
2166 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
2170 switch (texUnit0
->Combine
.SourceRGB
[0]) {
2172 if (AlphaCombine
[0]==0) {
2173 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
2176 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
2180 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2181 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2182 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2183 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2184 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
2185 if (AlphaCombine
[0]==0) {
2186 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
2189 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
2192 case GL_PRIMARY_COLOR
:
2194 if (AlphaCombine
[0]==0) {
2195 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
2198 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
2202 switch (texUnit0
->Combine
.SourceRGB
[1]) {
2204 if (AlphaCombine
[1]==0) {
2205 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Tex
;
2208 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Atex
;
2212 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2213 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2214 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2215 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2216 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_HTXnTBLRC
;
2217 if (AlphaCombine
[1]==0) {
2218 vmesa
->regHTXnTBLRCbias_0
= (r
<< 16) | (g
<< 8) | b
;
2221 vmesa
->regHTXnTBLRCbias_0
= (a
<< 16) | (a
<< 8) | a
;
2224 case GL_PRIMARY_COLOR
:
2226 if (AlphaCombine
[1]==0) {
2227 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Dif
;
2230 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Adif
;
2234 switch ((GLint
)(texUnit0
->Combine
.ScaleShiftRGB
)) {
2236 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
2239 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
2242 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
2246 case GL_INTERPOLATE
:
2247 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
;
2248 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2249 switch (texUnit0
->Combine
.OperandRGB
[0]) {
2251 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_TOPC
;
2254 case GL_ONE_MINUS_SRC_COLOR
:
2255 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_InvTOPC
;
2259 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_TOPC
;
2262 case GL_ONE_MINUS_SRC_ALPHA
:
2263 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_InvTOPC
;
2267 switch (texUnit0
->Combine
.OperandRGB
[1]) {
2269 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_TOPC
;
2270 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
2273 case GL_ONE_MINUS_SRC_COLOR
:
2274 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_InvTOPC
;
2275 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
2279 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_TOPC
;
2280 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
2283 case GL_ONE_MINUS_SRC_ALPHA
:
2284 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_InvTOPC
;
2285 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
2289 switch (texUnit0
->Combine
.OperandRGB
[2]) {
2291 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_TOPC
;
2294 case GL_ONE_MINUS_SRC_COLOR
:
2295 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_InvTOPC
;
2299 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_TOPC
;
2302 case GL_ONE_MINUS_SRC_ALPHA
:
2303 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_InvTOPC
;
2307 switch (texUnit0
->Combine
.SourceRGB
[0]) {
2309 if (AlphaCombine
[0]==0) {
2310 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
2313 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
2317 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2318 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2319 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2320 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2321 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
2322 if (AlphaCombine
[0]==0) {
2323 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
2326 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
2329 case GL_PRIMARY_COLOR
:
2331 if (AlphaCombine
[0]==0) {
2332 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
2335 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
2339 switch (texUnit0
->Combine
.SourceRGB
[1]) {
2341 if (AlphaCombine
[0]==0) {
2342 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Tex
;
2343 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Tex
;
2346 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Atex
;
2347 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Atex
;
2351 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2352 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2353 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2354 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2355 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_HTXnTBLRC
;
2356 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_HTXnTBLRC
;
2357 if (AlphaCombine
[0]==0) {
2358 vmesa
->regHTXnTBLRCc_0
= (r
<< 16) | (g
<< 8) | b
;
2359 vmesa
->regHTXnTBLRCbias_0
= (r
<< 16) | (g
<< 8) | b
;
2362 vmesa
->regHTXnTBLRCc_0
= (a
<< 16) | (a
<< 8) | a
;
2363 vmesa
->regHTXnTBLRCbias_0
= (a
<< 16) | (a
<< 8) | a
;
2366 case GL_PRIMARY_COLOR
:
2368 if (AlphaCombine
[0]==0) {
2369 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Dif
;
2370 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Dif
;
2373 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Adif
;
2374 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Adif
;
2378 switch (texUnit0
->Combine
.SourceRGB
[2]) {
2380 if (AlphaCombine
[0]==0) {
2381 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
2384 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Atex
;
2388 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
2389 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
2390 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
2391 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2392 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
2393 if (AlphaCombine
[0]==0) {
2394 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
2397 vmesa
->regHTXnTBLRCa_0
= (a
<< 16) | (a
<< 8) | a
;
2400 case GL_PRIMARY_COLOR
:
2402 if (AlphaCombine
[0]==0) {
2403 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
2406 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
2410 switch ((GLint
)(texUnit0
->Combine
.ScaleShiftRGB
)) {
2412 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
2415 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
2418 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
2423 switch (texUnit0
->Combine
.ModeA
) {
2425 switch (texUnit0
->Combine
.SourceA
[0]) {
2427 switch (texUnit0
->Combine
.OperandA
[0]) {
2429 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2430 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2431 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2432 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2433 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2434 HC_HTXnTBLAbias_Atex
;
2435 vmesa
->regHTXnTBLRAa_0
= 0x0;
2437 case GL_ONE_MINUS_SRC_ALPHA
:
2438 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2439 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2440 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2441 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2442 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2443 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_Atex
;
2444 vmesa
->regHTXnTBLRAa_0
= 0x0;
2449 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2450 switch (texUnit0
->Combine
.OperandA
[0]) {
2452 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2453 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2454 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2455 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2456 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2457 HC_HTXnTBLAbias_HTXnTBLRAbias
;
2458 vmesa
->regHTXnTBLRAa_0
= 0x0;
2459 vmesa
->regHTXnTBLRFog_0
= a
;
2461 case GL_ONE_MINUS_SRC_ALPHA
:
2462 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2463 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2464 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2465 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2466 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2467 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
2468 vmesa
->regHTXnTBLRAa_0
= 0x0;
2469 vmesa
->regHTXnTBLRFog_0
= a
;
2473 case GL_PRIMARY_COLOR
:
2475 switch (texUnit0
->Combine
.OperandA
[0]) {
2477 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2478 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2479 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2480 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2481 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2482 HC_HTXnTBLAbias_Adif
;
2483 vmesa
->regHTXnTBLRAa_0
= 0x0;
2485 case GL_ONE_MINUS_SRC_ALPHA
:
2486 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2487 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2488 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2489 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2490 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2491 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_Adif
;
2492 vmesa
->regHTXnTBLRAa_0
= 0x0;
2497 switch ((GLint
)(texUnit0
->Combine
.ScaleShiftA
)) {
2499 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2502 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2505 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2510 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2511 HC_HTXnTBLAbias_HTXnTBLRAbias
;
2512 vmesa
->regHTXnTBLRFog_0
= 0x0;
2513 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2514 vmesa
->regHTXnTBLRAa_0
= 0x0;
2515 switch (texUnit0
->Combine
.OperandA
[0]) {
2517 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_TOPA
;
2519 case GL_ONE_MINUS_SRC_ALPHA
:
2520 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_InvTOPA
;
2523 switch (texUnit0
->Combine
.OperandA
[1]) {
2525 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
2527 case GL_ONE_MINUS_SRC_ALPHA
:
2528 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
2531 switch (texUnit0
->Combine
.SourceA
[0]) {
2533 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Atex
;
2536 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2537 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_HTXnTBLRA
;
2538 vmesa
->regHTXnTBLRAa_0
|= a
<<16;
2540 case GL_PRIMARY_COLOR
:
2542 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Adif
;
2545 switch (texUnit0
->Combine
.SourceA
[1]) {
2547 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
2550 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2551 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
2552 vmesa
->regHTXnTBLRAa_0
|= a
<<8;
2554 case GL_PRIMARY_COLOR
:
2556 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
2559 switch ((GLint
)(texUnit0
->Combine
.ScaleShiftA
)) {
2561 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2564 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2567 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2573 if(texUnit0
->Combine
.ModeA
==GL_ADD
) {
2574 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
2577 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
2579 vmesa
->regHTXnTBLRFog_0
= 0;
2580 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
| HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
;
2581 vmesa
->regHTXnTBLRAa_0
= 0x0 | ( 255<<16 );
2582 switch (texUnit0
->Combine
.OperandA
[0]) {
2584 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
2586 case GL_ONE_MINUS_SRC_ALPHA
:
2587 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
2590 switch (texUnit0
->Combine
.OperandA
[1]) {
2592 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_TOPA
;
2594 case GL_ONE_MINUS_SRC_ALPHA
:
2595 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_InvTOPA
;
2598 switch (texUnit0
->Combine
.SourceA
[0]) {
2600 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
2603 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2604 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
2605 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
2607 case GL_PRIMARY_COLOR
:
2609 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
2612 switch (texUnit0
->Combine
.SourceA
[1]) {
2614 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Atex
;
2617 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2618 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_HTXnTBLRA
;
2619 vmesa
->regHTXnTBLRAa_0
|= a
;
2621 case GL_PRIMARY_COLOR
:
2623 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Adif
;
2626 switch ((GLint
)(texUnit0
->Combine
.ScaleShiftA
)) {
2628 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2631 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2634 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2638 case GL_ADD_SIGNED
:
2639 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
;
2640 vmesa
->regHTXnTBLRFog_0
= 0x0;
2641 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2642 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2643 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2644 vmesa
->regHTXnTBLRAa_0
= ( 255<<16 | 0<<8 |128 );
2645 switch (texUnit0
->Combine
.OperandA
[0]) {
2647 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
2649 case GL_ONE_MINUS_SRC_ALPHA
:
2650 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
2653 switch (texUnit0
->Combine
.OperandA
[1]) {
2656 case GL_ONE_MINUS_SRC_ALPHA
:
2657 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Inv
;
2660 switch (texUnit0
->Combine
.SourceA
[0]) {
2662 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
2665 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2666 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
2667 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
2669 case GL_PRIMARY_COLOR
:
2671 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
2674 switch (texUnit0
->Combine
.SourceA
[1]) {
2676 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Atex
;
2679 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2680 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_HTXnTBLRAbias
;
2681 vmesa
->regHTXnTBLRFog_0
|= a
;
2683 case GL_PRIMARY_COLOR
:
2685 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Adif
;
2688 switch ((GLint
)(texUnit0
->Combine
.ScaleShiftA
)) {
2690 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2693 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2696 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2700 case GL_INTERPOLATE
:
2701 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
;
2702 vmesa
->regHTXnTBLRAa_0
= 0x0;
2703 vmesa
->regHTXnTBLRFog_0
= 0x0;
2704 switch (texUnit0
->Combine
.OperandA
[0]) {
2706 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAb_TOPA
;
2708 case GL_ONE_MINUS_SRC_ALPHA
:
2709 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAb_InvTOPA
;
2712 switch (texUnit0
->Combine
.OperandA
[1]) {
2714 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAc_TOPA
;
2716 case GL_ONE_MINUS_SRC_ALPHA
:
2717 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAc_InvTOPA
;
2718 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Inv
;
2721 switch (texUnit0
->Combine
.OperandA
[2]) {
2723 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAa_TOPA
;
2725 case GL_ONE_MINUS_SRC_ALPHA
:
2726 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAa_InvTOPA
;
2729 switch (texUnit0
->Combine
.SourceA
[0]) {
2731 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
2734 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2735 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
2736 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
2738 case GL_PRIMARY_COLOR
:
2740 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
2743 switch (texUnit0
->Combine
.SourceA
[1]) {
2745 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Atex
;
2746 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Atex
;
2749 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2750 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_HTXnTBLRA
;
2751 vmesa
->regHTXnTBLRAa_0
|= a
;
2752 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_HTXnTBLRAbias
;
2753 vmesa
->regHTXnTBLRFog_0
|= a
;
2755 case GL_PRIMARY_COLOR
:
2757 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Adif
;
2758 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Adif
;
2761 switch (texUnit0
->Combine
.SourceA
[2]) {
2763 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Atex
;
2766 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[3], a
);
2767 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_HTXnTBLRA
;
2768 vmesa
->regHTXnTBLRAa_0
|= (a
<< 16);
2770 case GL_PRIMARY_COLOR
:
2772 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Adif
;
2775 switch (texUnit0
->Combine
.ScaleShiftA
) {
2777 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
2780 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
2783 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
2792 /*=* John Sheng [2003.7.18] texture add *=*/
2794 switch(texImage
->Format
) {
2796 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2797 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
2798 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
2799 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2800 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
2801 HC_HTXnTBLCshift_No
;
2802 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2803 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2804 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
2805 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2806 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2807 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2808 vmesa
->regHTXnTBLRAa_0
= 0x0;
2809 vmesa
->regHTXnTBLRFog_0
= 0x0;
2812 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2813 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2814 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2815 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2816 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2817 HC_HTXnTBLCshift_No
;
2818 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2819 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2820 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2821 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2822 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2823 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2824 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2825 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
2826 vmesa
->regHTXnTBLRAa_0
= 0x0;
2828 case GL_LUMINANCE_ALPHA
:
2829 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2830 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2831 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2832 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2833 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2834 HC_HTXnTBLCshift_No
;
2835 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2836 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2837 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2838 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
2839 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
2840 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2841 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2842 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2843 vmesa
->regHTXnTBLRAa_0
= 0x0;
2844 vmesa
->regHTXnTBLRFog_0
= 0x0;
2847 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2848 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2849 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2850 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2851 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2852 HC_HTXnTBLCshift_No
;
2853 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2854 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2855 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2856 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2857 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Atex
|
2858 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
2859 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2860 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2861 /*=* John Sheng [2003.7.18] texenv *=*/
2862 /*vmesa->regHTXnTBLRAa_0 = 0x0;*/
2863 vmesa
->regHTXnTBLRAa_0
= (255<<16) | (255<<8) | 255;;
2864 vmesa
->regHTXnTBLRFog_0
= 0x0 | 255<<16;
2867 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2868 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2869 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2870 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2871 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2872 HC_HTXnTBLCshift_No
;
2873 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2874 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2875 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2876 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2877 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2878 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2879 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2880 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
2881 vmesa
->regHTXnTBLRAa_0
= 0x0;
2884 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2885 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2886 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2887 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2888 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2889 HC_HTXnTBLCshift_No
;
2890 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2891 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2892 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2893 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
2894 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
2895 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2896 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2897 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2898 vmesa
->regHTXnTBLRAa_0
= 0x0;
2899 vmesa
->regHTXnTBLRFog_0
= 0x0;
2901 case GL_COLOR_INDEX
:
2902 switch(texObj
->Palette
.Format
) {
2904 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2905 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
2906 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
2907 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2908 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
2909 HC_HTXnTBLCshift_No
;
2910 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2911 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2912 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
2913 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2914 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2915 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2916 vmesa
->regHTXnTBLRAa_0
= 0x0;
2917 vmesa
->regHTXnTBLRFog_0
= 0x0;
2920 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2921 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2922 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2923 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2924 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2925 HC_HTXnTBLCshift_No
;
2926 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2927 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2928 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2929 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2930 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2931 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2932 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2933 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
2934 vmesa
->regHTXnTBLRAa_0
= 0x0;
2936 case GL_LUMINANCE_ALPHA
:
2937 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2938 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2939 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2940 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2941 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2942 HC_HTXnTBLCshift_No
;
2943 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2944 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2945 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2946 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
2947 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
2948 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2949 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2950 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2951 vmesa
->regHTXnTBLRAa_0
= 0x0;
2952 vmesa
->regHTXnTBLRFog_0
= 0x0;
2955 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2956 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2957 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2958 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2959 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2960 HC_HTXnTBLCshift_No
;
2961 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2962 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2963 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2964 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2965 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Atex
|
2966 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
2967 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2968 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
2969 vmesa
->regHTXnTBLRAa_0
= 0x0;
2970 vmesa
->regHTXnTBLRFog_0
= 0x0 | 255<<16;
2973 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2974 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2975 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2976 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2977 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2978 HC_HTXnTBLCshift_No
;
2979 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2980 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2981 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2982 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
2983 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
2984 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
2985 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
2986 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
2987 vmesa
->regHTXnTBLRAa_0
= 0x0;
2990 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
2991 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
2992 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
2993 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
2994 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
2995 HC_HTXnTBLCshift_No
;
2996 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
2997 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
2998 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
2999 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3000 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
3001 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3002 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
3003 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3004 vmesa
->regHTXnTBLRAa_0
= 0x0;
3005 vmesa
->regHTXnTBLRFog_0
= 0x0;
3011 /*=* John Sheng [2003.7.18] texture dot3 *=*/
3014 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLDOT4
| HC_HTXnTBLCop_Add
|
3015 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3016 HC_HTXnTBLCshift_2
| HC_HTXnTBLAop_Add
|
3017 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3018 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
3019 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
3020 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3021 vmesa
->regHTXnTBLRFog_0
= 0x0;
3022 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
3023 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3024 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3025 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3026 vmesa
->regHTXnTBLRAa_0
= 0x0;
3027 switch (texUnit0
->Combine
.OperandRGB
[0]) {
3029 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
3031 case GL_ONE_MINUS_SRC_COLOR
:
3032 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
3035 switch (texUnit0
->Combine
.OperandRGB
[1]) {
3037 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
3039 case GL_ONE_MINUS_SRC_COLOR
:
3040 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
3043 switch (texUnit0
->Combine
.SourceRGB
[0]) {
3045 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
3048 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
3049 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
3050 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
3051 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
3052 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
3054 case GL_PRIMARY_COLOR
:
3056 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
3059 switch (texUnit0
->Combine
.SourceRGB
[1]) {
3061 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
3064 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[0], r
);
3065 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[1], g
);
3066 CLAMPED_FLOAT_TO_UBYTE(texUnit0
->EnvColor
[2], b
);
3067 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
3068 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
3070 case GL_PRIMARY_COLOR
:
3072 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
3081 /* Should turn Cs off if actually no Cs */
3084 if (texUnit1
->_ReallyEnabled
) {
3085 struct gl_texture_object
*texObj
= texUnit1
->_Current
;
3086 struct gl_texture_image
*texImage
= texObj
->Image
[0][0];
3089 if (texImage
->Border
) {
3090 FALLBACK(vmesa
, VIA_FALLBACK_TEXTURE
, GL_TRUE
);
3094 switch (texObj
->MinFilter
) {
3096 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Nearest
|
3097 HC_HTXnFLTs_Nearest
;
3100 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Linear
|
3103 case GL_NEAREST_MIPMAP_NEAREST
:
3104 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Nearest
|
3105 HC_HTXnFLTs_Nearest
;
3106 vmesa
->regHTXnTB_1
|= HC_HTXnFLDs_Nearest
;
3108 case GL_LINEAR_MIPMAP_NEAREST
:
3109 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Linear
|
3111 vmesa
->regHTXnTB_1
|= HC_HTXnFLDs_Nearest
;
3113 case GL_NEAREST_MIPMAP_LINEAR
:
3114 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Nearest
|
3115 HC_HTXnFLTs_Nearest
;
3116 vmesa
->regHTXnTB_1
|= HC_HTXnFLDs_Linear
;
3118 case GL_LINEAR_MIPMAP_LINEAR
:
3119 vmesa
->regHTXnTB_1
= HC_HTXnFLSs_Linear
|
3121 vmesa
->regHTXnTB_1
|= HC_HTXnFLDs_Linear
;
3127 switch(texObj
->MagFilter
) {
3129 vmesa
->regHTXnTB_1
|= HC_HTXnFLSs_Nearest
|
3130 HC_HTXnFLTs_Nearest
;
3133 vmesa
->regHTXnTB_1
|= HC_HTXnFLSs_Linear
|
3138 if (texObj
->WrapS
== GL_REPEAT
)
3139 vmesa
->regHTXnMPMD_1
= HC_HTXnMPMD_Srepeat
;
3141 vmesa
->regHTXnMPMD_1
= HC_HTXnMPMD_Sclamp
;
3144 if (texObj
->WrapT
== GL_REPEAT
)
3145 vmesa
->regHTXnMPMD_1
|= HC_HTXnMPMD_Trepeat
;
3147 vmesa
->regHTXnMPMD_1
|= HC_HTXnMPMD_Tclamp
;
3150 switch (texUnit1
->EnvMode
) {
3152 switch (texImage
->Format
) {
3154 /* C = Cf, A = At*Af
3156 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3158 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3159 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
3160 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3161 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3162 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3163 HC_HTXnTBLCshift_No
;
3164 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3166 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3168 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3169 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
| HC_HTXnTBLAb_TOPA
|
3170 HC_HTXnTBLAb_Acur
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3171 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3172 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3173 vmesa
->regHTXnTBLRAa_1
= 0x0;
3174 vmesa
->regHTXnTBLRFog_1
= 0x0;
3177 /* C = Lt*Cf, A = Af
3179 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3181 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3182 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3183 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3184 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3185 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3186 HC_HTXnTBLCshift_No
;
3187 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3189 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3191 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3192 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3193 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3194 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3195 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3196 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3197 vmesa
->regHTXnTBLRAa_1
= 0x0;
3199 case GL_LUMINANCE_ALPHA
:
3200 /* C = Lt*Cf, A = At*Af
3202 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3204 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3205 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3206 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3207 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3208 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3209 HC_HTXnTBLCshift_No
;
3210 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3212 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3214 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3215 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3216 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3217 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3218 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3219 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3220 vmesa
->regHTXnTBLRAa_1
= 0x0;
3221 vmesa
->regHTXnTBLRFog_1
= 0x0;
3224 /* C = It*Cf, A = It*Af
3226 * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3228 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3229 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3230 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3231 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3232 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3233 HC_HTXnTBLCshift_No
;
3234 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3236 * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3238 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3239 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3240 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3241 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3242 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3243 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3244 vmesa
->regHTXnTBLRAa_1
= 0x0;
3245 vmesa
->regHTXnTBLRFog_1
= 0x0;
3248 /* C = Ct*Cf, A = Af
3250 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3252 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3253 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3254 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3255 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3256 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3257 HC_HTXnTBLCshift_No
;
3258 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3260 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3262 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3263 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3264 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3265 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3266 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3267 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3268 vmesa
->regHTXnTBLRAa_1
= 0x0;
3271 /* C = Ct*Cf, A = At*Af
3273 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3275 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3276 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3277 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3278 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3279 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3280 HC_HTXnTBLCshift_No
;
3281 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3283 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3285 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3286 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3287 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3288 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3289 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3290 HC_HTXnTBLAbias_HTXnTBLRAbias
3291 | HC_HTXnTBLAshift_No
;
3293 vmesa
->regHTXnTBLRAa_1
= 0x0;
3294 vmesa
->regHTXnTBLRFog_1
= 0x0;
3296 case GL_COLOR_INDEX
:
3297 switch (texObj
->Palette
.Format
) {
3299 /* C = Cf, A = At*Af
3301 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3303 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3304 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
3305 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3306 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3307 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3308 HC_HTXnTBLCshift_No
;
3309 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3311 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3313 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3314 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
| HC_HTXnTBLAb_TOPA
|
3315 HC_HTXnTBLAb_Acur
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3316 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3317 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3318 vmesa
->regHTXnTBLRAa_1
= 0x0;
3319 vmesa
->regHTXnTBLRFog_1
= 0x0;
3322 /* C = Lt*Cf, A = Af
3324 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3326 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3327 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3328 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3329 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3330 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3331 HC_HTXnTBLCshift_No
;
3332 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3334 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3336 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3337 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3338 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3339 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3340 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3341 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3342 vmesa
->regHTXnTBLRAa_1
= 0x0;
3344 case GL_LUMINANCE_ALPHA
:
3345 /* C = Lt*Cf, A = At*Af
3347 * Ca = Lt, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3349 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3350 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3351 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3352 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3353 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3354 HC_HTXnTBLCshift_No
;
3355 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3357 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3359 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3360 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3361 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3362 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3363 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3364 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3365 vmesa
->regHTXnTBLRAa_1
= 0x0;
3366 vmesa
->regHTXnTBLRFog_1
= 0x0;
3369 /* C = It*Cf, A = It*Af
3371 * Ca = It, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3373 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3374 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3375 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3376 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3377 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3378 HC_HTXnTBLCshift_No
;
3379 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3381 * Aa = It, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3383 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3384 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3385 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3386 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3387 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3388 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3389 vmesa
->regHTXnTBLRAa_1
= 0x0;
3390 vmesa
->regHTXnTBLRFog_1
= 0x0;
3393 /* C = Ct*Cf, A = Af
3395 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3397 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3398 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3399 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3400 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3401 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3402 HC_HTXnTBLCshift_No
;
3403 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3405 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3407 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3408 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3409 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3410 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3411 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3412 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3413 vmesa
->regHTXnTBLRAa_1
= 0x0;
3416 /* C = Ct*Cf, A = At*Af
3418 * Ca = Ct, Cb = Cf, Cop = +, Cc = 0, Cbias = 0, Cshift = No.
3420 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3421 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
| HC_HTXnTBLCb_TOPC
|
3422 HC_HTXnTBLCb_Cur
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3423 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3424 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
3425 HC_HTXnTBLCshift_No
;
3426 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3428 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3430 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3431 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3432 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3433 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3434 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3435 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3436 vmesa
->regHTXnTBLRAa_1
= 0x0;
3437 vmesa
->regHTXnTBLRFog_1
= 0x0;
3444 switch (texImage
->Format
) {
3447 case GL_LUMINANCE_ALPHA
:
3455 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
3457 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3458 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3459 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3460 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3461 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3462 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3463 HC_HTXnTBLCshift_No
;
3464 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3466 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3468 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3469 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3470 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3471 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3472 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3473 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3474 vmesa
->regHTXnTBLRAa_1
= 0x0;
3477 /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf
3479 * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3481 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3482 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Atex
|
3483 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_Tex
|
3484 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3485 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3486 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3487 HC_HTXnTBLCshift_No
;
3488 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3490 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3492 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3493 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3494 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3495 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3496 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3497 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3498 vmesa
->regHTXnTBLRAa_1
= 0x0;
3500 case GL_COLOR_INDEX
:
3501 switch (texObj
->Palette
.Format
) {
3504 case GL_LUMINANCE_ALPHA
:
3512 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
3514 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3515 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3516 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3517 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3518 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3519 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3520 HC_HTXnTBLCshift_No
;
3521 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3523 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3525 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3526 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3527 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3528 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3529 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3530 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3531 vmesa
->regHTXnTBLRAa_1
= 0x0;
3534 /* C = (1-At)*Cf+At*Ct, A = Af --> At*(Ct-Cf)+Cf
3536 * Ca = At, Cb = Ct, Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3538 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3539 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Atex
|
3540 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_Tex
|
3541 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3542 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3543 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3544 HC_HTXnTBLCshift_No
;
3545 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3547 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3549 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3550 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3551 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3552 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3553 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3554 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3555 vmesa
->regHTXnTBLRAa_1
= 0x0;
3562 switch (texImage
->Format
) {
3566 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3568 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3569 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3570 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3571 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3572 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3573 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3574 HC_HTXnTBLCshift_No
;
3575 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3577 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3579 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3580 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3581 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3582 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3583 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3584 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3585 vmesa
->regHTXnTBLRAa_1
= 0x0;
3588 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3589 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3590 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3591 /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf
3593 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3595 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3596 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3597 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3598 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3599 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3600 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3601 HC_HTXnTBLCshift_No
;
3602 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3603 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3605 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3607 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3608 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3609 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3610 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3611 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3612 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3613 vmesa
->regHTXnTBLRAa_1
= 0x0;
3615 case GL_LUMINANCE_ALPHA
:
3616 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3617 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3618 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3619 /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf
3621 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3623 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3624 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3625 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3626 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3627 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3628 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3629 HC_HTXnTBLCshift_No
;
3630 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3631 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3633 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3635 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3636 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3637 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3638 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3639 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3640 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3641 vmesa
->regHTXnTBLRAa_1
= 0x0;
3642 vmesa
->regHTXnTBLRFog_1
= 0x0;
3645 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3646 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3647 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3648 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3649 /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac
3650 * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af
3652 * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3654 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3655 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3656 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3657 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3658 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3659 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3660 HC_HTXnTBLCshift_No
;
3661 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3662 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3664 * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No.
3666 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3667 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3668 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3669 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Acur
;
3670 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Sub
|
3671 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3672 vmesa
->regHTXnTBLRAa_1
= (a
<< 8);
3675 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3676 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3677 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3678 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3679 /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf
3681 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3683 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3684 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3685 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3686 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3687 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3688 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3689 HC_HTXnTBLCshift_No
;
3690 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3691 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3693 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3695 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3696 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3697 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3698 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3699 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3700 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3701 vmesa
->regHTXnTBLRAa_1
= 0x0;
3704 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3705 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3706 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3707 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3708 /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf
3710 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3712 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3713 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3714 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3715 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3716 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3717 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3718 HC_HTXnTBLCshift_No
;
3719 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3720 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3722 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3724 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3725 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3726 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3727 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3728 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3729 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3730 vmesa
->regHTXnTBLRAa_1
= 0x0;
3731 vmesa
->regHTXnTBLRFog_1
= 0x0;
3733 case GL_COLOR_INDEX
:
3734 switch (texObj
->Palette
.Format
) {
3738 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3740 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3741 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3742 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3743 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3744 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3745 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3746 HC_HTXnTBLCshift_No
;
3747 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3749 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3751 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3752 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3753 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3754 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3755 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3756 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3757 vmesa
->regHTXnTBLRAa_1
= 0x0;
3760 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3761 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3762 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3763 /* C = (1-Lt)*Cf+Lt*Cc, A = Af --> Lt*(Cc-Cf)+Cf
3765 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3767 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3768 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3769 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3770 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3771 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3772 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3773 HC_HTXnTBLCshift_No
;
3774 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3775 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3777 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3779 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3780 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3781 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3782 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3783 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3784 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3785 vmesa
->regHTXnTBLRAa_1
= 0x0;
3787 case GL_LUMINANCE_ALPHA
:
3788 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3789 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3790 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3791 /* C = (1-Lt)*Cf+Lt*Cc, A = At*Af --> Lt*(Cc-Cf)+Cf
3793 * Ca = Lt, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3795 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3796 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3797 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3798 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3799 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3800 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3801 HC_HTXnTBLCshift_No
;
3802 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3803 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3805 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3807 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3808 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3809 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3810 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3811 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3812 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3813 vmesa
->regHTXnTBLRAa_1
= 0x0;
3814 vmesa
->regHTXnTBLRFog_1
= 0x0;
3817 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3818 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3819 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3820 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3821 /* C = (1-It)*Cf+It*Cc, A = (1-It)*Af+It*Ac
3822 * --> It*(Cc-Cf)+Cf, It*(Ac-Af)+Af
3824 * Ca = It, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3826 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3827 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3828 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3829 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3830 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3831 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3832 HC_HTXnTBLCshift_No
;
3833 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3834 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3836 * Aa = It, Ab = Ac(Reg), Cop = -, Ac = Af, Abias = Af, Ashift = No.
3838 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3839 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3840 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3841 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Acur
;
3842 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Sub
|
3843 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3844 vmesa
->regHTXnTBLRAa_1
= (a
<< 8);
3847 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3848 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3849 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3850 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3851 /* C = (1-Ct)*Cf+Ct*Cc, A = Af --> Ct*(Cc-Cf)+Cf
3853 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3855 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3856 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3857 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3858 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3859 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3860 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3861 HC_HTXnTBLCshift_No
;
3862 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3863 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3865 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3867 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3868 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3869 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3870 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3871 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3872 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3873 vmesa
->regHTXnTBLRAa_1
= 0x0;
3876 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
3877 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
3878 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
3879 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
3880 /* C = (1-Ct)*Cf+Ct*Cc, A = At*Af --> Ct*(Cc-Cf)+Cf
3882 * Ca = Ct, Cb = Cc(Reg), Cop = -, Cc = Cf, Cbias = Cf, Cshift = No.
3884 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3885 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_Tex
|
3886 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_HTXnTBLRC
|
3887 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Cur
;
3888 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Sub
|
3889 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3890 HC_HTXnTBLCshift_No
;
3891 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3892 vmesa
->regHTXnTBLRCb_1
= (r
<< 16) | (g
<< 8) | b
;
3894 * Aa = At, Ab = Af, Cop = +, Ac = 0, Abias = 0, Ashift = No.
3896 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3897 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
3898 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Acur
|
3899 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3900 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3901 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
3902 vmesa
->regHTXnTBLRAa_1
= 0x0;
3903 vmesa
->regHTXnTBLRFog_1
= 0x0;
3910 switch (texImage
->Format
) {
3914 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
3916 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3917 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3918 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3919 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3920 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3921 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
3922 HC_HTXnTBLCshift_No
;
3923 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3925 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
3927 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3928 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3929 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3930 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3931 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3932 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
3933 vmesa
->regHTXnTBLRAa_1
= 0x0;
3938 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
3940 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3941 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3942 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3943 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3944 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3945 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3946 HC_HTXnTBLCshift_No
;
3947 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3949 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
3951 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3952 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3953 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3954 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3955 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3956 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
3957 vmesa
->regHTXnTBLRAa_1
= 0x0;
3959 case GL_LUMINANCE_ALPHA
:
3962 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
3964 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3965 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3966 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3967 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3968 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3969 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3970 HC_HTXnTBLCshift_No
;
3971 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3973 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
3975 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
3976 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
3977 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
3978 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
3979 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
3980 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
3981 vmesa
->regHTXnTBLRAa_1
= 0x0;
3986 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No.
3988 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
3989 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
3990 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
3991 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
3992 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
3993 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
3994 HC_HTXnTBLCshift_No
;
3995 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
3997 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No.
3999 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4000 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4001 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4002 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4003 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4004 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4005 vmesa
->regHTXnTBLRAa_1
= 0x0;
4010 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
4012 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4013 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4014 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4015 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4016 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4017 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4018 HC_HTXnTBLCshift_No
;
4019 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4021 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
4023 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4024 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4025 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4026 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4027 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4028 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
4029 vmesa
->regHTXnTBLRAa_1
= 0x0;
4034 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
4036 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4037 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4038 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4039 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4040 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4041 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4042 HC_HTXnTBLCshift_No
;
4043 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4045 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
4047 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4048 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4049 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4050 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4051 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4052 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4053 vmesa
->regHTXnTBLRAa_1
= 0x0;
4055 case GL_COLOR_INDEX
:
4056 switch (texObj
->Palette
.Format
) {
4060 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Cf, Cshift = No.
4062 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4063 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4064 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4065 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4066 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4067 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Cur
|
4068 HC_HTXnTBLCshift_No
;
4069 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4071 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
4073 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4074 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4075 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4076 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4077 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4078 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4079 vmesa
->regHTXnTBLRAa_1
= 0x0;
4084 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
4086 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4087 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4088 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4089 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4090 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4091 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4092 HC_HTXnTBLCshift_No
;
4093 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4095 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
4097 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4098 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4099 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4100 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4101 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4102 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
4103 vmesa
->regHTXnTBLRAa_1
= 0x0;
4105 case GL_LUMINANCE_ALPHA
:
4108 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Lt, Cshift = No.
4110 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4111 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4112 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4113 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4114 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4115 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4116 HC_HTXnTBLCshift_No
;
4117 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4119 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
4121 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4122 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4123 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4124 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4125 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4126 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4127 vmesa
->regHTXnTBLRAa_1
= 0x0;
4132 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = It, Cshift = No.
4134 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4135 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4136 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4137 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4138 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4139 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4140 HC_HTXnTBLCshift_No
;
4141 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4143 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = It, Ashift = No.
4145 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4146 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4147 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4148 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4149 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4150 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4151 vmesa
->regHTXnTBLRAa_1
= 0x0;
4156 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
4158 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4159 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4160 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4161 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4162 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4163 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4164 HC_HTXnTBLCshift_No
;
4165 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4167 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = Af, Ashift = No.
4169 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4170 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4171 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4172 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4173 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4174 HC_HTXnTBLAbias_Acur
| HC_HTXnTBLAshift_No
;
4175 vmesa
->regHTXnTBLRAa_1
= 0x0;
4180 * Ca = 0, Cb = 0, Cop = +, Cc = 0, Cbias = Ct, Cshift = No.
4182 vmesa
->regHTXnTBLCsat_1
= HC_HTXnTBLCsat_MASK
|
4183 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4184 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4185 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4186 vmesa
->regHTXnTBLCop_1
= HC_HTXnTBLCop_Add
|
4187 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
|
4188 HC_HTXnTBLCshift_No
;
4189 vmesa
->regHTXnTBLMPfog_1
= HC_HTXnTBLMPfog_Fog
;
4191 * Aa = 0, Ab = 0, Cop = +, Ac = 0, Abias = At, Ashift = No.
4193 vmesa
->regHTXnTBLAsat_1
= HC_HTXnTBLAsat_MASK
|
4194 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4195 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4196 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4197 vmesa
->regHTXnTBLCop_1
|= HC_HTXnTBLAop_Add
|
4198 HC_HTXnTBLAbias_Atex
| HC_HTXnTBLAshift_No
;
4199 vmesa
->regHTXnTBLRAa_1
= 0x0;
4205 /*=* John Sheng [2003.7.18] texture combine *=*/
4207 switch (texUnit1
->Combine
.ModeRGB
) {
4209 switch (texUnit1
->Combine
.SourceRGB
[0]) {
4211 switch (texUnit1
->Combine
.OperandRGB
[0]) {
4213 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4214 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4215 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4216 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4217 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4218 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Tex
;
4219 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4221 case GL_ONE_MINUS_SRC_COLOR
:
4222 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4223 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4224 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4225 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4226 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4227 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Tex
;
4228 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4231 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4232 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4233 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4234 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4235 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4236 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Atex
;
4237 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4239 case GL_ONE_MINUS_SRC_ALPHA
:
4240 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4241 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4242 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4243 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4244 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4245 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Atex
;
4246 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4251 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4252 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4253 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4254 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4255 switch (texUnit1
->Combine
.OperandRGB
[0]) {
4257 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4258 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4259 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4260 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4261 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4262 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
4264 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4265 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4267 case GL_ONE_MINUS_SRC_COLOR
:
4268 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4269 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4270 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4271 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4272 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4273 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
4274 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4275 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4278 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4279 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4280 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4281 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4282 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4283 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
4284 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4285 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4287 case GL_ONE_MINUS_SRC_ALPHA
:
4288 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4289 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4290 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4291 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4292 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4293 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_HTXnTBLRC
;
4294 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4295 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4299 case GL_PRIMARY_COLOR
:
4300 switch (texUnit1
->Combine
.OperandRGB
[0]) {
4302 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4303 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4304 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4305 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4306 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4307 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
;
4308 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4310 case GL_ONE_MINUS_SRC_COLOR
:
4311 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4312 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4313 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4314 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4315 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4316 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Dif
;
4317 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4320 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4321 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4322 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4323 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4324 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4325 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Adif
;
4326 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4328 case GL_ONE_MINUS_SRC_ALPHA
:
4329 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4330 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4331 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4332 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4333 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4334 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Adif
;
4335 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4340 switch (texUnit1
->Combine
.OperandRGB
[0]) {
4342 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4343 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4344 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4345 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4346 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4347 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
;
4348 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4350 case GL_ONE_MINUS_SRC_COLOR
:
4351 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4352 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4353 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4354 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4355 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4356 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Dif
;
4357 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4360 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4361 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4362 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4363 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4364 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4365 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Adif
;
4366 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4368 case GL_ONE_MINUS_SRC_ALPHA
:
4369 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4370 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
|
4371 HC_HTXnTBLCb_TOPC
| HC_HTXnTBLCb_0
|
4372 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4373 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4374 HC_HTXnTBLCbias_InvCbias
| HC_HTXnTBLCbias_Adif
;
4375 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4380 switch ((GLint
)(texUnit1
->Combine
.ScaleShiftRGB
)) {
4382 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4385 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4388 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4394 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4395 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
4396 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4397 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4398 switch (texUnit1
->Combine
.OperandRGB
[0]) {
4400 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
4403 case GL_ONE_MINUS_SRC_COLOR
:
4404 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
4408 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
4411 case GL_ONE_MINUS_SRC_ALPHA
:
4412 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
4416 switch (texUnit1
->Combine
.OperandRGB
[1]) {
4418 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4421 case GL_ONE_MINUS_SRC_COLOR
:
4422 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4426 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4429 case GL_ONE_MINUS_SRC_ALPHA
:
4430 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4434 switch (texUnit1
->Combine
.SourceRGB
[0]) {
4436 if (AlphaCombine
[0]==0) {
4437 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
4440 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Atex
;
4444 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4445 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4446 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4447 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4448 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
4449 if (AlphaCombine
[0]==0) {
4450 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
4453 vmesa
->regHTXnTBLRCa_0
= (a
<< 16) | (a
<< 8) | a
;
4456 case GL_PRIMARY_COLOR
:
4457 if (AlphaCombine
[0]==0) {
4458 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
4461 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
4465 if (AlphaCombine
[0]==0) {
4466 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
4469 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
4473 switch (texUnit1
->Combine
.SourceRGB
[1]) {
4475 if (AlphaCombine
[1]==0) {
4476 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4479 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
4483 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4484 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4485 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4486 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4487 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
4488 if (AlphaCombine
[1]==0) {
4489 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4492 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4495 case GL_PRIMARY_COLOR
:
4496 if (AlphaCombine
[1]==0) {
4497 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4500 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4504 if (AlphaCombine
[1]==0) {
4505 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4508 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4512 switch ((GLint
)(texUnit1
->Combine
.ScaleShiftRGB
)) {
4514 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4517 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4520 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4526 if (texUnit1
->Combine
.ModeRGB
==GL_ADD
) {
4527 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
4528 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
4531 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
|
4532 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
;
4534 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4535 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
| HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
;
4536 vmesa
->regHTXnTBLRCa_0
= ( 255<<16 | 255<<8 |255 );
4537 switch (texUnit1
->Combine
.OperandRGB
[0]) {
4539 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4542 case GL_ONE_MINUS_SRC_COLOR
:
4543 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4547 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4550 case GL_ONE_MINUS_SRC_ALPHA
:
4551 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4555 switch (texUnit1
->Combine
.OperandRGB
[1]) {
4557 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_TOPC
;
4560 case GL_ONE_MINUS_SRC_COLOR
:
4561 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_InvTOPC
;
4565 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_TOPC
;
4568 case GL_ONE_MINUS_SRC_ALPHA
:
4569 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_InvTOPC
;
4573 switch (texUnit1
->Combine
.SourceRGB
[0]) {
4575 if (AlphaCombine
[0]==0) {
4576 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4579 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
4583 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4584 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4585 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4586 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4587 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
4588 if (AlphaCombine
[0]==0) {
4589 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4592 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4595 case GL_PRIMARY_COLOR
:
4597 if (AlphaCombine
[0]==0) {
4598 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4601 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4605 switch (texUnit1
->Combine
.SourceRGB
[1]) {
4607 if (AlphaCombine
[1]==0) {
4608 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Tex
;
4611 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Atex
;
4615 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4616 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4617 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4618 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4619 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_HTXnTBLRC
;
4620 if (AlphaCombine
[1]==0) {
4621 vmesa
->regHTXnTBLRCc_0
= (r
<< 16) | (g
<< 8) | b
;
4624 vmesa
->regHTXnTBLRCc_0
= (a
<< 16) | (a
<< 8) | a
;
4627 case GL_PRIMARY_COLOR
:
4629 if (AlphaCombine
[1]==0) {
4630 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Dif
;
4633 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Adif
;
4637 switch ((GLint
)(texUnit1
->Combine
.ScaleShiftRGB
)) {
4639 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4642 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4645 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4649 case GL_ADD_SIGNED
:
4650 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
;
4651 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4652 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4653 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
|
4654 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_HTXnTBLRC
;
4655 vmesa
->regHTXnTBLRCa_0
= ( 255<<16 | 255<<8 |255 );
4656 vmesa
->regHTXnTBLRCc_0
= ( 128<<16 | 128<<8 |128 );
4657 switch (texUnit1
->Combine
.OperandRGB
[0]) {
4659 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4662 case GL_ONE_MINUS_SRC_COLOR
:
4663 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4667 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4670 case GL_ONE_MINUS_SRC_ALPHA
:
4671 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4675 switch (texUnit1
->Combine
.OperandRGB
[1]) {
4677 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
4680 case GL_ONE_MINUS_SRC_COLOR
:
4681 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
4685 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
4688 case GL_ONE_MINUS_SRC_ALPHA
:
4689 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
4693 switch (texUnit1
->Combine
.SourceRGB
[0]) {
4695 if (AlphaCombine
[0]==0) {
4696 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4699 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
4703 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4704 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4705 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4706 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4707 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
4708 if (AlphaCombine
[0]==0) {
4709 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4712 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4715 case GL_PRIMARY_COLOR
:
4717 if (AlphaCombine
[0]==0) {
4718 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4721 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4725 switch (texUnit1
->Combine
.SourceRGB
[1]) {
4727 if (AlphaCombine
[1]==0) {
4728 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Tex
;
4731 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Atex
;
4735 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4736 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4737 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4738 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4739 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_HTXnTBLRC
;
4740 if (AlphaCombine
[1]==0) {
4741 vmesa
->regHTXnTBLRCbias_0
= (r
<< 16) | (g
<< 8) | b
;
4744 vmesa
->regHTXnTBLRCbias_0
= (a
<< 16) | (a
<< 8) | a
;
4747 case GL_PRIMARY_COLOR
:
4749 if (AlphaCombine
[1]==0) {
4750 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Dif
;
4753 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Adif
;
4757 switch ((GLint
)(texUnit1
->Combine
.ScaleShiftRGB
)) {
4759 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4762 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4765 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4769 case GL_INTERPOLATE
:
4770 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Sub
;
4771 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4772 switch (texUnit1
->Combine
.OperandRGB
[0]) {
4774 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_TOPC
;
4777 case GL_ONE_MINUS_SRC_COLOR
:
4778 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_InvTOPC
;
4782 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_TOPC
;
4785 case GL_ONE_MINUS_SRC_ALPHA
:
4786 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCb_InvTOPC
;
4790 switch (texUnit1
->Combine
.OperandRGB
[1]) {
4792 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_TOPC
;
4793 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
4796 case GL_ONE_MINUS_SRC_COLOR
:
4797 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_InvTOPC
;
4798 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
4802 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_TOPC
;
4803 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Cbias
;
4806 case GL_ONE_MINUS_SRC_ALPHA
:
4807 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCc_InvTOPC
;
4808 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_InvCbias
;
4812 switch (texUnit1
->Combine
.OperandRGB
[2]) {
4814 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_TOPC
;
4817 case GL_ONE_MINUS_SRC_COLOR
:
4818 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_InvTOPC
;
4822 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_TOPC
;
4825 case GL_ONE_MINUS_SRC_ALPHA
:
4826 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCa_InvTOPC
;
4830 switch (texUnit1
->Combine
.SourceRGB
[0]) {
4832 if (AlphaCombine
[0]==0) {
4833 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4836 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Atex
;
4840 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4841 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4842 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4843 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4844 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
4845 if (AlphaCombine
[0]==0) {
4846 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
4849 vmesa
->regHTXnTBLRCb_0
= (a
<< 16) | (a
<< 8) | a
;
4852 case GL_PRIMARY_COLOR
:
4854 if (AlphaCombine
[0]==0) {
4855 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
4858 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Adif
;
4862 switch (texUnit1
->Combine
.SourceRGB
[1]) {
4864 if (AlphaCombine
[0]==0) {
4865 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Tex
;
4866 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Tex
;
4869 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Atex
;
4870 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Atex
;
4874 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4875 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4876 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4877 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4878 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_HTXnTBLRC
;
4879 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_HTXnTBLRC
;
4880 if (AlphaCombine
[0]==0) {
4881 vmesa
->regHTXnTBLRCc_0
= (r
<< 16) | (g
<< 8) | b
;
4882 vmesa
->regHTXnTBLRCbias_0
= (r
<< 16) | (g
<< 8) | b
;
4885 vmesa
->regHTXnTBLRCc_0
= (a
<< 16) | (a
<< 8) | a
;
4886 vmesa
->regHTXnTBLRCbias_0
= (a
<< 16) | (a
<< 8) | a
;
4889 case GL_PRIMARY_COLOR
:
4891 if (AlphaCombine
[0]==0) {
4892 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Dif
;
4893 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Dif
;
4896 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCc_Adif
;
4897 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCbias_Adif
;
4901 switch (texUnit1
->Combine
.SourceRGB
[2]) {
4903 if (AlphaCombine
[0]==0) {
4904 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
4907 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Atex
;
4911 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4912 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4913 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4914 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
4915 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
4916 if (AlphaCombine
[0]==0) {
4917 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
4920 vmesa
->regHTXnTBLRCa_0
= (a
<< 16) | (a
<< 8) | a
;
4923 case GL_PRIMARY_COLOR
:
4925 if (AlphaCombine
[0]==0) {
4926 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
4929 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Adif
;
4933 switch ((GLint
)(texUnit1
->Combine
.ScaleShiftRGB
)) {
4935 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_No
;
4938 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_1
;
4941 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLCshift_2
;
4948 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLDOT4
| HC_HTXnTBLCop_Add
|
4949 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
4950 HC_HTXnTBLCshift_2
| HC_HTXnTBLAop_Add
|
4951 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
4952 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
4953 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
4954 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
4955 vmesa
->regHTXnTBLRFog_0
= 0x0;
4956 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
4957 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
4958 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
4959 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
4960 vmesa
->regHTXnTBLRAa_0
= 0x0;
4961 switch (texUnit1
->Combine
.OperandRGB
[0]) {
4963 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
4965 case GL_ONE_MINUS_SRC_COLOR
:
4966 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
4969 switch (texUnit1
->Combine
.OperandRGB
[1]) {
4971 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
4973 case GL_ONE_MINUS_SRC_COLOR
:
4974 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
4977 switch (texUnit1
->Combine
.SourceRGB
[0]) {
4979 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
4982 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4983 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
4984 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
4985 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
4986 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
4988 case GL_PRIMARY_COLOR
:
4990 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
4993 switch (texUnit1
->Combine
.SourceRGB
[1]) {
4995 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
4998 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
4999 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
5000 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
5001 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
5002 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
5004 case GL_PRIMARY_COLOR
:
5006 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
5012 switch (texUnit1
->Combine
.ModeA
) {
5014 switch (texUnit1
->Combine
.SourceA
[0]) {
5016 switch (texUnit1
->Combine
.OperandA
[0]) {
5018 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5019 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5020 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5021 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5022 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5023 HC_HTXnTBLAbias_Atex
;
5024 vmesa
->regHTXnTBLRAa_0
= 0x0;
5026 case GL_ONE_MINUS_SRC_ALPHA
:
5027 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5028 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5029 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5030 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5031 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5032 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_Atex
;
5033 vmesa
->regHTXnTBLRAa_0
= 0x0;
5038 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5039 switch (texUnit1
->Combine
.OperandA
[0]) {
5041 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5042 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5043 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5044 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5045 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5046 HC_HTXnTBLAbias_HTXnTBLRAbias
;
5047 vmesa
->regHTXnTBLRAa_0
= 0x0;
5048 vmesa
->regHTXnTBLRFog_0
= a
;
5050 case GL_ONE_MINUS_SRC_ALPHA
:
5051 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5052 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5053 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5054 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5055 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5056 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
5057 vmesa
->regHTXnTBLRAa_0
= 0x0;
5058 vmesa
->regHTXnTBLRFog_0
= a
;
5062 case GL_PRIMARY_COLOR
:
5064 switch (texUnit1
->Combine
.OperandA
[0]) {
5066 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5067 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5068 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5069 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5070 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5071 HC_HTXnTBLAbias_Adif
;
5072 vmesa
->regHTXnTBLRAa_0
= 0x0;
5074 case GL_ONE_MINUS_SRC_ALPHA
:
5075 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5076 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5077 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5078 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5079 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5080 HC_HTXnTBLAbias_Inv
| HC_HTXnTBLAbias_Adif
;
5081 vmesa
->regHTXnTBLRAa_0
= 0x0;
5086 switch ((GLint
)(texUnit1
->Combine
.ScaleShiftA
)) {
5088 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5091 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5094 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5099 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5100 HC_HTXnTBLAbias_HTXnTBLRAbias
;
5101 vmesa
->regHTXnTBLRFog_0
= 0x0;
5102 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5103 vmesa
->regHTXnTBLRAa_0
= 0x0;
5104 switch (texUnit1
->Combine
.OperandA
[0]) {
5106 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_TOPA
;
5108 case GL_ONE_MINUS_SRC_ALPHA
:
5109 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_InvTOPA
;
5112 switch (texUnit1
->Combine
.OperandA
[1]) {
5114 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
5116 case GL_ONE_MINUS_SRC_ALPHA
:
5117 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
5120 switch (texUnit1
->Combine
.SourceA
[0]) {
5122 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Atex
;
5125 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5126 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_HTXnTBLRA
;
5127 vmesa
->regHTXnTBLRAa_0
|= a
<<16;
5129 case GL_PRIMARY_COLOR
:
5131 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Adif
;
5134 switch (texUnit1
->Combine
.SourceA
[1]) {
5136 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
5139 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5140 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
5141 vmesa
->regHTXnTBLRAa_0
|= a
<<8;
5143 case GL_PRIMARY_COLOR
:
5145 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
5148 switch ((GLint
)(texUnit1
->Combine
.ScaleShiftA
)) {
5150 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5153 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5156 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5162 if(texUnit1
->Combine
.ModeA
==GL_ADD
) {
5163 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
5166 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
| HC_HTXnTBLAbias_HTXnTBLRAbias
;
5168 vmesa
->regHTXnTBLRFog_0
= 0;
5169 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
| HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
;
5170 vmesa
->regHTXnTBLRAa_0
= 0x0 | ( 255<<16 );
5171 switch (texUnit1
->Combine
.OperandA
[0]) {
5173 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
5175 case GL_ONE_MINUS_SRC_ALPHA
:
5176 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
5179 switch (texUnit1
->Combine
.OperandA
[1]) {
5181 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_TOPA
;
5183 case GL_ONE_MINUS_SRC_ALPHA
:
5184 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_InvTOPA
;
5187 switch (texUnit1
->Combine
.SourceA
[0]) {
5189 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
5192 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5193 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
5194 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
5196 case GL_PRIMARY_COLOR
:
5198 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
5201 switch (texUnit1
->Combine
.SourceA
[1]) {
5203 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Atex
;
5206 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5207 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_HTXnTBLRA
;
5208 vmesa
->regHTXnTBLRAa_0
|= a
;
5210 case GL_PRIMARY_COLOR
:
5212 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Adif
;
5215 switch ((GLint
)(texUnit1
->Combine
.ScaleShiftA
)) {
5217 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5220 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5223 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5227 case GL_ADD_SIGNED
:
5228 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
;
5229 vmesa
->regHTXnTBLRFog_0
= 0x0;
5230 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5231 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5232 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5233 vmesa
->regHTXnTBLRAa_0
= ( 255<<16 | 0<<8 |128 );
5234 switch (texUnit1
->Combine
.OperandA
[0]) {
5236 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_TOPA
;
5238 case GL_ONE_MINUS_SRC_ALPHA
:
5239 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_InvTOPA
;
5242 switch (texUnit1
->Combine
.OperandA
[1]) {
5245 case GL_ONE_MINUS_SRC_ALPHA
:
5246 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Inv
;
5249 switch (texUnit1
->Combine
.SourceA
[0]) {
5251 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
5254 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5255 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
5256 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
5258 case GL_PRIMARY_COLOR
:
5260 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
5263 switch (texUnit1
->Combine
.SourceA
[1]) {
5265 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Atex
;
5268 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5269 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_HTXnTBLRAbias
;
5270 vmesa
->regHTXnTBLRFog_0
|= a
;
5272 case GL_PRIMARY_COLOR
:
5274 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Adif
;
5277 switch ((GLint
)(texUnit1
->Combine
.ScaleShiftA
)) {
5279 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5282 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5285 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5289 case GL_INTERPOLATE
:
5290 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Sub
;
5291 vmesa
->regHTXnTBLRAa_0
= 0x0;
5292 vmesa
->regHTXnTBLRFog_0
= 0x0;
5293 switch (texUnit1
->Combine
.OperandA
[0]) {
5295 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAb_TOPA
;
5297 case GL_ONE_MINUS_SRC_ALPHA
:
5298 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAb_InvTOPA
;
5301 switch (texUnit1
->Combine
.OperandA
[1]) {
5303 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAc_TOPA
;
5305 case GL_ONE_MINUS_SRC_ALPHA
:
5306 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAc_InvTOPA
;
5307 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Inv
;
5310 switch (texUnit1
->Combine
.OperandA
[2]) {
5312 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAa_TOPA
;
5314 case GL_ONE_MINUS_SRC_ALPHA
:
5315 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAa_InvTOPA
;
5318 switch (texUnit1
->Combine
.SourceA
[0]) {
5320 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Atex
;
5323 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5324 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_HTXnTBLRA
;
5325 vmesa
->regHTXnTBLRAa_0
|= (a
<< 8);
5327 case GL_PRIMARY_COLOR
:
5329 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAb_Adif
;
5332 switch (texUnit1
->Combine
.SourceA
[1]) {
5334 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Atex
;
5335 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Atex
;
5338 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5339 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_HTXnTBLRA
;
5340 vmesa
->regHTXnTBLRAa_0
|= a
;
5341 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_HTXnTBLRAbias
;
5342 vmesa
->regHTXnTBLRFog_0
|= a
;
5344 case GL_PRIMARY_COLOR
:
5346 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAc_Adif
;
5347 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAbias_Adif
;
5350 switch (texUnit1
->Combine
.SourceA
[2]) {
5352 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Atex
;
5355 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[3], a
);
5356 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_HTXnTBLRA
;
5357 vmesa
->regHTXnTBLRAa_0
|= (a
<< 16);
5359 case GL_PRIMARY_COLOR
:
5361 vmesa
->regHTXnTBLAsat_0
|= HC_HTXnTBLAa_Adif
;
5364 switch (texUnit1
->Combine
.ScaleShiftA
) {
5366 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_No
;
5369 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_1
;
5372 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAshift_2
;
5382 /*=* John Sheng [2003.7.18] texture add *=*/
5384 switch(texImage
->Format
) {
5386 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5387 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
5388 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
5389 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5390 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
5391 HC_HTXnTBLCshift_No
;
5392 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5393 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5394 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
5395 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5396 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5397 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5398 vmesa
->regHTXnTBLRAa_0
= 0x0;
5399 vmesa
->regHTXnTBLRFog_0
= 0x0;
5402 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5403 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5404 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5405 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5406 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5407 HC_HTXnTBLCshift_No
;
5408 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5409 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5410 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5411 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5412 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5413 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5414 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5415 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
5416 vmesa
->regHTXnTBLRAa_0
= 0x0;
5418 case GL_LUMINANCE_ALPHA
:
5419 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5420 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5421 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5422 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5423 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5424 HC_HTXnTBLCshift_No
;
5425 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5426 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5427 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5428 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
5429 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
5430 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5431 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5432 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5433 vmesa
->regHTXnTBLRAa_0
= 0x0;
5434 vmesa
->regHTXnTBLRFog_0
= 0x0;
5437 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5438 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5439 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5440 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5441 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5442 HC_HTXnTBLCshift_No
;
5443 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5444 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5445 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5446 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5447 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Atex
|
5448 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
5449 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5450 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5451 /*=* John Sheng [2003.7.18] texenv *=*/
5452 /*vmesa->regHTXnTBLRAa_0 = 0x0;*/
5453 vmesa
->regHTXnTBLRAa_0
= (255<<16) | (255<<8) | 255;;
5454 vmesa
->regHTXnTBLRFog_0
= 0x0 | 255<<16;
5457 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5458 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5459 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5460 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5461 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5462 HC_HTXnTBLCshift_No
;
5463 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5464 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5465 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5466 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5467 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5468 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5469 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5470 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
5471 vmesa
->regHTXnTBLRAa_0
= 0x0;
5474 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5475 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5476 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5477 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5478 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5479 HC_HTXnTBLCshift_No
;
5480 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5481 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5482 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5483 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
5484 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
5485 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5486 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5487 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5488 vmesa
->regHTXnTBLRAa_0
= 0x0;
5489 vmesa
->regHTXnTBLRFog_0
= 0x0;
5491 case GL_COLOR_INDEX
:
5492 switch(texObj
->Palette
.Format
) {
5494 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5495 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_0
| HC_HTXnTBLCb_TOPC
|
5496 HC_HTXnTBLCb_0
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
5497 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5498 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_Dif
|
5499 HC_HTXnTBLCshift_No
;
5500 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5501 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5502 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Adif
| HC_HTXnTBLAb_TOPA
|
5503 HC_HTXnTBLAb_Atex
| HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5504 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5505 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5506 vmesa
->regHTXnTBLRAa_0
= 0x0;
5507 vmesa
->regHTXnTBLRFog_0
= 0x0;
5510 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5511 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5512 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5513 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5514 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5515 HC_HTXnTBLCshift_No
;
5516 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5517 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5518 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5519 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5520 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5521 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5522 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5523 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
5524 vmesa
->regHTXnTBLRAa_0
= 0x0;
5526 case GL_LUMINANCE_ALPHA
:
5527 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5528 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5529 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5530 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5531 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5532 HC_HTXnTBLCshift_No
;
5533 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5534 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5535 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5536 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
5537 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
5538 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5539 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5540 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5541 vmesa
->regHTXnTBLRAa_0
= 0x0;
5542 vmesa
->regHTXnTBLRFog_0
= 0x0;
5545 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5546 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5547 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5548 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5549 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5550 HC_HTXnTBLCshift_No
;
5551 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5552 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5553 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5554 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5555 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Atex
|
5556 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_Adif
;
5557 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5558 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5559 vmesa
->regHTXnTBLRAa_0
= 0x0;
5560 vmesa
->regHTXnTBLRFog_0
= 0x0 | 255<<16;
5563 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5564 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5565 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5566 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5567 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5568 HC_HTXnTBLCshift_No
;
5569 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5570 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5571 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5572 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5573 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5574 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5575 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5576 HC_HTXnTBLAbias_Adif
| HC_HTXnTBLAshift_No
;
5577 vmesa
->regHTXnTBLRAa_0
= 0x0;
5580 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5581 HC_HTXnTBLCa_TOPC
| HC_HTXnTBLCa_HTXnTBLRC
| HC_HTXnTBLCb_TOPC
|
5582 HC_HTXnTBLCb_Tex
| HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_Dif
;
5583 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLCop_Add
|
5584 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5585 HC_HTXnTBLCshift_No
;
5586 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5587 vmesa
->regHTXnTBLRCa_0
= (255<<16) | (255<<8) | 255;
5588 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5589 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_Atex
|
5590 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_Adif
|
5591 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5592 vmesa
->regHTXnTBLCop_0
|= HC_HTXnTBLAop_Add
|
5593 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5594 vmesa
->regHTXnTBLRAa_0
= 0x0;
5595 vmesa
->regHTXnTBLRFog_0
= 0x0;
5601 /*=* John Sheng [2003.7.18] texture dot3 *=*/
5604 vmesa
->regHTXnTBLCop_0
= HC_HTXnTBLDOT4
| HC_HTXnTBLCop_Add
|
5605 HC_HTXnTBLCbias_Cbias
| HC_HTXnTBLCbias_0
|
5606 HC_HTXnTBLCshift_2
| HC_HTXnTBLAop_Add
|
5607 HC_HTXnTBLAbias_HTXnTBLRAbias
| HC_HTXnTBLAshift_No
;
5608 vmesa
->regHTXnTBLMPfog_0
= HC_HTXnTBLMPfog_Fog
;
5609 vmesa
->regHTXnTBLCsat_0
= HC_HTXnTBLCsat_MASK
|
5610 HC_HTXnTBLCc_TOPC
| HC_HTXnTBLCc_0
;
5611 vmesa
->regHTXnTBLRFog_0
= 0x0;
5612 vmesa
->regHTXnTBLAsat_0
= HC_HTXnTBLAsat_MASK
|
5613 HC_HTXnTBLAa_TOPA
| HC_HTXnTBLAa_HTXnTBLRA
|
5614 HC_HTXnTBLAb_TOPA
| HC_HTXnTBLAb_HTXnTBLRA
|
5615 HC_HTXnTBLAc_TOPA
| HC_HTXnTBLAc_HTXnTBLRA
;
5616 vmesa
->regHTXnTBLRAa_0
= 0x0;
5617 switch (texUnit1
->Combine
.OperandRGB
[0]) {
5619 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_TOPC
;
5621 case GL_ONE_MINUS_SRC_COLOR
:
5622 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_InvTOPC
;
5625 switch (texUnit1
->Combine
.OperandRGB
[1]) {
5627 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_TOPC
;
5629 case GL_ONE_MINUS_SRC_COLOR
:
5630 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_InvTOPC
;
5633 switch (texUnit1
->Combine
.SourceRGB
[0]) {
5635 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Tex
;
5638 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
5639 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
5640 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
5641 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_HTXnTBLRC
;
5642 vmesa
->regHTXnTBLRCa_0
= (r
<< 16) | (g
<< 8) | b
;
5644 case GL_PRIMARY_COLOR
:
5646 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCa_Dif
;
5649 switch (texUnit1
->Combine
.SourceRGB
[1]) {
5651 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Tex
;
5654 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[0], r
);
5655 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[1], g
);
5656 CLAMPED_FLOAT_TO_UBYTE(texUnit1
->EnvColor
[2], b
);
5657 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_HTXnTBLRC
;
5658 vmesa
->regHTXnTBLRCb_0
= (r
<< 16) | (g
<< 8) | b
;
5660 case GL_PRIMARY_COLOR
:
5662 vmesa
->regHTXnTBLCsat_0
|= HC_HTXnTBLCb_Dif
;
5670 vmesa
->dirty
|= VIA_UPLOAD_TEXTURE
;
5673 if (ctx
->Fog
.Enabled
)
5674 vmesa
->regCmdB
&= (~(HC_HVPMSK_S
| HC_HVPMSK_T
));
5676 vmesa
->regCmdB
&= (~(HC_HVPMSK_S
| HC_HVPMSK_T
| HC_HVPMSK_W
));
5677 vmesa
->regEnable
&= (~(HC_HenTXMP_MASK
| HC_HenTXCH_MASK
| HC_HenTXPP_MASK
));
5678 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5681 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
5686 void viaChooseColorState(GLcontext
*ctx
)
5688 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
5689 GLenum s
= ctx
->Color
.BlendSrcRGB
;
5690 GLenum d
= ctx
->Color
.BlendDstRGB
;
5692 /* The HW's blending equation is:
5693 * (Ca * FCa + Cbias + Cb * FCb) << Cshift
5696 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
5699 if (ctx
->Color
.BlendEnabled
) {
5700 vmesa
->regEnable
|= HC_HenABL_MASK
;
5701 /* Ca -- always from source color.
5703 vmesa
->regHABLCsat
= HC_HABLCsat_MASK
| HC_HABLCa_OPC
|
5705 /* Aa -- always from source alpha.
5707 vmesa
->regHABLAsat
= HC_HABLAsat_MASK
| HC_HABLAa_OPA
|
5709 /* FCa -- depend on following condition.
5710 * FAa -- depend on following condition.
5716 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_HABLRCa
;
5717 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_HABLFRA
;
5718 vmesa
->regHABLRFCa
= 0x0;
5719 vmesa
->regHABLRAa
= 0x0;
5724 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_HABLRCa
;
5725 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_HABLFRA
;
5726 vmesa
->regHABLRFCa
= 0x0;
5727 vmesa
->regHABLRAa
= 0x0;
5732 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_Csrc
;
5733 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_Asrc
;
5735 case GL_ONE_MINUS_SRC_COLOR
:
5736 /* (1, 1, 1, 1) - (Rs, Gs, Bs, As)
5738 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_Csrc
;
5739 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_Asrc
;
5744 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_Cdst
;
5745 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_Adst
;
5747 case GL_ONE_MINUS_DST_COLOR
:
5748 /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad)
5750 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_Cdst
;
5751 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_Adst
;
5756 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_Asrc
;
5757 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_Asrc
;
5759 case GL_ONE_MINUS_SRC_ALPHA
:
5760 /* (1, 1, 1, 1) - (As, As, As, As)
5762 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_Asrc
;
5763 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_Asrc
;
5767 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5770 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_HABLRCa
;
5771 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_HABLFRA
;
5772 vmesa
->regHABLRFCa
= 0x0;
5773 vmesa
->regHABLRAa
= 0x0;
5778 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_Adst
;
5779 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_Adst
;
5783 case GL_ONE_MINUS_DST_ALPHA
:
5785 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5786 /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0)
5788 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_HABLRCa
;
5789 vmesa
->regHABLAsat
|= HC_HABLFAa_OPA
| HC_HABLFAa_HABLFRA
;
5790 vmesa
->regHABLRFCa
= 0x0;
5791 vmesa
->regHABLRAa
= 0x0;
5794 /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad)
5796 vmesa
->regHABLCsat
|= HC_HABLFCa_InvOPC
| HC_HABLFCa_Adst
;
5797 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_Adst
;
5801 case GL_SRC_ALPHA_SATURATE
:
5803 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5804 /* (f, f, f, 1), f = min(As, 1 - Ad) = min(As, 1 - 1) = 0
5805 * So (f, f, f, 1) = (0, 0, 0, 1)
5807 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_HABLRCa
;
5808 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_HABLFRA
;
5809 vmesa
->regHABLRFCa
= 0x0;
5810 vmesa
->regHABLRAa
= 0x0;
5813 /* (f, f, f, 1), f = min(As, 1 - Ad)
5815 vmesa
->regHABLCsat
|= HC_HABLFCa_OPC
| HC_HABLFCa_mimAsrcInvAdst
;
5816 vmesa
->regHABLAsat
|= HC_HABLFAa_InvOPA
| HC_HABLFAa_HABLFRA
;
5817 vmesa
->regHABLRFCa
= 0x0;
5818 vmesa
->regHABLRAa
= 0x0;
5829 vmesa
->regHABLCsat
|= HC_HABLCbias_HABLRCbias
;
5830 vmesa
->regHABLAsat
|= HC_HABLAbias_HABLRAbias
;
5832 /* Cb -- always from destination color.
5834 vmesa
->regHABLCop
= HC_HABLCb_OPC
| HC_HABLCb_Cdst
;
5835 /* Ab -- always from destination alpha.
5837 vmesa
->regHABLAop
= HC_HABLAb_OPA
| HC_HABLAb_Adst
;
5838 /* FCb -- depend on following condition.
5844 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_HABLRCb
;
5845 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_HABLFRA
;
5846 vmesa
->regHABLRFCb
= 0x0;
5847 vmesa
->regHABLRAb
= 0x0;
5852 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_HABLRCb
;
5853 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_HABLFRA
;
5854 vmesa
->regHABLRFCb
= 0x0;
5855 vmesa
->regHABLRAb
= 0x0;
5860 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_Csrc
;
5861 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_Asrc
;
5863 case GL_ONE_MINUS_SRC_COLOR
:
5864 /* (1, 1, 1, 1) - (Rs, Gs, Bs, As)
5866 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_Csrc
;
5867 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_Asrc
;
5872 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_Cdst
;
5873 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_Adst
;
5875 case GL_ONE_MINUS_DST_COLOR
:
5876 /* (1, 1, 1, 1) - (Rd, Gd, Bd, Ad)
5878 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_Cdst
;
5879 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_Adst
;
5884 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_Asrc
;
5885 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_Asrc
;
5887 case GL_ONE_MINUS_SRC_ALPHA
:
5888 /* (1, 1, 1, 1) - (As, As, As, As)
5890 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_Asrc
;
5891 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_Asrc
;
5895 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5898 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_HABLRCb
;
5899 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_HABLFRA
;
5900 vmesa
->regHABLRFCb
= 0x0;
5901 vmesa
->regHABLRAb
= 0x0;
5906 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_Adst
;
5907 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_Adst
;
5911 case GL_ONE_MINUS_DST_ALPHA
:
5913 if (vmesa
->viaScreen
->bitsPerPixel
== 16) {
5914 /* (1, 1, 1, 1) - (1, 1, 1, 1) = (0, 0, 0, 0)
5916 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_HABLRCb
;
5917 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_HABLFRA
;
5918 vmesa
->regHABLRFCb
= 0x0;
5919 vmesa
->regHABLRAb
= 0x0;
5922 /* (1, 1, 1, 1) - (Ad, Ad, Ad, Ad)
5924 vmesa
->regHABLCop
|= HC_HABLFCb_InvOPC
| HC_HABLFCb_Adst
;
5925 vmesa
->regHABLAop
|= HC_HABLFAb_InvOPA
| HC_HABLFAb_Adst
;
5930 vmesa
->regHABLCop
|= HC_HABLFCb_OPC
| HC_HABLFCb_HABLRCb
;
5931 vmesa
->regHABLAop
|= HC_HABLFAb_OPA
| HC_HABLFAb_HABLFRA
;
5932 vmesa
->regHABLRFCb
= 0x0;
5933 vmesa
->regHABLRAb
= 0x0;
5937 if (vmesa
->viaScreen
->bitsPerPixel
<= 16)
5938 vmesa
->regEnable
&= ~HC_HenDT_MASK
;
5940 vmesa
->dirty
|= (VIA_UPLOAD_BLEND
| VIA_UPLOAD_ENABLE
);
5943 vmesa
->regEnable
&= (~HC_HenABL_MASK
);
5944 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5947 if (ctx
->Color
.AlphaEnabled
) {
5948 vmesa
->regEnable
|= HC_HenAT_MASK
;
5949 vmesa
->regHATMD
= (((GLchan
)ctx
->Color
.AlphaRef
) & 0xFF) |
5950 ((ctx
->Color
.AlphaFunc
- GL_NEVER
) << 8);
5951 vmesa
->dirty
|= (VIA_UPLOAD_ALPHATEST
| VIA_UPLOAD_ENABLE
);
5954 vmesa
->regEnable
&= (~HC_HenAT_MASK
);
5955 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5958 if (ctx
->Color
.DitherFlag
&& (vmesa
->viaScreen
->bitsPerPixel
< 32)) {
5959 if (ctx
->Color
.BlendEnabled
) {
5960 vmesa
->regEnable
&= ~HC_HenDT_MASK
;
5963 vmesa
->regEnable
|= HC_HenDT_MASK
;
5965 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5968 if (ctx
->Color
.ColorLogicOpEnabled
)
5969 vmesa
->regHROP
= ROP
[ctx
->Color
.LogicOp
& 0xF];
5971 vmesa
->regHROP
= HC_HROP_P
;
5973 vmesa
->regHFBBMSKL
= (*(GLuint
*)&ctx
->Color
.ColorMask
[0]) & 0xFFFFFF;
5974 vmesa
->regHROP
|= ((*(GLuint
*)&ctx
->Color
.ColorMask
[0]) >> 24) & 0xFF;
5975 vmesa
->dirty
|= VIA_UPLOAD_MASK_ROP
;
5977 if ((GLuint
)((GLuint
*)&ctx
->Color
.ColorMask
[0]) & 0xFF000000)
5978 vmesa
->regEnable
|= HC_HenAW_MASK
;
5980 vmesa
->regEnable
&= (~HC_HenAW_MASK
);
5981 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
5983 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
5987 void viaChooseFogState(GLcontext
*ctx
)
5989 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
5991 if (ctx
->Fog
.Enabled
) {
5994 vmesa
->regCmdB
|= (HC_HVPMSK_Cd
| HC_HVPMSK_Cs
| HC_HVPMSK_W
);
5995 vmesa
->regEnable
|= HC_HenFOG_MASK
;
5997 /* Use fog equation 0 (OpenGL's default) & local fog.
5999 vmesa
->regHFogLF
= 0x0;
6001 r
= (GLubyte
)(ctx
->Fog
.Color
[0] * 255.0F
);
6002 g
= (GLubyte
)(ctx
->Fog
.Color
[1] * 255.0F
);
6003 b
= (GLubyte
)(ctx
->Fog
.Color
[2] * 255.0F
);
6004 a
= (GLubyte
)(ctx
->Fog
.Color
[3] * 255.0F
);
6005 vmesa
->regHFogCL
= (r
<< 16) | (g
<< 8) | b
;
6006 vmesa
->regHFogCH
= a
;
6007 vmesa
->dirty
|= (VIA_UPLOAD_FOG
| VIA_UPLOAD_ENABLE
);
6010 if (!ctx
->Texture
._EnabledUnits
) {
6011 vmesa
->regCmdB
&= ~ HC_HVPMSK_W
;
6012 vmesa
->regCmdB
&= ~ HC_HVPMSK_Cs
;
6014 vmesa
->regEnable
&= ~HC_HenFOG_MASK
;
6015 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6019 void viaChooseDepthState(GLcontext
*ctx
)
6021 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6022 if (ctx
->Depth
.Test
) {
6023 vmesa
->regCmdB
|= HC_HVPMSK_Z
;
6024 vmesa
->regEnable
|= HC_HenZT_MASK
;
6025 if (ctx
->Depth
.Mask
)
6026 vmesa
->regEnable
|= HC_HenZW_MASK
;
6028 vmesa
->regEnable
&= (~HC_HenZW_MASK
);
6029 vmesa
->regHZWTMD
= (ctx
->Depth
.Func
- GL_NEVER
) << 16;
6030 vmesa
->dirty
|= (VIA_UPLOAD_DEPTH
| VIA_UPLOAD_ENABLE
);
6034 /* Still need to send parameter Z.
6037 vmesa
->regCmdB
|= HC_HVPMSK_Z
;
6038 vmesa
->regEnable
&= ~HC_HenZT_MASK
;
6040 /*=* [DBG] racer : can't display cars in car selection menu *=*/
6041 /*if (ctx->Depth.Mask)
6042 vmesa->regEnable |= HC_HenZW_MASK;
6044 vmesa->regEnable &= (~HC_HenZW_MASK);*/
6045 vmesa
->regEnable
&= (~HC_HenZW_MASK
);
6047 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6051 void viaChooseLightState(GLcontext
*ctx
)
6053 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6055 if (ctx
->Light
.ShadeModel
== GL_SMOOTH
) {
6056 vmesa
->regCmdA
|= HC_HShading_Gouraud
;
6057 vmesa
->regCmdB
|= HC_HVPMSK_Cd
;
6060 vmesa
->regCmdA
&= ~HC_HShading_Gouraud
;
6061 vmesa
->regCmdB
|= HC_HVPMSK_Cd
;
6065 void viaChooseLineState(GLcontext
*ctx
)
6067 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6069 if (ctx
->Line
.SmoothFlag
) {
6070 vmesa
->regEnable
|= HC_HenAA_MASK
;
6073 if (!ctx
->Polygon
.SmoothFlag
) {
6074 vmesa
->regEnable
&= ~HC_HenAA_MASK
;
6078 if (ctx
->Line
.StippleFlag
) {
6079 vmesa
->regEnable
|= HC_HenLP_MASK
;
6080 vmesa
->regHLP
= ctx
->Line
.StipplePattern
;
6081 vmesa
->regHLPRF
= ctx
->Line
.StippleFactor
;
6082 vmesa
->dirty
|= VIA_UPLOAD_LINESTIPPLE
;
6085 vmesa
->regEnable
&= ~HC_HenLP_MASK
;
6087 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6090 void viaChoosePolygonState(GLcontext
*ctx
)
6092 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6094 if (ctx
->Polygon
.SmoothFlag
) {
6095 vmesa
->regEnable
|= HC_HenAA_MASK
;
6098 if (!ctx
->Line
.SmoothFlag
) {
6099 vmesa
->regEnable
&= ~HC_HenAA_MASK
;
6103 if (ctx
->Polygon
.StippleFlag
) {
6104 vmesa
->regEnable
|= HC_HenSP_MASK
;
6105 vmesa
->dirty
|= VIA_UPLOAD_POLYGONSTIPPLE
;
6108 vmesa
->regEnable
&= ~HC_HenSP_MASK
;
6111 if (ctx
->Polygon
.CullFlag
) {
6112 vmesa
->regEnable
|= HC_HenFBCull_MASK
;
6115 vmesa
->regEnable
&= ~HC_HenFBCull_MASK
;
6117 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6120 void viaChooseStencilState(GLcontext
*ctx
)
6122 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6124 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
6127 if (ctx
->Stencil
.Enabled
) {
6130 vmesa
->regEnable
|= HC_HenST_MASK
;
6131 temp
= (ctx
->Stencil
.Ref
[0] & 0xFF) << HC_HSTREF_SHIFT
;
6132 temp
|= 0xFF << HC_HSTOPMSK_SHIFT
;
6133 temp
|= (ctx
->Stencil
.ValueMask
[0] & 0xFF);
6134 vmesa
->regHSTREF
= temp
;
6136 temp
= (ctx
->Stencil
.Function
[0] - GL_NEVER
) << 16;
6138 switch (ctx
->Stencil
.FailFunc
[0]) {
6140 temp
|= HC_HSTOPSF_KEEP
;
6143 temp
|= HC_HSTOPSF_ZERO
;
6146 temp
|= HC_HSTOPSF_REPLACE
;
6149 temp
|= HC_HSTOPSF_INVERT
;
6152 temp
|= HC_HSTOPSF_INCR
;
6155 temp
|= HC_HSTOPSF_DECR
;
6159 switch (ctx
->Stencil
.ZFailFunc
[0]) {
6161 temp
|= HC_HSTOPSPZF_KEEP
;
6164 temp
|= HC_HSTOPSPZF_ZERO
;
6167 temp
|= HC_HSTOPSPZF_REPLACE
;
6170 temp
|= HC_HSTOPSPZF_INVERT
;
6173 temp
|= HC_HSTOPSPZF_INCR
;
6176 temp
|= HC_HSTOPSPZF_DECR
;
6180 switch (ctx
->Stencil
.ZPassFunc
[0]) {
6182 temp
|= HC_HSTOPSPZP_KEEP
;
6185 temp
|= HC_HSTOPSPZP_ZERO
;
6188 temp
|= HC_HSTOPSPZP_REPLACE
;
6191 temp
|= HC_HSTOPSPZP_INVERT
;
6194 temp
|= HC_HSTOPSPZP_INCR
;
6197 temp
|= HC_HSTOPSPZP_DECR
;
6200 vmesa
->regHSTMD
= temp
;
6202 vmesa
->dirty
|= (VIA_UPLOAD_STENCIL
| VIA_UPLOAD_STENCIL
);
6205 vmesa
->regEnable
&= ~HC_HenST_MASK
;
6206 vmesa
->dirty
|= VIA_UPLOAD_ENABLE
;
6209 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
6213 void viaChoosePoint(GLcontext
*ctx
)
6218 void viaChooseLine(GLcontext
*ctx
)
6223 void viaChooseTriangle(GLcontext
*ctx
)
6225 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6227 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
6229 if (VIA_DEBUG
) fprintf(stderr
, "GL_CULL_FACE = %x\n", GL_CULL_FACE
);
6230 if (VIA_DEBUG
) fprintf(stderr
, "ctx->Polygon.CullFlag = %x\n", ctx
->Polygon
.CullFlag
);
6232 if (VIA_DEBUG
) fprintf(stderr
, "GL_FRONT = %x\n", GL_FRONT
);
6233 if (VIA_DEBUG
) fprintf(stderr
, "ctx->Polygon.CullFaceMode = %x\n", ctx
->Polygon
.CullFaceMode
);
6234 if (VIA_DEBUG
) fprintf(stderr
, "GL_CCW = %x\n", GL_CCW
);
6235 if (VIA_DEBUG
) fprintf(stderr
, "ctx->Polygon.FrontFace = %x\n", ctx
->Polygon
.FrontFace
);
6237 if (ctx
->Polygon
.CullFlag
== GL_TRUE
) {
6238 switch (ctx
->Polygon
.CullFaceMode
) {
6240 if (ctx
->Polygon
.FrontFace
== GL_CCW
)
6241 vmesa
->regCmdB
|= HC_HBFace_MASK
;
6243 vmesa
->regCmdB
&= ~HC_HBFace_MASK
;
6246 if (ctx
->Polygon
.FrontFace
== GL_CW
)
6247 vmesa
->regCmdB
|= HC_HBFace_MASK
;
6249 vmesa
->regCmdB
&= ~HC_HBFace_MASK
;
6251 case GL_FRONT_AND_BACK
:
6256 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
6260 static void viaChooseState(GLcontext
*ctx
, GLuint newState
)
6262 viaContextPtr vmesa
= VIA_CONTEXT(ctx
);
6263 struct gl_texture_unit
*texUnit0
= &ctx
->Texture
.Unit
[0];
6264 struct gl_texture_unit
*texUnit1
= &ctx
->Texture
.Unit
[1];
6266 if (VIA_DEBUG
) fprintf(stderr
, "%s - in\n", __FUNCTION__
);
6268 if (VIA_DEBUG
) fprintf(stderr
, "newState = %x\n", newState
);
6270 if (!(newState
& (_NEW_COLOR
|
6277 _NEW_POLYGONSTIPPLE
|
6282 vmesa
->newState
= newState
;
6284 if (texUnit0
->_ReallyEnabled
|| texUnit1
->_ReallyEnabled
|| ctx
->Fog
.Enabled
) {
6285 vmesa
->regCmdB
|= HC_HVPMSK_Cs
;
6288 vmesa
->regCmdB
&= ~ HC_HVPMSK_Cs
;
6291 if (newState
& _NEW_TEXTURE
)
6292 viaChooseTextureState(ctx
);
6294 if (newState
& _NEW_COLOR
)
6295 viaChooseColorState(ctx
);
6297 if (newState
& _NEW_DEPTH
)
6298 viaChooseDepthState(ctx
);
6300 if (newState
& _NEW_FOG
)
6301 viaChooseFogState(ctx
);
6303 if (newState
& _NEW_LIGHT
)
6304 viaChooseLightState(ctx
);
6306 if (newState
& _NEW_LINE
)
6307 viaChooseLineState(ctx
);
6309 if (newState
& (_NEW_POLYGON
| _NEW_POLYGONSTIPPLE
))
6310 viaChoosePolygonState(ctx
);
6312 if (newState
& _NEW_STENCIL
)
6313 viaChooseStencilState(ctx
);
6315 viaChooseTriangle(ctx
);
6318 if (VIA_DEBUG
) fprintf(stderr
, "%s - out\n", __FUNCTION__
);
6322 static void viaInvalidateState(GLcontext
*ctx
, GLuint newState
)
6324 _swrast_InvalidateState(ctx
, newState
);
6325 _swsetup_InvalidateState(ctx
, newState
);
6326 _ac_InvalidateState(ctx
, newState
);
6327 _tnl_InvalidateState(ctx
, newState
);
6328 viaChooseState(ctx
, newState
);
6331 void viaInitStateFuncs(GLcontext
*ctx
)
6333 /* Callbacks for internal Mesa events.
6335 ctx
->Driver
.UpdateState
= viaInvalidateState
;
6339 ctx
->Driver
.AlphaFunc
= viaAlphaFunc
;
6340 ctx
->Driver
.BlendEquationSeparate
= viaBlendEquationSeparate
;
6341 ctx
->Driver
.BlendFuncSeparate
= viaBlendFuncSeparate
;
6342 ctx
->Driver
.ClearColor
= viaClearColor
;
6343 ctx
->Driver
.ColorMask
= viaColorMask
;
6344 ctx
->Driver
.CullFace
= viaCullFaceFrontFace
;
6345 ctx
->Driver
.DepthFunc
= viaDepthFunc
;
6346 ctx
->Driver
.DepthMask
= viaDepthMask
;
6347 ctx
->Driver
.DrawBuffer
= viaDrawBuffer
;
6348 ctx
->Driver
.Enable
= viaEnable
;
6349 ctx
->Driver
.Fogfv
= viaFogfv
;
6350 ctx
->Driver
.FrontFace
= viaCullFaceFrontFace
;
6351 ctx
->Driver
.LineWidth
= viaLineWidth
;
6352 ctx
->Driver
.LogicOpcode
= viaLogicOp
;
6353 ctx
->Driver
.PolygonStipple
= viaPolygonStipple
;
6354 ctx
->Driver
.RenderMode
= viaRenderMode
;
6355 ctx
->Driver
.Scissor
= viaScissor
;
6356 ctx
->Driver
.ShadeModel
= viaShadeModel
;
6357 ctx
->Driver
.DepthRange
= viaDepthRange
;
6358 ctx
->Driver
.Viewport
= viaViewport
;
6359 ctx
->Driver
.PointSize
= viaPointSize
;
6360 ctx
->Driver
.LightModelfv
= viaLightModelfv
;
6362 /* Pixel path fallbacks.
6364 ctx
->Driver
.Accum
= _swrast_Accum
;
6365 ctx
->Driver
.Bitmap
= viaBitmap
;
6367 ctx
->Driver
.CopyPixels
= _swrast_CopyPixels
;
6368 ctx
->Driver
.DrawPixels
= _swrast_DrawPixels
;
6369 ctx
->Driver
.ReadPixels
= _swrast_ReadPixels
;
6370 ctx
->Driver
.ResizeBuffers
= viaReAllocateBuffers
;
6372 /* Swrast hooks for imaging extensions:
6374 ctx
->Driver
.CopyColorTable
= _swrast_CopyColorTable
;
6375 ctx
->Driver
.CopyColorSubTable
= _swrast_CopyColorSubTable
;
6376 ctx
->Driver
.CopyConvolutionFilter1D
= _swrast_CopyConvolutionFilter1D
;
6377 ctx
->Driver
.CopyConvolutionFilter2D
= _swrast_CopyConvolutionFilter2D
;