tnl: Replace deprecated TexCoordPtr with AttribPtr[_TNL_ATTRIB_TEX*]

This commit is contained in:
Eric Anholt
2009-11-17 16:00:53 -08:00
parent 22bcb59a95
commit df582ca767
28 changed files with 165 additions and 172 deletions

View File

@@ -57,9 +57,9 @@ static void gamma_emit( GLcontext *ctx, GLuint start, GLuint end)
col_stride = VB->ColorPtr[0]->stride; col_stride = VB->ColorPtr[0]->stride;
if (ctx->Texture.Unit[0]._ReallyEnabled) { if (ctx->Texture.Unit[0]._ReallyEnabled) {
tc0_stride = VB->TexCoordPtr[0]->stride; tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0]->stride;
tc0 = VB->TexCoordPtr[0]->data; tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0]->data;
tc0_size = VB->TexCoordPtr[0]->size; tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0]->size;
coord = VB->ClipPtr->data; coord = VB->ClipPtr->data;
coord_stride = VB->ClipPtr->stride; coord_stride = VB->ClipPtr->stride;
} else { } else {

View File

@@ -126,7 +126,7 @@ i830_render_start(struct intel_context *intel)
for (i = 0; i < I830_TEX_UNITS; i++) { for (i = 0; i < I830_TEX_UNITS; i++) {
if (RENDERINPUTS_TEST(index_bitset, _TNL_ATTRIB_TEX(i))) { if (RENDERINPUTS_TEST(index_bitset, _TNL_ATTRIB_TEX(i))) {
GLuint sz = VB->TexCoordPtr[i]->size; GLuint sz = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->size;
GLuint emit; GLuint emit;
GLuint mcs = (i830->state.Tex[i][I830_TEXREG_MCS] & GLuint mcs = (i830->state.Tex[i][I830_TEXREG_MCS] &
~TEXCOORDTYPE_MASK); ~TEXCOORDTYPE_MASK);

View File

@@ -1301,7 +1301,7 @@ i915ValidateFragmentProgram(struct i915_context *i915)
for (i = 0; i < p->ctx->Const.MaxTextureCoordUnits; i++) { for (i = 0; i < p->ctx->Const.MaxTextureCoordUnits; i++) {
if (inputsRead & FRAG_BIT_TEX(i)) { if (inputsRead & FRAG_BIT_TEX(i)) {
int sz = VB->TexCoordPtr[i]->size; int sz = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->size;
s2 &= ~S2_TEXCOORD_FMT(i, S2_TEXCOORD_FMT0_MASK); s2 &= ~S2_TEXCOORD_FMT(i, S2_TEXCOORD_FMT0_MASK);
s2 |= S2_TEXCOORD_FMT(i, SZ_TO_HW(sz)); s2 |= S2_TEXCOORD_FMT(i, SZ_TO_HW(sz));

View File

@@ -103,10 +103,10 @@ static void TAG(emit)( GLcontext *ctx,
#if DO_TEX1 #if DO_TEX1
{ {
const GLuint t1 = GET_TEXSOURCE(1); const GLuint t1 = GET_TEXSOURCE(1);
tc1 = VB->TexCoordPtr[t1]->data; tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->data;
tc1_stride = VB->TexCoordPtr[t1]->stride; tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->stride;
#if DO_PTEX #if DO_PTEX
tc1_size = VB->TexCoordPtr[t1]->size; tc1_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->size;
#endif #endif
} }
#endif #endif
@@ -114,10 +114,10 @@ static void TAG(emit)( GLcontext *ctx,
#if DO_TEX0 #if DO_TEX0
{ {
const GLuint t0 = GET_TEXSOURCE(0); const GLuint t0 = GET_TEXSOURCE(0);
tc0 = VB->TexCoordPtr[t0]->data; tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->data;
tc0_stride = VB->TexCoordPtr[t0]->stride; tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->stride;
#if DO_PTEX #if DO_PTEX
tc0_size = VB->TexCoordPtr[t0]->size; tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->size;
#endif #endif
} }
#endif #endif
@@ -319,8 +319,8 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
/* Force 'missing' texcoords to something valid. /* Force 'missing' texcoords to something valid.
*/ */
if (DO_TEX1 && VB->TexCoordPtr[0] == 0) if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
VB->TexCoordPtr[0] = VB->TexCoordPtr[1]; VB->AttribPtr[_TNL_ATTRIB_TEX0] = VB->AttribPtr[_TNL_ATTRIB_TEX1];
if (DO_PTEX) if (DO_PTEX)
return GL_TRUE; return GL_TRUE;
@@ -328,12 +328,12 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
/* No hardware support for projective texture. Can fake it for /* No hardware support for projective texture. Can fake it for
* TEX0 only. * TEX0 only.
*/ */
if ((DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4)) { if ((DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(1)]->size == 4)) {
PTEX_FALLBACK(); PTEX_FALLBACK();
return GL_FALSE; return GL_FALSE;
} }
if (DO_TEX0 && VB->TexCoordPtr[GET_TEXSOURCE(0)]->size == 4) { if (DO_TEX0 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(0)]->size == 4) {
if (DO_TEX1) { if (DO_TEX1) {
PTEX_FALLBACK(); PTEX_FALLBACK();
} }

View File

@@ -156,34 +156,34 @@ static void TAG(emit)( GLcontext *ctx,
if (DO_TEX3) { if (DO_TEX3) {
const GLuint t3 = GET_TEXSOURCE(3); const GLuint t3 = GET_TEXSOURCE(3);
tc3 = VB->TexCoordPtr[t3]->data; tc3 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->data;
tc3_stride = VB->TexCoordPtr[t3]->stride; tc3_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->stride;
if (DO_PTEX) if (DO_PTEX)
tc3_size = VB->TexCoordPtr[t3]->size; tc3_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->size;
} }
if (DO_TEX2) { if (DO_TEX2) {
const GLuint t2 = GET_TEXSOURCE(2); const GLuint t2 = GET_TEXSOURCE(2);
tc2 = VB->TexCoordPtr[t2]->data; tc2 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->data;
tc2_stride = VB->TexCoordPtr[t2]->stride; tc2_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->stride;
if (DO_PTEX) if (DO_PTEX)
tc2_size = VB->TexCoordPtr[t2]->size; tc2_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->size;
} }
if (DO_TEX1) { if (DO_TEX1) {
const GLuint t1 = GET_TEXSOURCE(1); const GLuint t1 = GET_TEXSOURCE(1);
tc1 = VB->TexCoordPtr[t1]->data; tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->data;
tc1_stride = VB->TexCoordPtr[t1]->stride; tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->stride;
if (DO_PTEX) if (DO_PTEX)
tc1_size = VB->TexCoordPtr[t1]->size; tc1_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->size;
} }
if (DO_TEX0) { if (DO_TEX0) {
const GLuint t0 = GET_TEXSOURCE(0); const GLuint t0 = GET_TEXSOURCE(0);
tc0_stride = VB->TexCoordPtr[t0]->stride; tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->stride;
tc0 = VB->TexCoordPtr[t0]->data; tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->data;
if (DO_PTEX) if (DO_PTEX)
tc0_size = VB->TexCoordPtr[t0]->size; tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->size;
} }
if (DO_RGBA) { if (DO_RGBA) {
@@ -473,22 +473,22 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
/* Force 'missing' texcoords to something valid. /* Force 'missing' texcoords to something valid.
*/ */
if (DO_TEX3 && VB->TexCoordPtr[2] == 0) if (DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX2] == 0)
VB->TexCoordPtr[2] = VB->TexCoordPtr[3]; VB->AttribPtr[_TNL_ATTRIB_TEX2] = VB->AttribPtr[_TNL_ATTRIB_TEX3];
if (DO_TEX2 && VB->TexCoordPtr[1] == 0) if (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX1] == 0)
VB->TexCoordPtr[1] = VB->TexCoordPtr[2]; VB->AttribPtr[_TNL_ATTRIB_TEX1] = VB->AttribPtr[_TNL_ATTRIB_TEX2];
if (DO_TEX1 && VB->TexCoordPtr[0] == 0) if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
VB->TexCoordPtr[0] = VB->TexCoordPtr[1]; VB->AttribPtr[_TNL_ATTRIB_TEX0] = VB->AttribPtr[_TNL_ATTRIB_TEX1];
if (DO_PTEX) if (DO_PTEX)
return GL_TRUE; return GL_TRUE;
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) || if ((DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(3)]->size == 4) ||
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) || (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(2)]->size == 4) ||
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4) || (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(1)]->size == 4) ||
(DO_TEX0 && VB->TexCoordPtr[GET_TEXSOURCE(0)]->size == 4)) (DO_TEX0 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(0)]->size == 4))
return GL_FALSE; return GL_FALSE;
return GL_TRUE; return GL_TRUE;
@@ -501,14 +501,14 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
/* Force 'missing' texcoords to something valid. /* Force 'missing' texcoords to something valid.
*/ */
if (DO_TEX3 && VB->TexCoordPtr[2] == 0) if (DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX2] == 0)
VB->TexCoordPtr[2] = VB->TexCoordPtr[3]; VB->AttribPtr[_TNL_ATTRIB_TEX2] = VB->AttribPtr[_TNL_ATTRIB_TEX3];
if (DO_TEX2 && VB->TexCoordPtr[1] == 0) if (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX1] == 0)
VB->TexCoordPtr[1] = VB->TexCoordPtr[2]; VB->AttribPtr[_TNL_ATTRIB_TEX1] = VB->AttribPtr[_TNL_ATTRIB_TEX2];
if (DO_TEX1 && VB->TexCoordPtr[0] == 0) if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
VB->TexCoordPtr[0] = VB->TexCoordPtr[1]; VB->AttribPtr[_TNL_ATTRIB_TEX0] = VB->AttribPtr[_TNL_ATTRIB_TEX1];
if (DO_PTEX) if (DO_PTEX)
return GL_TRUE; return GL_TRUE;
@@ -516,14 +516,14 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
/* No hardware support for projective texture. Can fake it for /* No hardware support for projective texture. Can fake it for
* TEX0 only. * TEX0 only.
*/ */
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) || if ((DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(3)]->size == 4) ||
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) || (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(2)]->size == 4) ||
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4)) { (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(1)]->size == 4)) {
PTEX_FALLBACK(); PTEX_FALLBACK();
return GL_FALSE; return GL_FALSE;
} }
if (DO_TEX0 && VB->TexCoordPtr[GET_TEXSOURCE(0)]->size == 4) { if (DO_TEX0 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(0)]->size == 4) {
if (DO_TEX1 || DO_TEX2 || DO_TEX3) { if (DO_TEX1 || DO_TEX2 || DO_TEX3) {
PTEX_FALLBACK(); PTEX_FALLBACK();
} }

View File

@@ -650,12 +650,12 @@ static void r128RenderStart( GLcontext *ctx )
} }
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX(rmesa->tmu_source[0]) )) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX(rmesa->tmu_source[0]) )) {
if ( VB->TexCoordPtr[rmesa->tmu_source[0]]->size > 2 ) if ( VB->AttribPtr[_TNL_ATTRIB_TEX0 + rmesa->tmu_source[0]]->size > 2 )
fallback_projtex = GL_TRUE; fallback_projtex = GL_TRUE;
EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_2F, R128_CCE_VC_FRMT_S_T, 8 ); EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_2F, R128_CCE_VC_FRMT_S_T, 8 );
} }
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX(rmesa->tmu_source[1]) )) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX(rmesa->tmu_source[1]) )) {
if ( VB->TexCoordPtr[rmesa->tmu_source[1]]->size > 2 ) if ( VB->AttribPtr[_TNL_ATTRIB_TEX0 + rmesa->tmu_source[1]]->size > 2 )
fallback_projtex = GL_TRUE; fallback_projtex = GL_TRUE;
EMIT_ATTR( _TNL_ATTRIB_TEX1, EMIT_2F, R128_CCE_VC_FRMT_S2_T2, 8 ); EMIT_ATTR( _TNL_ATTRIB_TEX1, EMIT_2F, R128_CCE_VC_FRMT_S2_T2, 8 );
} }

View File

@@ -168,7 +168,7 @@ static void r200SetVertexFormat( GLcontext *ctx )
for (i = 0; i < ctx->Const.MaxTextureUnits; i++) { for (i = 0; i < ctx->Const.MaxTextureUnits; i++) {
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX(i) )) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX(i) )) {
GLuint sz = VB->TexCoordPtr[i]->size; GLuint sz = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->size;
fmt_1 |= sz << (3 * i); fmt_1 |= sz << (3 * i);
EMIT_ATTR( _TNL_ATTRIB_TEX0+i, EMIT_1F + sz - 1, 0 ); EMIT_ATTR( _TNL_ATTRIB_TEX0+i, EMIT_1F + sz - 1, 0 );

View File

@@ -159,7 +159,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead, GLuint *_
int tex_id = rmesa->selected_fp->wpos_attr - FRAG_ATTRIB_TEX0; int tex_id = rmesa->selected_fp->wpos_attr - FRAG_ATTRIB_TEX0;
VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_POS]; VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_POS];
VB->TexCoordPtr[tex_id] = VB->AttribPtr[VERT_ATTRIB_POS]; VB->AttribPtr[_TNL_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_POS];
RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id); RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id);
} }
@@ -167,7 +167,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead, GLuint *_
int tex_id = rmesa->selected_fp->fog_attr - FRAG_ATTRIB_TEX0; int tex_id = rmesa->selected_fp->fog_attr - FRAG_ATTRIB_TEX0;
VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG]; VB->AttribPtr[VERT_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG];
VB->TexCoordPtr[tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG]; VB->AttribPtr[_TNL_ATTRIB_TEX0 + tex_id] = VB->AttribPtr[VERT_ATTRIB_FOG];
RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id); RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_TEX0 + tex_id);
} }
@@ -180,7 +180,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead, GLuint *_
GLuint swiz, format, hw_format; GLuint swiz, format, hw_format;
for (i = 0; i < ctx->Const.MaxTextureUnits; i++) { for (i = 0; i < ctx->Const.MaxTextureUnits; i++) {
if (fp_reads & FRAG_BIT_TEX(i)) { if (fp_reads & FRAG_BIT_TEX(i)) {
switch (VB->TexCoordPtr[i]->size) { switch (VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->size) {
case 1: case 1:
format = EMIT_1F; format = EMIT_1F;
hw_format = R300_DATA_TYPE_FLOAT_1; hw_format = R300_DATA_TYPE_FLOAT_1;

View File

@@ -290,24 +290,24 @@ void radeonEmitArrays( GLcontext *ctx, GLuint inputs )
if (!rmesa->tcl.tex[unit].buf) if (!rmesa->tcl.tex[unit].buf)
emit_tex_vector( ctx, emit_tex_vector( ctx,
&(rmesa->tcl.aos[nr]), &(rmesa->tcl.aos[nr]),
(char *)VB->TexCoordPtr[unit]->data, (char *)VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->data,
VB->TexCoordPtr[unit]->size, VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size,
VB->TexCoordPtr[unit]->stride, VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->stride,
count ); count );
nr++; nr++;
vfmt |= RADEON_ST_BIT(unit); vfmt |= RADEON_ST_BIT(unit);
/* assume we need the 3rd coord if texgen is active for r/q OR at least /* assume we need the 3rd coord if texgen is active for r/q OR at least
3 coords are submitted. This may not be 100% correct */ 3 coords are submitted. This may not be 100% correct */
if (VB->TexCoordPtr[unit]->size >= 3) { if (VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size >= 3) {
vtx |= RADEON_Q_BIT(unit); vtx |= RADEON_Q_BIT(unit);
vfmt |= RADEON_Q_BIT(unit); vfmt |= RADEON_Q_BIT(unit);
} }
if ( (ctx->Texture.Unit[unit].TexGenEnabled & (R_BIT | Q_BIT)) ) if ( (ctx->Texture.Unit[unit].TexGenEnabled & (R_BIT | Q_BIT)) )
vtx |= RADEON_Q_BIT(unit); vtx |= RADEON_Q_BIT(unit);
else if ((VB->TexCoordPtr[unit]->size >= 3) && else if ((VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size >= 3) &&
((ctx->Texture.Unit[unit]._ReallyEnabled & (TEXTURE_CUBE_BIT)) == 0)) { ((ctx->Texture.Unit[unit]._ReallyEnabled & (TEXTURE_CUBE_BIT)) == 0)) {
GLuint swaptexmatcol = (VB->TexCoordPtr[unit]->size - 3); GLuint swaptexmatcol = (VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size - 3);
if (((rmesa->NeedTexMatrix >> unit) & 1) && if (((rmesa->NeedTexMatrix >> unit) & 1) &&
(swaptexmatcol != ((rmesa->TexMatColSwap >> unit) & 1))) (swaptexmatcol != ((rmesa->TexMatColSwap >> unit) & 1)))
radeonUploadTexMatrix( rmesa, unit, swaptexmatcol ) ; radeonUploadTexMatrix( rmesa, unit, swaptexmatcol ) ;

View File

@@ -60,14 +60,14 @@ static void TAG(emit)( GLcontext *ctx,
coord_stride = VB->ObjPtr->stride; coord_stride = VB->ObjPtr->stride;
if (DO_TEX2) { if (DO_TEX2) {
if (VB->TexCoordPtr[2]) { if (VB->AttribPtr[_TNL_ATTRIB_TEX2]) {
const GLuint t2 = GET_TEXSOURCE(2); const GLuint t2 = GET_TEXSOURCE(2);
tc2 = (GLuint (*)[4])VB->TexCoordPtr[t2]->data; tc2 = (GLuint (*)[4])VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->data;
tc2_stride = VB->TexCoordPtr[t2]->stride; tc2_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->stride;
if (DO_PTEX && VB->TexCoordPtr[t2]->size < 3) { if (DO_PTEX && VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->size < 3) {
fill_tex |= (1<<2); fill_tex |= (1<<2);
} }
else if (DO_PTEX && VB->TexCoordPtr[t2]->size < 4) { else if (DO_PTEX && VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->size < 4) {
rqcoordsnoswap |= (1<<2); rqcoordsnoswap |= (1<<2);
} }
} else { } else {
@@ -77,14 +77,14 @@ static void TAG(emit)( GLcontext *ctx,
} }
if (DO_TEX1) { if (DO_TEX1) {
if (VB->TexCoordPtr[1]) { if (VB->AttribPtr[_TNL_ATTRIB_TEX1]) {
const GLuint t1 = GET_TEXSOURCE(1); const GLuint t1 = GET_TEXSOURCE(1);
tc1 = (GLuint (*)[4])VB->TexCoordPtr[t1]->data; tc1 = (GLuint (*)[4])VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->data;
tc1_stride = VB->TexCoordPtr[t1]->stride; tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->stride;
if (DO_PTEX && VB->TexCoordPtr[t1]->size < 3) { if (DO_PTEX && VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->size < 3) {
fill_tex |= (1<<1); fill_tex |= (1<<1);
} }
else if (DO_PTEX && VB->TexCoordPtr[t1]->size < 4) { else if (DO_PTEX && VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->size < 4) {
rqcoordsnoswap |= (1<<1); rqcoordsnoswap |= (1<<1);
} }
} else { } else {
@@ -94,14 +94,14 @@ static void TAG(emit)( GLcontext *ctx,
} }
if (DO_TEX0) { if (DO_TEX0) {
if (VB->TexCoordPtr[0]) { if (VB->AttribPtr[_TNL_ATTRIB_TEX0]) {
const GLuint t0 = GET_TEXSOURCE(0); const GLuint t0 = GET_TEXSOURCE(0);
tc0_stride = VB->TexCoordPtr[t0]->stride; tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->stride;
tc0 = (GLuint (*)[4])VB->TexCoordPtr[t0]->data; tc0 = (GLuint (*)[4])VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->data;
if (DO_PTEX && VB->TexCoordPtr[t0]->size < 3) { if (DO_PTEX && VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->size < 3) {
fill_tex |= (1<<0); fill_tex |= (1<<0);
} }
else if (DO_PTEX && VB->TexCoordPtr[t0]->size < 4) { else if (DO_PTEX && VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->size < 4) {
rqcoordsnoswap |= (1<<0); rqcoordsnoswap |= (1<<0);
} }
} else { } else {

View File

@@ -348,15 +348,15 @@ void radeonEmitArrays( GLcontext *ctx, GLuint inputs )
req |= RADEON_ST_BIT(unit); req |= RADEON_ST_BIT(unit);
/* assume we need the 3rd coord if texgen is active for r/q OR at least /* assume we need the 3rd coord if texgen is active for r/q OR at least
3 coords are submitted. This may not be 100% correct */ 3 coords are submitted. This may not be 100% correct */
if (VB->TexCoordPtr[unit]->size >= 3) { if (VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size >= 3) {
req |= RADEON_Q_BIT(unit); req |= RADEON_Q_BIT(unit);
vtx |= RADEON_Q_BIT(unit); vtx |= RADEON_Q_BIT(unit);
} }
if ( (ctx->Texture.Unit[unit].TexGenEnabled & (R_BIT | Q_BIT)) ) if ( (ctx->Texture.Unit[unit].TexGenEnabled & (R_BIT | Q_BIT)) )
vtx |= RADEON_Q_BIT(unit); vtx |= RADEON_Q_BIT(unit);
else if ((VB->TexCoordPtr[unit]->size >= 3) && else if ((VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size >= 3) &&
((ctx->Texture.Unit[unit]._ReallyEnabled & (TEXTURE_CUBE_BIT)) == 0)) { ((ctx->Texture.Unit[unit]._ReallyEnabled & (TEXTURE_CUBE_BIT)) == 0)) {
GLuint swaptexmatcol = (VB->TexCoordPtr[unit]->size - 3); GLuint swaptexmatcol = (VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size - 3);
if (((rmesa->NeedTexMatrix >> unit) & 1) && if (((rmesa->NeedTexMatrix >> unit) & 1) &&
(swaptexmatcol != ((rmesa->TexMatColSwap >> unit) & 1))) (swaptexmatcol != ((rmesa->TexMatColSwap >> unit) & 1)))
radeonUploadTexMatrix( rmesa, unit, swaptexmatcol ) ; radeonUploadTexMatrix( rmesa, unit, swaptexmatcol ) ;

View File

@@ -179,7 +179,7 @@ static void radeonSetVertexFormat( GLcontext *ctx )
for (i = 0; i < ctx->Const.MaxTextureUnits; i++) { for (i = 0; i < ctx->Const.MaxTextureUnits; i++) {
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX(i) )) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX(i) )) {
GLuint sz = VB->TexCoordPtr[i]->size; GLuint sz = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->size;
switch (sz) { switch (sz) {
case 1: case 1:

View File

@@ -252,13 +252,13 @@ static GLboolean run_texnorm_stage( GLcontext *ctx,
const GLboolean normalizeS = (texObj->WrapS == GL_REPEAT); const GLboolean normalizeS = (texObj->WrapS == GL_REPEAT);
const GLboolean normalizeT = (reallyEnabled & TEXTURE_2D_BIT) && const GLboolean normalizeT = (reallyEnabled & TEXTURE_2D_BIT) &&
(texObj->WrapT == GL_REPEAT); (texObj->WrapT == GL_REPEAT);
const GLfloat *in = (GLfloat *)VB->TexCoordPtr[i]->data; const GLfloat *in = (GLfloat *)VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->data;
const GLint instride = VB->TexCoordPtr[i]->stride; const GLint instride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->stride;
GLfloat (*out)[4] = store->texcoord[i].data; GLfloat (*out)[4] = store->texcoord[i].data;
GLint j; GLint j;
if (!ctx->Texture.Unit[i]._ReallyEnabled || if (!ctx->Texture.Unit[i]._ReallyEnabled ||
VB->TexCoordPtr[i]->size == 4) VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->size == 4)
/* Never try to normalize homogenous tex coords! */ /* Never try to normalize homogenous tex coords! */
continue; continue;
@@ -297,7 +297,7 @@ static GLboolean run_texnorm_stage( GLcontext *ctx,
} }
if (normalizeS || normalizeT) if (normalizeS || normalizeT)
VB->AttribPtr[VERT_ATTRIB_TEX0+i] = VB->TexCoordPtr[i] = &store->texcoord[i]; VB->AttribPtr[_TNL_ATTRIB_TEX0 + i] = &store->texcoord[i];
} }
} }

View File

@@ -879,13 +879,13 @@ static GLboolean savageCheckPTexHack( GLcontext *ctx )
RENDERINPUTS_COPY( index_bitset, tnl->render_inputs_bitset ); RENDERINPUTS_COPY( index_bitset, tnl->render_inputs_bitset );
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 ) && VB->TexCoordPtr[0]->size == 4) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 ) && VB->AttribPtr[_TNL_ATTRIB_TEX0]->size == 4) {
if (!RENDERINPUTS_TEST_RANGE( index_bitset, _TNL_ATTRIB_TEX1, _TNL_LAST_TEX )) if (!RENDERINPUTS_TEST_RANGE( index_bitset, _TNL_ATTRIB_TEX1, _TNL_LAST_TEX ))
return GL_TRUE; /* apply ptex hack */ return GL_TRUE; /* apply ptex hack */
else else
FALLBACK(ctx, SAVAGE_FALLBACK_PROJ_TEXTURE, GL_TRUE); FALLBACK(ctx, SAVAGE_FALLBACK_PROJ_TEXTURE, GL_TRUE);
} }
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX1 ) && VB->TexCoordPtr[1]->size == 4) if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX1 ) && VB->AttribPtr[_TNL_ATTRIB_TEX1]->size == 4)
FALLBACK(ctx, SAVAGE_FALLBACK_PROJ_TEXTURE, GL_TRUE); FALLBACK(ctx, SAVAGE_FALLBACK_PROJ_TEXTURE, GL_TRUE);
return GL_FALSE; /* don't apply ptex hack */ return GL_FALSE; /* don't apply ptex hack */
@@ -976,13 +976,13 @@ static INLINE GLuint savageChooseVertexFormat_s3d( GLcontext *ctx )
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 )) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 )) {
if (imesa->ptexHack) if (imesa->ptexHack)
EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_3F_XYW, SAVAGE_EMIT_STQ0, SAVAGE_SKIP_ST0); EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_3F_XYW, SAVAGE_EMIT_STQ0, SAVAGE_SKIP_ST0);
else if (VB->TexCoordPtr[0]->size == 4) else if (VB->AttribPtr[_TNL_ATTRIB_TEX0]->size == 4)
assert (0); /* should be caught by savageCheckPTexHack */ assert (0); /* should be caught by savageCheckPTexHack */
else if (VB->TexCoordPtr[0]->size >= 2) else if (VB->AttribPtr[_TNL_ATTRIB_TEX0]->size >= 2)
/* The chromium menu emits some 3D tex coords even though no /* The chromium menu emits some 3D tex coords even though no
* 3D texture is enabled. Ignore the 3rd coordinate. */ * 3D texture is enabled. Ignore the 3rd coordinate. */
EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_2F, SAVAGE_EMIT_ST0, SAVAGE_SKIP_ST0 ); EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_2F, SAVAGE_EMIT_ST0, SAVAGE_SKIP_ST0 );
else if (VB->TexCoordPtr[0]->size == 1) { else if (VB->AttribPtr[_TNL_ATTRIB_TEX0]->size == 1) {
EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_1F, SAVAGE_EMIT_S0, SAVAGE_SKIP_S0 ); EMIT_ATTR( _TNL_ATTRIB_TEX0, EMIT_1F, SAVAGE_EMIT_S0, SAVAGE_SKIP_S0 );
EMIT_PAD( 4 ); EMIT_PAD( 4 );
} else } else
@@ -1025,9 +1025,9 @@ static INLINE GLuint savageChooseVertexFormat_s4( GLcontext *ctx )
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 )) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 )) {
if (imesa->ptexHack) if (imesa->ptexHack)
NEED_ATTR( SAVAGE_EMIT_STQ0, SAVAGE_SKIP_ST0); NEED_ATTR( SAVAGE_EMIT_STQ0, SAVAGE_SKIP_ST0);
else if (VB->TexCoordPtr[0]->size == 4) else if (VB->AttribPtr[_TNL_ATTRIB_TEX0]->size == 4)
assert (0); /* should be caught by savageCheckPTexHack */ assert (0); /* should be caught by savageCheckPTexHack */
else if (VB->TexCoordPtr[0]->size >= 2) else if (VB->AttribPtr[_TNL_ATTRIB_TEX0]->size >= 2)
/* The chromium menu emits some 3D tex coords even though no /* The chromium menu emits some 3D tex coords even though no
* 3D texture is enabled. Ignore the 3rd coordinate. */ * 3D texture is enabled. Ignore the 3rd coordinate. */
NEED_ATTR( SAVAGE_EMIT_ST0, SAVAGE_SKIP_ST0 ); NEED_ATTR( SAVAGE_EMIT_ST0, SAVAGE_SKIP_ST0 );
@@ -1035,10 +1035,10 @@ static INLINE GLuint savageChooseVertexFormat_s4( GLcontext *ctx )
NEED_ATTR( SAVAGE_EMIT_S0, SAVAGE_SKIP_S0 ); NEED_ATTR( SAVAGE_EMIT_S0, SAVAGE_SKIP_S0 );
} }
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX1 )) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX1 )) {
if (VB->TexCoordPtr[1]->size == 4) if (VB->AttribPtr[_TNL_ATTRIB_TEX1]->size == 4)
/* projective textures are not supported by the hardware */ /* projective textures are not supported by the hardware */
assert (0); /* should be caught by savageCheckPTexHack */ assert (0); /* should be caught by savageCheckPTexHack */
else if (VB->TexCoordPtr[1]->size >= 2) else if (VB->AttribPtr[_TNL_ATTRIB_TEX1]->size >= 2)
NEED_ATTR( SAVAGE_EMIT_ST1, SAVAGE_SKIP_ST1 ); NEED_ATTR( SAVAGE_EMIT_ST1, SAVAGE_SKIP_ST1 );
else else
NEED_ATTR( SAVAGE_EMIT_S1, SAVAGE_SKIP_S1 ); NEED_ATTR( SAVAGE_EMIT_S1, SAVAGE_SKIP_S1 );

View File

@@ -903,14 +903,14 @@ static void sisRenderStart( GLcontext *ctx )
/* projective textures are not supported by the hardware */ /* projective textures are not supported by the hardware */
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 )) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 )) {
if (VB->TexCoordPtr[0]->size > 2) if (VB->AttribPtr[_TNL_ATTRIB_TEX0]->size > 2)
tex_fallback = GL_TRUE; tex_fallback = GL_TRUE;
EMIT_ATTR(_TNL_ATTRIB_TEX0, EMIT_2F); EMIT_ATTR(_TNL_ATTRIB_TEX0, EMIT_2F);
AGPParseSet |= SiS_PS_HAS_UV0; AGPParseSet |= SiS_PS_HAS_UV0;
} }
/* Will only hit tex1 on SiS300 */ /* Will only hit tex1 on SiS300 */
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX1 )) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX1 )) {
if (VB->TexCoordPtr[1]->size > 2) if (VB->AttribPtr[_TNL_ATTRIB_TEX1]->size > 2)
tex_fallback = GL_TRUE; tex_fallback = GL_TRUE;
EMIT_ATTR(_TNL_ATTRIB_TEX1, EMIT_2F); EMIT_ATTR(_TNL_ATTRIB_TEX1, EMIT_2F);
AGPParseSet |= SiS_PS_HAS_UV1; AGPParseSet |= SiS_PS_HAS_UV1;

View File

@@ -58,21 +58,21 @@ static void TAG(emit)( GLcontext *ctx,
/* fprintf(stderr, "%s\n", __FUNCTION__); */ /* fprintf(stderr, "%s\n", __FUNCTION__); */
if (IND & TDFX_TEX0_BIT) { if (IND & TDFX_TEX0_BIT) {
tc0_stride = VB->TexCoordPtr[tmu0_source]->stride; tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->stride;
tc0 = VB->TexCoordPtr[tmu0_source]->data; tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->data;
u0scale = fxMesa->sScale0; u0scale = fxMesa->sScale0;
v0scale = fxMesa->tScale0; v0scale = fxMesa->tScale0;
if (IND & TDFX_PTEX_BIT) if (IND & TDFX_PTEX_BIT)
tc0_size = VB->TexCoordPtr[tmu0_source]->size; tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->size;
} }
if (IND & TDFX_TEX1_BIT) { if (IND & TDFX_TEX1_BIT) {
tc1 = VB->TexCoordPtr[tmu1_source]->data; tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->data;
tc1_stride = VB->TexCoordPtr[tmu1_source]->stride; tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->stride;
u1scale = fxMesa->sScale1; u1scale = fxMesa->sScale1;
v1scale = fxMesa->tScale1; v1scale = fxMesa->tScale1;
if (IND & TDFX_PTEX_BIT) if (IND & TDFX_PTEX_BIT)
tc1_size = VB->TexCoordPtr[tmu1_source]->size; tc1_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->size;
} }
if (IND & TDFX_RGBA_BIT) { if (IND & TDFX_RGBA_BIT) {
@@ -168,14 +168,14 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
if (IND & TDFX_TEX1_BIT) { if (IND & TDFX_TEX1_BIT) {
if (VB->TexCoordPtr[0] == 0) if (VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
VB->TexCoordPtr[0] = VB->TexCoordPtr[1]; VB->AttribPtr[_TNL_ATTRIB_TEX0] = VB->AttribPtr[_TNL_ATTRIB_TEX1];
if (VB->TexCoordPtr[1]->size == 4) if (VB->AttribPtr[_TNL_ATTRIB_TEX1]->size == 4)
return GL_FALSE; return GL_FALSE;
} }
if (VB->TexCoordPtr[0]->size == 4) if (VB->AttribPtr[_TNL_ATTRIB_TEX0]->size == 4)
return GL_FALSE; return GL_FALSE;
} }

View File

@@ -832,13 +832,13 @@ static GLboolean viaCheckPTexHack( GLcontext *ctx )
RENDERINPUTS_COPY( index_bitset, tnl->render_inputs_bitset ); RENDERINPUTS_COPY( index_bitset, tnl->render_inputs_bitset );
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 ) && VB->TexCoordPtr[0]->size == 4) { if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 ) && VB->AttribPtr[_TNL_ATTRIB_TEX0]->size == 4) {
if (!RENDERINPUTS_TEST_RANGE( index_bitset, _TNL_ATTRIB_TEX1, _TNL_LAST_TEX )) if (!RENDERINPUTS_TEST_RANGE( index_bitset, _TNL_ATTRIB_TEX1, _TNL_LAST_TEX ))
ptexHack = GL_TRUE; ptexHack = GL_TRUE;
else else
fallback = GL_TRUE; fallback = GL_TRUE;
} }
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX1 ) && VB->TexCoordPtr[1]->size == 4) if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX1 ) && VB->AttribPtr[_TNL_ATTRIB_TEX1]->size == 4)
fallback = GL_TRUE; fallback = GL_TRUE;
FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_PROJ_TEXTURE, fallback); FALLBACK(VIA_CONTEXT(ctx), VIA_FALLBACK_PROJ_TEXTURE, fallback);

View File

@@ -62,21 +62,21 @@ static void TAG(emit)( GLcontext *ctx,
} }
if (IND & SETUP_TMU0) { if (IND & SETUP_TMU0) {
tc0 = VB->TexCoordPtr[tmu0_source]->data; tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->data;
tc0_stride = VB->TexCoordPtr[tmu0_source]->stride; tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->stride;
u0scale = fxMesa->s0scale; u0scale = fxMesa->s0scale;
v0scale = fxMesa->t0scale; v0scale = fxMesa->t0scale;
if (IND & SETUP_PTEX) if (IND & SETUP_PTEX)
tc0_size = VB->TexCoordPtr[tmu0_source]->size; tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->size;
} }
if (IND & SETUP_TMU1) { if (IND & SETUP_TMU1) {
tc1 = VB->TexCoordPtr[tmu1_source]->data; tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->data;
tc1_stride = VB->TexCoordPtr[tmu1_source]->stride; tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->stride;
u1scale = fxMesa->s1scale; /* wrong if tmu1_source == 0, possible? */ u1scale = fxMesa->s1scale; /* wrong if tmu1_source == 0, possible? */
v1scale = fxMesa->t1scale; v1scale = fxMesa->t1scale;
if (IND & SETUP_PTEX) if (IND & SETUP_PTEX)
tc1_size = VB->TexCoordPtr[tmu1_source]->size; tc1_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->size;
} }
if (IND & SETUP_RGBA) { if (IND & SETUP_RGBA) {
@@ -220,14 +220,15 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb; struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
if (IND & SETUP_TMU1) { if (IND & SETUP_TMU1) {
if (VB->TexCoordPtr[0] == 0) if (VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
VB->TexCoordPtr[0] = VB->TexCoordPtr[1]; VB->AttribPtr[_TNL_ATTRIB_TEX0] = VB->AttribPtr[_TNL_ATTRIB_TEX1];
if (VB->TexCoordPtr[1]->size == 4) if (VB->AttribPtr[_TNL_ATTRIB_TEX1]->size == 4)
return GL_FALSE; return GL_FALSE;
} }
if (VB->TexCoordPtr[0] && VB->TexCoordPtr[0]->size == 4) if (VB->AttribPtr[_TNL_ATTRIB_TEX0] &&
VB->AttribPtr[_TNL_ATTRIB_TEX0]->size == 4)
return GL_FALSE; return GL_FALSE;
} }

View File

@@ -259,15 +259,15 @@
pV->Diffuse = dwColor; pV->Diffuse = dwColor;
#define GLD_SETUP_TEX0_3D(v) \ #define GLD_SETUP_TEX0_3D(v) \
if (VB->TexCoordPtr[0]) { \ if (VB->AttribPtr[_TNL_ATTRIB_TEX0]) { \
tc = VB->TexCoordPtr[0]->data; \ tc = VB->AttribPtr[_TNL_ATTRIB_TEX0]->data; \
pV->TexUnit0.x = tc[##v][0]; \ pV->TexUnit0.x = tc[##v][0]; \
pV->TexUnit0.y = tc[##v][1]; \ pV->TexUnit0.y = tc[##v][1]; \
} }
#define GLD_SETUP_TEX1_3D(v) \ #define GLD_SETUP_TEX1_3D(v) \
if (VB->TexCoordPtr[1]) { \ if (VB->AttribPtr[_TNL_ATTRIB_TEX1]) { \
tc = VB->TexCoordPtr[1]->data; \ tc = VB->AttribPtr[_TNL_ATTRIB_TEX1]->data; \
pV->TexUnit1.x = tc[##v][0]; \ pV->TexUnit1.x = tc[##v][0]; \
pV->TexUnit1.y = tc[##v][1]; \ pV->TexUnit1.y = tc[##v][1]; \
} }

View File

@@ -259,15 +259,15 @@
pV->Diffuse = dwColor; pV->Diffuse = dwColor;
#define GLD_SETUP_TEX0_3D(v) \ #define GLD_SETUP_TEX0_3D(v) \
if (VB->TexCoordPtr[0]) { \ if (VB->AttribPtr[_TNL_ATTRIB_TEX0]) { \
tc = VB->TexCoordPtr[0]->data; \ tc = VB->TnlAttribPtr[_TNL_ATTRIB_TEX0]->data; \
pV->TexUnit0.x = tc[##v][0]; \ pV->TexUnit0.x = tc[##v][0]; \
pV->TexUnit0.y = tc[##v][1]; \ pV->TexUnit0.y = tc[##v][1]; \
} }
#define GLD_SETUP_TEX1_3D(v) \ #define GLD_SETUP_TEX1_3D(v) \
if (VB->TexCoordPtr[1]) { \ if (VB->TnlAttribPtr[_TNL_ATTRIB_TEX1]) { \
tc = VB->TexCoordPtr[1]->data; \ tc = VB->TnlAttribPtr[_TNL_ATTRIB_TEX1]->data; \
pV->TexUnit1.x = tc[##v][0]; \ pV->TexUnit1.x = tc[##v][0]; \
pV->TexUnit1.y = tc[##v][1]; \ pV->TexUnit1.y = tc[##v][1]; \
} }

View File

@@ -259,15 +259,15 @@
pV->Diffuse = dwColor; pV->Diffuse = dwColor;
#define GLD_SETUP_TEX0_3D(v) \ #define GLD_SETUP_TEX0_3D(v) \
if (VB->TexCoordPtr[0]) { \ if (VB->AttribPtr[_TNL_ATTRIB_TEX0]) { \
tc = VB->TexCoordPtr[0]->data; \ tc = VB->AttribPtr[_TNL_ATTRIB_TEX0]->data; \
pV->TexUnit0.x = tc[##v][0]; \ pV->TexUnit0.x = tc[##v][0]; \
pV->TexUnit0.y = tc[##v][1]; \ pV->TexUnit0.y = tc[##v][1]; \
} }
#define GLD_SETUP_TEX1_3D(v) \ #define GLD_SETUP_TEX1_3D(v) \
if (VB->TexCoordPtr[1]) { \ if (VB->AttribPtr[_TNL_ATTRIB_TEX1]) { \
tc = VB->TexCoordPtr[1]->data; \ tc = VB->AttribPtr[_TNL_ATTRIB_TEX1]->data; \
pV->TexUnit1.x = tc[##v][0]; \ pV->TexUnit1.x = tc[##v][0]; \
pV->TexUnit1.y = tc[##v][1]; \ pV->TexUnit1.y = tc[##v][1]; \
} }

View File

@@ -200,7 +200,7 @@ struct vertex_buffer
/* Pointers to current data. /* Pointers to current data.
* XXX some of these fields alias AttribPtr below and should be removed * XXX some of these fields alias AttribPtr below and should be removed
* such as TexCoordPtr, FogCoordPtr, etc. * such as FogCoordPtr, etc.
*/ */
GLuint *Elts; GLuint *Elts;
GLvector4f *ObjPtr; /* _TNL_BIT_POS */ GLvector4f *ObjPtr; /* _TNL_BIT_POS */
@@ -212,7 +212,6 @@ struct vertex_buffer
GLubyte *ClipMask; /* _TNL_BIT_POS */ GLubyte *ClipMask; /* _TNL_BIT_POS */
GLfloat *NormalLengthPtr; /* _TNL_BIT_NORMAL */ GLfloat *NormalLengthPtr; /* _TNL_BIT_NORMAL */
GLboolean *EdgeFlag; /* _TNL_BIT_EDGEFLAG */ GLboolean *EdgeFlag; /* _TNL_BIT_EDGEFLAG */
GLvector4f *TexCoordPtr[MAX_TEXTURE_COORD_UNITS]; /* VERT_TEX_0..n */
GLvector4f *IndexPtr[2]; /* _TNL_BIT_INDEX */ GLvector4f *IndexPtr[2]; /* _TNL_BIT_INDEX */
GLvector4f *ColorPtr[2]; /* _TNL_BIT_COLOR0 */ GLvector4f *ColorPtr[2]; /* _TNL_BIT_COLOR0 */
GLvector4f *SecondaryColorPtr[2]; /* _TNL_BIT_COLOR1 */ GLvector4f *SecondaryColorPtr[2]; /* _TNL_BIT_COLOR1 */

View File

@@ -263,10 +263,6 @@ static void bind_inputs( GLcontext *ctx,
VB->SecondaryColorPtr[1] = NULL; VB->SecondaryColorPtr[1] = NULL;
VB->FogCoordPtr = VB->AttribPtr[_TNL_ATTRIB_FOG]; VB->FogCoordPtr = VB->AttribPtr[_TNL_ATTRIB_FOG];
for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) {
VB->TexCoordPtr[i] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i];
}
/* Clipping and drawing code still requires this to be a packed /* Clipping and drawing code still requires this to be a packed
* array of ubytes which can be written into. TODO: Fix and * array of ubytes which can be written into. TODO: Fix and
* remove. * remove.

View File

@@ -466,7 +466,6 @@ run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage )
VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->results[VERT_RESULT_PSIZ]; VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->results[VERT_RESULT_PSIZ];
for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) { for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) {
VB->TexCoordPtr[i] =
VB->AttribPtr[_TNL_ATTRIB_TEX0 + i] VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]
= &store->results[VERT_RESULT_TEX0 + i]; = &store->results[VERT_RESULT_TEX0 + i];
} }

View File

@@ -498,7 +498,6 @@ static GLboolean run_texgen_stage( GLcontext *ctx,
store->TexgenFunc[i]( ctx, store, i ); store->TexgenFunc[i]( ctx, store, i );
VB->TexCoordPtr[i] =
VB->AttribPtr[VERT_ATTRIB_TEX0 + i] = &store->texcoord[i]; VB->AttribPtr[VERT_ATTRIB_TEX0 + i] = &store->texcoord[i];
} }
} }

View File

@@ -73,7 +73,6 @@ static GLboolean run_texmat_stage( GLcontext *ctx,
ctx->TextureMatrixStack[i].Top, ctx->TextureMatrixStack[i].Top,
VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]); VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]);
VB->TexCoordPtr[i] =
VB->AttribPtr[VERT_ATTRIB_TEX0+i] = &store->texcoord[i]; VB->AttribPtr[VERT_ATTRIB_TEX0+i] = &store->texcoord[i];
} }
} }

View File

@@ -153,34 +153,34 @@ static void TAG(emit)( GLcontext *ctx,
if (DO_TEX3) { if (DO_TEX3) {
const GLuint t3 = GET_TEXSOURCE(3); const GLuint t3 = GET_TEXSOURCE(3);
tc3 = VB->TexCoordPtr[t3]->data; tc3 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->data;
tc3_stride = VB->TexCoordPtr[t3]->stride; tc3_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->stride;
if (DO_PTEX) if (DO_PTEX)
tc3_size = VB->TexCoordPtr[t3]->size; tc3_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->size;
} }
if (DO_TEX2) { if (DO_TEX2) {
const GLuint t2 = GET_TEXSOURCE(2); const GLuint t2 = GET_TEXSOURCE(2);
tc2 = VB->TexCoordPtr[t2]->data; tc2 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->data;
tc2_stride = VB->TexCoordPtr[t2]->stride; tc2_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->stride;
if (DO_PTEX) if (DO_PTEX)
tc2_size = VB->TexCoordPtr[t2]->size; tc2_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->size;
} }
if (DO_TEX1) { if (DO_TEX1) {
const GLuint t1 = GET_TEXSOURCE(1); const GLuint t1 = GET_TEXSOURCE(1);
tc1 = VB->TexCoordPtr[t1]->data; tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->data;
tc1_stride = VB->TexCoordPtr[t1]->stride; tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->stride;
if (DO_PTEX) if (DO_PTEX)
tc1_size = VB->TexCoordPtr[t1]->size; tc1_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->size;
} }
if (DO_TEX0) { if (DO_TEX0) {
const GLuint t0 = GET_TEXSOURCE(0); const GLuint t0 = GET_TEXSOURCE(0);
tc0_stride = VB->TexCoordPtr[t0]->stride; tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->stride;
tc0 = VB->TexCoordPtr[t0]->data; tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->data;
if (DO_PTEX) if (DO_PTEX)
tc0_size = VB->TexCoordPtr[t0]->size; tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->size;
} }
if (DO_RGBA) { if (DO_RGBA) {
@@ -410,22 +410,22 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
/* Force 'missing' texcoords to something valid. /* Force 'missing' texcoords to something valid.
*/ */
if (DO_TEX3 && VB->TexCoordPtr[2] == 0) if (DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2] == 0)
VB->TexCoordPtr[2] = VB->TexCoordPtr[3]; VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 3];
if (DO_TEX2 && VB->TexCoordPtr[1] == 0) if (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1] == 0)
VB->TexCoordPtr[1] = VB->TexCoordPtr[2]; VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2];
if (DO_TEX1 && VB->TexCoordPtr[0] == 0) if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 0] == 0)
VB->TexCoordPtr[0] = VB->TexCoordPtr[1]; VB->AttribPtr[_TNL_ATTRIB_TEX0 + 0] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1];
if (DO_PTEX) if (DO_PTEX)
return GL_TRUE; return GL_TRUE;
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) || if ((DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(3)]->size == 4) ||
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) || (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(2)]->size == 4) ||
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4) || (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(1)]->size == 4) ||
(DO_TEX0 && VB->TexCoordPtr[GET_TEXSOURCE(0)]->size == 4)) (DO_TEX0 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(0)]->size == 4))
return GL_FALSE; return GL_FALSE;
return GL_TRUE; return GL_TRUE;
@@ -438,14 +438,14 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
/* Force 'missing' texcoords to something valid. /* Force 'missing' texcoords to something valid.
*/ */
if (DO_TEX3 && VB->TexCoordPtr[2] == 0) if (DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2] == 0)
VB->TexCoordPtr[2] = VB->TexCoordPtr[3]; VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 3];
if (DO_TEX2 && VB->TexCoordPtr[1] == 0) if (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1] == 0)
VB->TexCoordPtr[1] = VB->TexCoordPtr[2]; VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2];
if (DO_TEX1 && VB->TexCoordPtr[0] == 0) if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 0] == 0)
VB->TexCoordPtr[0] = VB->TexCoordPtr[1]; VB->AttribPtr[_TNL_ATTRIB_TEX0 + 0] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1];
if (DO_PTEX) if (DO_PTEX)
return GL_TRUE; return GL_TRUE;
@@ -453,14 +453,14 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
/* No hardware support for projective texture. Can fake it for /* No hardware support for projective texture. Can fake it for
* TEX0 only. * TEX0 only.
*/ */
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) || if ((DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(3)]->size == 4) ||
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) || (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(2)]->size == 4) ||
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4)) { (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(1)]->size == 4)) {
PTEX_FALLBACK(); PTEX_FALLBACK();
return GL_FALSE; return GL_FALSE;
} }
if (DO_TEX0 && VB->TexCoordPtr[GET_TEXSOURCE(0)]->size == 4) { if (DO_TEX0 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(0)]->size == 4) {
if (DO_TEX1 || DO_TEX2 || DO_TEX3) { if (DO_TEX1 || DO_TEX2 || DO_TEX3) {
PTEX_FALLBACK(); PTEX_FALLBACK();
} }

View File

@@ -128,10 +128,10 @@ int main( int argc, char **argv )
OFFSET( "VB_CLIP_MASK ", struct vertex_buffer, ClipMask ); OFFSET( "VB_CLIP_MASK ", struct vertex_buffer, ClipMask );
OFFSET( "VB_NORMAL_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_NORMAL] ); OFFSET( "VB_NORMAL_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_NORMAL] );
OFFSET( "VB_EDGE_FLAG ", struct vertex_buffer, EdgeFlag ); OFFSET( "VB_EDGE_FLAG ", struct vertex_buffer, EdgeFlag );
OFFSET( "VB_TEX0_COORD_PTR ", struct vertex_buffer, TexCoordPtr[0] ); OFFSET( "VB_TEX0_COORD_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_TEX0] );
OFFSET( "VB_TEX1_COORD_PTR ", struct vertex_buffer, TexCoordPtr[1] ); OFFSET( "VB_TEX1_COORD_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_TEX1] );
OFFSET( "VB_TEX2_COORD_PTR ", struct vertex_buffer, TexCoordPtr[2] ); OFFSET( "VB_TEX2_COORD_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_TEX2] );
OFFSET( "VB_TEX3_COORD_PTR ", struct vertex_buffer, TexCoordPtr[3] ); OFFSET( "VB_TEX3_COORD_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_TEX3] );
OFFSET( "VB_INDEX_PTR ", struct vertex_buffer, IndexPtr ); OFFSET( "VB_INDEX_PTR ", struct vertex_buffer, IndexPtr );
OFFSET( "VB_COLOR_PTR ", struct vertex_buffer, ColorPtr ); OFFSET( "VB_COLOR_PTR ", struct vertex_buffer, ColorPtr );
OFFSET( "VB_SECONDARY_COLOR_PTR ", struct vertex_buffer, SecondaryColorPtr ); OFFSET( "VB_SECONDARY_COLOR_PTR ", struct vertex_buffer, SecondaryColorPtr );