1 /* $Id: fxglidew.c,v 1.3 1999/10/05 19:26:54 miklos Exp $ */
4 * Mesa 3-D graphics library
7 * Copyright (C) 1999 Brian Paul All Rights Reserved.
9 * Permission is hereby granted, free of charge, to any person obtaining a
10 * copy of this software and associated documentation files (the "Software"),
11 * to deal in the Software without restriction, including without limitation
12 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 * and/or sell copies of the Software, and to permit persons to whom the
14 * Software is furnished to do so, subject to the following conditions:
16 * The above copyright notice and this permission notice shall be included
17 * in all copies or substantial portions of the Software.
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
40 FxI32
FX_grGetInteger(FxU32 pname
)
42 #if !defined(FX_GLIDE3)
45 case FX_FOG_TABLE_ENTRIES
:
46 return GR_FOG_TABLE_SIZE
;
47 case FX_GLIDE_STATE_SIZE
:
48 return sizeof(GrState
);
49 case FX_LFB_PIXEL_PIPE
:
51 case FX_PENDING_BUFFERSWAPS
:
52 return grBufferNumPending();
54 if (MESA_VERBOSE
&VERBOSE_DRIVER
) {
55 fprintf(stderr
,"Wrong parameter in FX_grGetInteger!\n");
65 case FX_FOG_TABLE_ENTRIES
:
66 case FX_GLIDE_STATE_SIZE
:
67 case FX_LFB_PIXEL_PIPE
:
68 case FX_PENDING_BUFFERSWAPS
:
72 if (MESA_VERBOSE
&VERBOSE_DRIVER
) {
73 fprintf(stderr
,"Wrong parameter in FX_grGetInteger!\n");
78 grGet(grname
,4,&result
);
85 #if defined(FX_GLIDE3)
87 void FX_grGammaCorrectionValue(float val
)
93 void FX_grSstControl(int par
)
98 int FX_getFogTableSize(void)
101 grGet(GR_FOG_TABLE_ENTRIES
,sizeof(int),(void*)&result
);
105 int FX_getGrStateSize(void)
108 grGet(GR_GLIDE_STATE_SIZE
,sizeof(int),(void*)&result
);
113 int FX_grBufferNumPending()
116 grGet(GR_PENDING_BUFFERSWAPS
,sizeof(int),(void*)&result
);
121 int FX_grSstScreenWidth()
125 grGet(GR_VIEWPORT
,sizeof(FxI32
)*4,result
);
130 int FX_grSstScreenHeight()
134 grGet(GR_VIEWPORT
,sizeof(FxI32
)*4,result
);
139 void FX_grGlideGetVersion(char *buf
)
141 strcpy(buf
,grGetString(GR_VERSION
));
144 void FX_grSstPerfStats(GrSstPerfStats_t
*st
)
154 void FX_grAADrawLine(GrVertex
*a
,GrVertex
*b
)
159 void FX_grAADrawPoint(GrVertex
*a
)
165 void FX_setupGrVertexLayout(void)
167 grReset(GR_VERTEX_PARAMETER
);
169 grCoordinateSpace(GR_WINDOW_COORDS
);
170 grVertexLayout(GR_PARAM_XY
, GR_VERTEX_X_OFFSET
<< 2, GR_PARAM_ENABLE
);
171 grVertexLayout(GR_PARAM_PARGB
, GR_VERTEX_PARGB_OFFSET
<< 2, GR_PARAM_ENABLE
);
172 grVertexLayout(GR_PARAM_Q
, GR_VERTEX_OOW_OFFSET
<< 2, GR_PARAM_ENABLE
);
173 grVertexLayout(GR_PARAM_Z
, GR_VERTEX_OOZ_OFFSET
<< 2, GR_PARAM_ENABLE
);
174 grVertexLayout(GR_PARAM_ST0
, GR_VERTEX_SOW_TMU0_OFFSET
<< 2, GR_PARAM_ENABLE
);
175 grVertexLayout(GR_PARAM_Q0
, GR_VERTEX_OOW_TMU0_OFFSET
<< 2, GR_PARAM_DISABLE
);
176 grVertexLayout(GR_PARAM_ST1
, GR_VERTEX_SOW_TMU1_OFFSET
<< 2, GR_PARAM_DISABLE
);
177 grVertexLayout(GR_PARAM_Q1
, GR_VERTEX_OOW_TMU1_OFFSET
<< 2, GR_PARAM_DISABLE
);
179 #else /* FX_USE_PARGB */
180 void FX_setupGrVertexLayout(void)
182 grReset(GR_VERTEX_PARAMETER
);
184 grCoordinateSpace(GR_WINDOW_COORDS
);
185 grVertexLayout(GR_PARAM_XY
, GR_VERTEX_X_OFFSET
<< 2, GR_PARAM_ENABLE
);
186 grVertexLayout(GR_PARAM_RGB
, GR_VERTEX_R_OFFSET
<< 2, GR_PARAM_ENABLE
);
187 /* grVertexLayout(GR_PARAM_Z, GR_VERTEX_Z_OFFSET << 2, GR_PARAM_ENABLE); */
188 grVertexLayout(GR_PARAM_A
, GR_VERTEX_A_OFFSET
<< 2, GR_PARAM_ENABLE
);
189 grVertexLayout(GR_PARAM_Q
, GR_VERTEX_OOW_OFFSET
<< 2, GR_PARAM_ENABLE
);
190 grVertexLayout(GR_PARAM_Z
, GR_VERTEX_OOZ_OFFSET
<< 2, GR_PARAM_ENABLE
);
191 grVertexLayout(GR_PARAM_ST0
, GR_VERTEX_SOW_TMU0_OFFSET
<< 2, GR_PARAM_ENABLE
);
192 grVertexLayout(GR_PARAM_Q0
, GR_VERTEX_OOW_TMU0_OFFSET
<< 2, GR_PARAM_DISABLE
);
193 grVertexLayout(GR_PARAM_ST1
, GR_VERTEX_SOW_TMU1_OFFSET
<< 2, GR_PARAM_DISABLE
);
194 grVertexLayout(GR_PARAM_Q1
, GR_VERTEX_OOW_TMU1_OFFSET
<< 2, GR_PARAM_DISABLE
);
198 void FX_grHints(GrHint_t hintType
, FxU32 hintMask
)
201 case GR_HINT_STWHINT
:
203 if (hintMask
& GR_STWHINT_W_DIFF_TMU0
)
204 grVertexLayout(GR_PARAM_Q0
, GR_VERTEX_OOW_TMU0_OFFSET
<< 2, GR_PARAM_ENABLE
);
206 grVertexLayout(GR_PARAM_Q0
,GR_VERTEX_OOW_TMU0_OFFSET
<< 2, GR_PARAM_DISABLE
);
208 if (hintMask
& GR_STWHINT_ST_DIFF_TMU1
)
209 grVertexLayout(GR_PARAM_ST1
,GR_VERTEX_SOW_TMU1_OFFSET
<< 2, GR_PARAM_ENABLE
);
211 grVertexLayout(GR_PARAM_ST1
,GR_VERTEX_SOW_TMU1_OFFSET
<< 2, GR_PARAM_DISABLE
);
213 if (hintMask
& GR_STWHINT_W_DIFF_TMU1
)
214 grVertexLayout(GR_PARAM_Q1
,GR_VERTEX_OOW_TMU1_OFFSET
<< 2, GR_PARAM_ENABLE
);
216 grVertexLayout(GR_PARAM_Q1
,GR_VERTEX_OOW_TMU1_OFFSET
<< 2, GR_PARAM_DISABLE
);
221 int FX_grSstQueryHardware(GrHwConfiguration
*config
)
225 grGet(GR_NUM_BOARDS
,4,(void*)&(config
->num_sst
));
226 if (config
->num_sst
== 0)
228 for (i
= 0; i
< config
->num_sst
; i
++)
230 config
->SSTs
[i
].type
= GR_SSTTYPE_VOODOO
;
232 grGet(GR_MEMORY_FB
,4,(void*)&(config
->SSTs
[i
].sstBoard
.VoodooConfig
.fbRam
));
233 config
->SSTs
[i
].sstBoard
.VoodooConfig
.fbRam
/= 1024*1024;
235 grGet(GR_NUM_TMU
,4,(void*)&(config
->SSTs
[i
].sstBoard
.VoodooConfig
.nTexelfx
));
238 grGet(GR_NUM_FB
,4,(void*)&numFB
);
240 config
->SSTs
[i
].sstBoard
.VoodooConfig
.sliDetect
= FXTRUE
;
242 config
->SSTs
[i
].sstBoard
.VoodooConfig
.sliDetect
= FXFALSE
;
243 for (j
= 0; j
< config
->SSTs
[i
].sstBoard
.VoodooConfig
.nTexelfx
; j
++)
245 grGet(GR_MEMORY_TMU
,4,(void*)&(config
->SSTs
[i
].sstBoard
.VoodooConfig
.tmuConfig
[j
].tmuRam
));
246 config
->SSTs
[i
].sstBoard
.VoodooConfig
.tmuConfig
[j
].tmuRam
/= 1024*1024;
257 * Need this to provide at least one external definition.
260 int gl_fx_dummy_function_glidew(void)