tnl: Replace deprecated TexCoordPtr with AttribPtr[_TNL_ATTRIB_TEX*]
This commit is contained in:
@@ -57,9 +57,9 @@ static void gamma_emit( GLcontext *ctx, GLuint start, GLuint end)
|
||||
col_stride = VB->ColorPtr[0]->stride;
|
||||
|
||||
if (ctx->Texture.Unit[0]._ReallyEnabled) {
|
||||
tc0_stride = VB->TexCoordPtr[0]->stride;
|
||||
tc0 = VB->TexCoordPtr[0]->data;
|
||||
tc0_size = VB->TexCoordPtr[0]->size;
|
||||
tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0]->stride;
|
||||
tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0]->data;
|
||||
tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0]->size;
|
||||
coord = VB->ClipPtr->data;
|
||||
coord_stride = VB->ClipPtr->stride;
|
||||
} else {
|
||||
|
@@ -126,7 +126,7 @@ i830_render_start(struct intel_context *intel)
|
||||
|
||||
for (i = 0; i < I830_TEX_UNITS; 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 mcs = (i830->state.Tex[i][I830_TEXREG_MCS] &
|
||||
~TEXCOORDTYPE_MASK);
|
||||
|
@@ -1301,7 +1301,7 @@ i915ValidateFragmentProgram(struct i915_context *i915)
|
||||
|
||||
for (i = 0; i < p->ctx->Const.MaxTextureCoordUnits; 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, SZ_TO_HW(sz));
|
||||
|
@@ -103,10 +103,10 @@ static void TAG(emit)( GLcontext *ctx,
|
||||
#if DO_TEX1
|
||||
{
|
||||
const GLuint t1 = GET_TEXSOURCE(1);
|
||||
tc1 = VB->TexCoordPtr[t1]->data;
|
||||
tc1_stride = VB->TexCoordPtr[t1]->stride;
|
||||
tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->data;
|
||||
tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->stride;
|
||||
#if DO_PTEX
|
||||
tc1_size = VB->TexCoordPtr[t1]->size;
|
||||
tc1_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->size;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
@@ -114,10 +114,10 @@ static void TAG(emit)( GLcontext *ctx,
|
||||
#if DO_TEX0
|
||||
{
|
||||
const GLuint t0 = GET_TEXSOURCE(0);
|
||||
tc0 = VB->TexCoordPtr[t0]->data;
|
||||
tc0_stride = VB->TexCoordPtr[t0]->stride;
|
||||
tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->data;
|
||||
tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->stride;
|
||||
#if DO_PTEX
|
||||
tc0_size = VB->TexCoordPtr[t0]->size;
|
||||
tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->size;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
@@ -319,8 +319,8 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
||||
|
||||
/* Force 'missing' texcoords to something valid.
|
||||
*/
|
||||
if (DO_TEX1 && VB->TexCoordPtr[0] == 0)
|
||||
VB->TexCoordPtr[0] = VB->TexCoordPtr[1];
|
||||
if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0] = VB->AttribPtr[_TNL_ATTRIB_TEX1];
|
||||
|
||||
if (DO_PTEX)
|
||||
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
|
||||
* 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();
|
||||
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) {
|
||||
PTEX_FALLBACK();
|
||||
}
|
||||
|
@@ -156,34 +156,34 @@ static void TAG(emit)( GLcontext *ctx,
|
||||
|
||||
if (DO_TEX3) {
|
||||
const GLuint t3 = GET_TEXSOURCE(3);
|
||||
tc3 = VB->TexCoordPtr[t3]->data;
|
||||
tc3_stride = VB->TexCoordPtr[t3]->stride;
|
||||
tc3 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->data;
|
||||
tc3_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->stride;
|
||||
if (DO_PTEX)
|
||||
tc3_size = VB->TexCoordPtr[t3]->size;
|
||||
tc3_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->size;
|
||||
}
|
||||
|
||||
if (DO_TEX2) {
|
||||
const GLuint t2 = GET_TEXSOURCE(2);
|
||||
tc2 = VB->TexCoordPtr[t2]->data;
|
||||
tc2_stride = VB->TexCoordPtr[t2]->stride;
|
||||
tc2 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->data;
|
||||
tc2_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->stride;
|
||||
if (DO_PTEX)
|
||||
tc2_size = VB->TexCoordPtr[t2]->size;
|
||||
tc2_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->size;
|
||||
}
|
||||
|
||||
if (DO_TEX1) {
|
||||
const GLuint t1 = GET_TEXSOURCE(1);
|
||||
tc1 = VB->TexCoordPtr[t1]->data;
|
||||
tc1_stride = VB->TexCoordPtr[t1]->stride;
|
||||
tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->data;
|
||||
tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->stride;
|
||||
if (DO_PTEX)
|
||||
tc1_size = VB->TexCoordPtr[t1]->size;
|
||||
tc1_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->size;
|
||||
}
|
||||
|
||||
if (DO_TEX0) {
|
||||
const GLuint t0 = GET_TEXSOURCE(0);
|
||||
tc0_stride = VB->TexCoordPtr[t0]->stride;
|
||||
tc0 = VB->TexCoordPtr[t0]->data;
|
||||
tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->stride;
|
||||
tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->data;
|
||||
if (DO_PTEX)
|
||||
tc0_size = VB->TexCoordPtr[t0]->size;
|
||||
tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->size;
|
||||
}
|
||||
|
||||
if (DO_RGBA) {
|
||||
@@ -473,22 +473,22 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
||||
|
||||
/* Force 'missing' texcoords to something valid.
|
||||
*/
|
||||
if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
|
||||
VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
|
||||
if (DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX2] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX2] = VB->AttribPtr[_TNL_ATTRIB_TEX3];
|
||||
|
||||
if (DO_TEX2 && VB->TexCoordPtr[1] == 0)
|
||||
VB->TexCoordPtr[1] = VB->TexCoordPtr[2];
|
||||
if (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX1] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX1] = VB->AttribPtr[_TNL_ATTRIB_TEX2];
|
||||
|
||||
if (DO_TEX1 && VB->TexCoordPtr[0] == 0)
|
||||
VB->TexCoordPtr[0] = VB->TexCoordPtr[1];
|
||||
if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0] = VB->AttribPtr[_TNL_ATTRIB_TEX1];
|
||||
|
||||
if (DO_PTEX)
|
||||
return GL_TRUE;
|
||||
|
||||
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) ||
|
||||
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) ||
|
||||
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4) ||
|
||||
(DO_TEX0 && VB->TexCoordPtr[GET_TEXSOURCE(0)]->size == 4))
|
||||
if ((DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(3)]->size == 4) ||
|
||||
(DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(2)]->size == 4) ||
|
||||
(DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(1)]->size == 4) ||
|
||||
(DO_TEX0 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(0)]->size == 4))
|
||||
return GL_FALSE;
|
||||
|
||||
return GL_TRUE;
|
||||
@@ -501,14 +501,14 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
||||
|
||||
/* Force 'missing' texcoords to something valid.
|
||||
*/
|
||||
if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
|
||||
VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
|
||||
if (DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX2] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX2] = VB->AttribPtr[_TNL_ATTRIB_TEX3];
|
||||
|
||||
if (DO_TEX2 && VB->TexCoordPtr[1] == 0)
|
||||
VB->TexCoordPtr[1] = VB->TexCoordPtr[2];
|
||||
if (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX1] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX1] = VB->AttribPtr[_TNL_ATTRIB_TEX2];
|
||||
|
||||
if (DO_TEX1 && VB->TexCoordPtr[0] == 0)
|
||||
VB->TexCoordPtr[0] = VB->TexCoordPtr[1];
|
||||
if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0] = VB->AttribPtr[_TNL_ATTRIB_TEX1];
|
||||
|
||||
if (DO_PTEX)
|
||||
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
|
||||
* TEX0 only.
|
||||
*/
|
||||
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) ||
|
||||
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) ||
|
||||
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4)) {
|
||||
if ((DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(3)]->size == 4) ||
|
||||
(DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(2)]->size == 4) ||
|
||||
(DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(1)]->size == 4)) {
|
||||
PTEX_FALLBACK();
|
||||
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) {
|
||||
PTEX_FALLBACK();
|
||||
}
|
||||
|
@@ -650,12 +650,12 @@ static void r128RenderStart( GLcontext *ctx )
|
||||
}
|
||||
|
||||
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;
|
||||
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 ( VB->TexCoordPtr[rmesa->tmu_source[1]]->size > 2 )
|
||||
if ( VB->AttribPtr[_TNL_ATTRIB_TEX0 + rmesa->tmu_source[1]]->size > 2 )
|
||||
fallback_projtex = GL_TRUE;
|
||||
EMIT_ATTR( _TNL_ATTRIB_TEX1, EMIT_2F, R128_CCE_VC_FRMT_S2_T2, 8 );
|
||||
}
|
||||
|
@@ -168,7 +168,7 @@ static void r200SetVertexFormat( GLcontext *ctx )
|
||||
|
||||
for (i = 0; i < ctx->Const.MaxTextureUnits; 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);
|
||||
EMIT_ATTR( _TNL_ATTRIB_TEX0+i, EMIT_1F + sz - 1, 0 );
|
||||
|
@@ -159,7 +159,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead, GLuint *_
|
||||
int tex_id = rmesa->selected_fp->wpos_attr - FRAG_ATTRIB_TEX0;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead, GLuint *_
|
||||
int tex_id = rmesa->selected_fp->fog_attr - FRAG_ATTRIB_TEX0;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ void r300ChooseSwtclVertexFormat(GLcontext *ctx, GLuint *_InputsRead, GLuint *_
|
||||
GLuint swiz, format, hw_format;
|
||||
for (i = 0; i < ctx->Const.MaxTextureUnits; i++) {
|
||||
if (fp_reads & FRAG_BIT_TEX(i)) {
|
||||
switch (VB->TexCoordPtr[i]->size) {
|
||||
switch (VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->size) {
|
||||
case 1:
|
||||
format = EMIT_1F;
|
||||
hw_format = R300_DATA_TYPE_FLOAT_1;
|
||||
|
@@ -290,24 +290,24 @@ void radeonEmitArrays( GLcontext *ctx, GLuint inputs )
|
||||
if (!rmesa->tcl.tex[unit].buf)
|
||||
emit_tex_vector( ctx,
|
||||
&(rmesa->tcl.aos[nr]),
|
||||
(char *)VB->TexCoordPtr[unit]->data,
|
||||
VB->TexCoordPtr[unit]->size,
|
||||
VB->TexCoordPtr[unit]->stride,
|
||||
(char *)VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->data,
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size,
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->stride,
|
||||
count );
|
||||
nr++;
|
||||
|
||||
vfmt |= RADEON_ST_BIT(unit);
|
||||
/* 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 */
|
||||
if (VB->TexCoordPtr[unit]->size >= 3) {
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size >= 3) {
|
||||
vtx |= RADEON_Q_BIT(unit);
|
||||
vfmt |= RADEON_Q_BIT(unit);
|
||||
}
|
||||
if ( (ctx->Texture.Unit[unit].TexGenEnabled & (R_BIT | Q_BIT)) )
|
||||
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)) {
|
||||
GLuint swaptexmatcol = (VB->TexCoordPtr[unit]->size - 3);
|
||||
GLuint swaptexmatcol = (VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size - 3);
|
||||
if (((rmesa->NeedTexMatrix >> unit) & 1) &&
|
||||
(swaptexmatcol != ((rmesa->TexMatColSwap >> unit) & 1)))
|
||||
radeonUploadTexMatrix( rmesa, unit, swaptexmatcol ) ;
|
||||
|
@@ -60,14 +60,14 @@ static void TAG(emit)( GLcontext *ctx,
|
||||
coord_stride = VB->ObjPtr->stride;
|
||||
|
||||
if (DO_TEX2) {
|
||||
if (VB->TexCoordPtr[2]) {
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX2]) {
|
||||
const GLuint t2 = GET_TEXSOURCE(2);
|
||||
tc2 = (GLuint (*)[4])VB->TexCoordPtr[t2]->data;
|
||||
tc2_stride = VB->TexCoordPtr[t2]->stride;
|
||||
if (DO_PTEX && VB->TexCoordPtr[t2]->size < 3) {
|
||||
tc2 = (GLuint (*)[4])VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->data;
|
||||
tc2_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->stride;
|
||||
if (DO_PTEX && VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->size < 3) {
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
@@ -77,14 +77,14 @@ static void TAG(emit)( GLcontext *ctx,
|
||||
}
|
||||
|
||||
if (DO_TEX1) {
|
||||
if (VB->TexCoordPtr[1]) {
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX1]) {
|
||||
const GLuint t1 = GET_TEXSOURCE(1);
|
||||
tc1 = (GLuint (*)[4])VB->TexCoordPtr[t1]->data;
|
||||
tc1_stride = VB->TexCoordPtr[t1]->stride;
|
||||
if (DO_PTEX && VB->TexCoordPtr[t1]->size < 3) {
|
||||
tc1 = (GLuint (*)[4])VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->data;
|
||||
tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->stride;
|
||||
if (DO_PTEX && VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->size < 3) {
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
@@ -94,14 +94,14 @@ static void TAG(emit)( GLcontext *ctx,
|
||||
}
|
||||
|
||||
if (DO_TEX0) {
|
||||
if (VB->TexCoordPtr[0]) {
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX0]) {
|
||||
const GLuint t0 = GET_TEXSOURCE(0);
|
||||
tc0_stride = VB->TexCoordPtr[t0]->stride;
|
||||
tc0 = (GLuint (*)[4])VB->TexCoordPtr[t0]->data;
|
||||
if (DO_PTEX && VB->TexCoordPtr[t0]->size < 3) {
|
||||
tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->stride;
|
||||
tc0 = (GLuint (*)[4])VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->data;
|
||||
if (DO_PTEX && VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->size < 3) {
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
|
@@ -348,15 +348,15 @@ void radeonEmitArrays( GLcontext *ctx, GLuint inputs )
|
||||
req |= RADEON_ST_BIT(unit);
|
||||
/* 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 */
|
||||
if (VB->TexCoordPtr[unit]->size >= 3) {
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size >= 3) {
|
||||
req |= RADEON_Q_BIT(unit);
|
||||
vtx |= RADEON_Q_BIT(unit);
|
||||
}
|
||||
if ( (ctx->Texture.Unit[unit].TexGenEnabled & (R_BIT | Q_BIT)) )
|
||||
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)) {
|
||||
GLuint swaptexmatcol = (VB->TexCoordPtr[unit]->size - 3);
|
||||
GLuint swaptexmatcol = (VB->AttribPtr[_TNL_ATTRIB_TEX0 + unit]->size - 3);
|
||||
if (((rmesa->NeedTexMatrix >> unit) & 1) &&
|
||||
(swaptexmatcol != ((rmesa->TexMatColSwap >> unit) & 1)))
|
||||
radeonUploadTexMatrix( rmesa, unit, swaptexmatcol ) ;
|
||||
|
@@ -179,7 +179,7 @@ static void radeonSetVertexFormat( GLcontext *ctx )
|
||||
|
||||
for (i = 0; i < ctx->Const.MaxTextureUnits; 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) {
|
||||
case 1:
|
||||
|
@@ -252,13 +252,13 @@ static GLboolean run_texnorm_stage( GLcontext *ctx,
|
||||
const GLboolean normalizeS = (texObj->WrapS == GL_REPEAT);
|
||||
const GLboolean normalizeT = (reallyEnabled & TEXTURE_2D_BIT) &&
|
||||
(texObj->WrapT == GL_REPEAT);
|
||||
const GLfloat *in = (GLfloat *)VB->TexCoordPtr[i]->data;
|
||||
const GLint instride = VB->TexCoordPtr[i]->stride;
|
||||
const GLfloat *in = (GLfloat *)VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->data;
|
||||
const GLint instride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->stride;
|
||||
GLfloat (*out)[4] = store->texcoord[i].data;
|
||||
GLint j;
|
||||
|
||||
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! */
|
||||
continue;
|
||||
|
||||
@@ -297,7 +297,7 @@ static GLboolean run_texnorm_stage( GLcontext *ctx,
|
||||
}
|
||||
|
||||
if (normalizeS || normalizeT)
|
||||
VB->AttribPtr[VERT_ATTRIB_TEX0+i] = VB->TexCoordPtr[i] = &store->texcoord[i];
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + i] = &store->texcoord[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -879,13 +879,13 @@ static GLboolean savageCheckPTexHack( GLcontext *ctx )
|
||||
|
||||
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 ))
|
||||
return GL_TRUE; /* apply ptex hack */
|
||||
else
|
||||
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);
|
||||
|
||||
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 (imesa->ptexHack)
|
||||
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 */
|
||||
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
|
||||
* 3D texture is enabled. Ignore the 3rd coordinate. */
|
||||
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_PAD( 4 );
|
||||
} else
|
||||
@@ -1025,9 +1025,9 @@ static INLINE GLuint savageChooseVertexFormat_s4( GLcontext *ctx )
|
||||
if (RENDERINPUTS_TEST( index_bitset, _TNL_ATTRIB_TEX0 )) {
|
||||
if (imesa->ptexHack)
|
||||
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 */
|
||||
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
|
||||
* 3D texture is enabled. Ignore the 3rd coordinate. */
|
||||
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 );
|
||||
}
|
||||
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 */
|
||||
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 );
|
||||
else
|
||||
NEED_ATTR( SAVAGE_EMIT_S1, SAVAGE_SKIP_S1 );
|
||||
|
@@ -903,14 +903,14 @@ static void sisRenderStart( GLcontext *ctx )
|
||||
|
||||
/* projective textures are not supported by the hardware */
|
||||
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;
|
||||
EMIT_ATTR(_TNL_ATTRIB_TEX0, EMIT_2F);
|
||||
AGPParseSet |= SiS_PS_HAS_UV0;
|
||||
}
|
||||
/* Will only hit tex1 on SiS300 */
|
||||
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;
|
||||
EMIT_ATTR(_TNL_ATTRIB_TEX1, EMIT_2F);
|
||||
AGPParseSet |= SiS_PS_HAS_UV1;
|
||||
|
@@ -58,21 +58,21 @@ static void TAG(emit)( GLcontext *ctx,
|
||||
/* fprintf(stderr, "%s\n", __FUNCTION__); */
|
||||
|
||||
if (IND & TDFX_TEX0_BIT) {
|
||||
tc0_stride = VB->TexCoordPtr[tmu0_source]->stride;
|
||||
tc0 = VB->TexCoordPtr[tmu0_source]->data;
|
||||
tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->stride;
|
||||
tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->data;
|
||||
u0scale = fxMesa->sScale0;
|
||||
v0scale = fxMesa->tScale0;
|
||||
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) {
|
||||
tc1 = VB->TexCoordPtr[tmu1_source]->data;
|
||||
tc1_stride = VB->TexCoordPtr[tmu1_source]->stride;
|
||||
tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->data;
|
||||
tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->stride;
|
||||
u1scale = fxMesa->sScale1;
|
||||
v1scale = fxMesa->tScale1;
|
||||
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) {
|
||||
@@ -168,14 +168,14 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
||||
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
||||
|
||||
if (IND & TDFX_TEX1_BIT) {
|
||||
if (VB->TexCoordPtr[0] == 0)
|
||||
VB->TexCoordPtr[0] = VB->TexCoordPtr[1];
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
|
||||
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;
|
||||
}
|
||||
|
||||
if (VB->TexCoordPtr[0]->size == 4)
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX0]->size == 4)
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
|
@@ -832,13 +832,13 @@ static GLboolean viaCheckPTexHack( GLcontext *ctx )
|
||||
|
||||
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 ))
|
||||
ptexHack = GL_TRUE;
|
||||
else
|
||||
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(VIA_CONTEXT(ctx), VIA_FALLBACK_PROJ_TEXTURE, fallback);
|
||||
|
@@ -62,21 +62,21 @@ static void TAG(emit)( GLcontext *ctx,
|
||||
}
|
||||
|
||||
if (IND & SETUP_TMU0) {
|
||||
tc0 = VB->TexCoordPtr[tmu0_source]->data;
|
||||
tc0_stride = VB->TexCoordPtr[tmu0_source]->stride;
|
||||
tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->data;
|
||||
tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu0_source]->stride;
|
||||
u0scale = fxMesa->s0scale;
|
||||
v0scale = fxMesa->t0scale;
|
||||
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) {
|
||||
tc1 = VB->TexCoordPtr[tmu1_source]->data;
|
||||
tc1_stride = VB->TexCoordPtr[tmu1_source]->stride;
|
||||
tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->data;
|
||||
tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + tmu1_source]->stride;
|
||||
u1scale = fxMesa->s1scale; /* wrong if tmu1_source == 0, possible? */
|
||||
v1scale = fxMesa->t1scale;
|
||||
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) {
|
||||
@@ -220,14 +220,15 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
||||
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
||||
|
||||
if (IND & SETUP_TMU1) {
|
||||
if (VB->TexCoordPtr[0] == 0)
|
||||
VB->TexCoordPtr[0] = VB->TexCoordPtr[1];
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX0] == 0)
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@@ -259,15 +259,15 @@
|
||||
pV->Diffuse = dwColor;
|
||||
|
||||
#define GLD_SETUP_TEX0_3D(v) \
|
||||
if (VB->TexCoordPtr[0]) { \
|
||||
tc = VB->TexCoordPtr[0]->data; \
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX0]) { \
|
||||
tc = VB->AttribPtr[_TNL_ATTRIB_TEX0]->data; \
|
||||
pV->TexUnit0.x = tc[##v][0]; \
|
||||
pV->TexUnit0.y = tc[##v][1]; \
|
||||
}
|
||||
|
||||
#define GLD_SETUP_TEX1_3D(v) \
|
||||
if (VB->TexCoordPtr[1]) { \
|
||||
tc = VB->TexCoordPtr[1]->data; \
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX1]) { \
|
||||
tc = VB->AttribPtr[_TNL_ATTRIB_TEX1]->data; \
|
||||
pV->TexUnit1.x = tc[##v][0]; \
|
||||
pV->TexUnit1.y = tc[##v][1]; \
|
||||
}
|
||||
|
@@ -259,15 +259,15 @@
|
||||
pV->Diffuse = dwColor;
|
||||
|
||||
#define GLD_SETUP_TEX0_3D(v) \
|
||||
if (VB->TexCoordPtr[0]) { \
|
||||
tc = VB->TexCoordPtr[0]->data; \
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX0]) { \
|
||||
tc = VB->TnlAttribPtr[_TNL_ATTRIB_TEX0]->data; \
|
||||
pV->TexUnit0.x = tc[##v][0]; \
|
||||
pV->TexUnit0.y = tc[##v][1]; \
|
||||
}
|
||||
|
||||
#define GLD_SETUP_TEX1_3D(v) \
|
||||
if (VB->TexCoordPtr[1]) { \
|
||||
tc = VB->TexCoordPtr[1]->data; \
|
||||
if (VB->TnlAttribPtr[_TNL_ATTRIB_TEX1]) { \
|
||||
tc = VB->TnlAttribPtr[_TNL_ATTRIB_TEX1]->data; \
|
||||
pV->TexUnit1.x = tc[##v][0]; \
|
||||
pV->TexUnit1.y = tc[##v][1]; \
|
||||
}
|
||||
|
@@ -259,15 +259,15 @@
|
||||
pV->Diffuse = dwColor;
|
||||
|
||||
#define GLD_SETUP_TEX0_3D(v) \
|
||||
if (VB->TexCoordPtr[0]) { \
|
||||
tc = VB->TexCoordPtr[0]->data; \
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX0]) { \
|
||||
tc = VB->AttribPtr[_TNL_ATTRIB_TEX0]->data; \
|
||||
pV->TexUnit0.x = tc[##v][0]; \
|
||||
pV->TexUnit0.y = tc[##v][1]; \
|
||||
}
|
||||
|
||||
#define GLD_SETUP_TEX1_3D(v) \
|
||||
if (VB->TexCoordPtr[1]) { \
|
||||
tc = VB->TexCoordPtr[1]->data; \
|
||||
if (VB->AttribPtr[_TNL_ATTRIB_TEX1]) { \
|
||||
tc = VB->AttribPtr[_TNL_ATTRIB_TEX1]->data; \
|
||||
pV->TexUnit1.x = tc[##v][0]; \
|
||||
pV->TexUnit1.y = tc[##v][1]; \
|
||||
}
|
||||
|
@@ -200,7 +200,7 @@ struct vertex_buffer
|
||||
|
||||
/* Pointers to current data.
|
||||
* XXX some of these fields alias AttribPtr below and should be removed
|
||||
* such as TexCoordPtr, FogCoordPtr, etc.
|
||||
* such as FogCoordPtr, etc.
|
||||
*/
|
||||
GLuint *Elts;
|
||||
GLvector4f *ObjPtr; /* _TNL_BIT_POS */
|
||||
@@ -212,7 +212,6 @@ struct vertex_buffer
|
||||
GLubyte *ClipMask; /* _TNL_BIT_POS */
|
||||
GLfloat *NormalLengthPtr; /* _TNL_BIT_NORMAL */
|
||||
GLboolean *EdgeFlag; /* _TNL_BIT_EDGEFLAG */
|
||||
GLvector4f *TexCoordPtr[MAX_TEXTURE_COORD_UNITS]; /* VERT_TEX_0..n */
|
||||
GLvector4f *IndexPtr[2]; /* _TNL_BIT_INDEX */
|
||||
GLvector4f *ColorPtr[2]; /* _TNL_BIT_COLOR0 */
|
||||
GLvector4f *SecondaryColorPtr[2]; /* _TNL_BIT_COLOR1 */
|
||||
|
@@ -263,10 +263,6 @@ static void bind_inputs( GLcontext *ctx,
|
||||
VB->SecondaryColorPtr[1] = NULL;
|
||||
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
|
||||
* array of ubytes which can be written into. TODO: Fix and
|
||||
* remove.
|
||||
|
@@ -466,7 +466,6 @@ run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage )
|
||||
VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->results[VERT_RESULT_PSIZ];
|
||||
|
||||
for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) {
|
||||
VB->TexCoordPtr[i] =
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]
|
||||
= &store->results[VERT_RESULT_TEX0 + i];
|
||||
}
|
||||
|
@@ -498,7 +498,6 @@ static GLboolean run_texgen_stage( GLcontext *ctx,
|
||||
|
||||
store->TexgenFunc[i]( ctx, store, i );
|
||||
|
||||
VB->TexCoordPtr[i] =
|
||||
VB->AttribPtr[VERT_ATTRIB_TEX0 + i] = &store->texcoord[i];
|
||||
}
|
||||
}
|
||||
|
@@ -73,7 +73,6 @@ static GLboolean run_texmat_stage( GLcontext *ctx,
|
||||
ctx->TextureMatrixStack[i].Top,
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]);
|
||||
|
||||
VB->TexCoordPtr[i] =
|
||||
VB->AttribPtr[VERT_ATTRIB_TEX0+i] = &store->texcoord[i];
|
||||
}
|
||||
}
|
||||
|
@@ -153,34 +153,34 @@ static void TAG(emit)( GLcontext *ctx,
|
||||
|
||||
if (DO_TEX3) {
|
||||
const GLuint t3 = GET_TEXSOURCE(3);
|
||||
tc3 = VB->TexCoordPtr[t3]->data;
|
||||
tc3_stride = VB->TexCoordPtr[t3]->stride;
|
||||
tc3 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->data;
|
||||
tc3_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->stride;
|
||||
if (DO_PTEX)
|
||||
tc3_size = VB->TexCoordPtr[t3]->size;
|
||||
tc3_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t3]->size;
|
||||
}
|
||||
|
||||
if (DO_TEX2) {
|
||||
const GLuint t2 = GET_TEXSOURCE(2);
|
||||
tc2 = VB->TexCoordPtr[t2]->data;
|
||||
tc2_stride = VB->TexCoordPtr[t2]->stride;
|
||||
tc2 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->data;
|
||||
tc2_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->stride;
|
||||
if (DO_PTEX)
|
||||
tc2_size = VB->TexCoordPtr[t2]->size;
|
||||
tc2_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t2]->size;
|
||||
}
|
||||
|
||||
if (DO_TEX1) {
|
||||
const GLuint t1 = GET_TEXSOURCE(1);
|
||||
tc1 = VB->TexCoordPtr[t1]->data;
|
||||
tc1_stride = VB->TexCoordPtr[t1]->stride;
|
||||
tc1 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->data;
|
||||
tc1_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->stride;
|
||||
if (DO_PTEX)
|
||||
tc1_size = VB->TexCoordPtr[t1]->size;
|
||||
tc1_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t1]->size;
|
||||
}
|
||||
|
||||
if (DO_TEX0) {
|
||||
const GLuint t0 = GET_TEXSOURCE(0);
|
||||
tc0_stride = VB->TexCoordPtr[t0]->stride;
|
||||
tc0 = VB->TexCoordPtr[t0]->data;
|
||||
tc0_stride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->stride;
|
||||
tc0 = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->data;
|
||||
if (DO_PTEX)
|
||||
tc0_size = VB->TexCoordPtr[t0]->size;
|
||||
tc0_size = VB->AttribPtr[_TNL_ATTRIB_TEX0 + t0]->size;
|
||||
}
|
||||
|
||||
if (DO_RGBA) {
|
||||
@@ -410,22 +410,22 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
||||
|
||||
/* Force 'missing' texcoords to something valid.
|
||||
*/
|
||||
if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
|
||||
VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
|
||||
if (DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 3];
|
||||
|
||||
if (DO_TEX2 && VB->TexCoordPtr[1] == 0)
|
||||
VB->TexCoordPtr[1] = VB->TexCoordPtr[2];
|
||||
if (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2];
|
||||
|
||||
if (DO_TEX1 && VB->TexCoordPtr[0] == 0)
|
||||
VB->TexCoordPtr[0] = VB->TexCoordPtr[1];
|
||||
if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 0] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + 0] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1];
|
||||
|
||||
if (DO_PTEX)
|
||||
return GL_TRUE;
|
||||
|
||||
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) ||
|
||||
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) ||
|
||||
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4) ||
|
||||
(DO_TEX0 && VB->TexCoordPtr[GET_TEXSOURCE(0)]->size == 4))
|
||||
if ((DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(3)]->size == 4) ||
|
||||
(DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(2)]->size == 4) ||
|
||||
(DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(1)]->size == 4) ||
|
||||
(DO_TEX0 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(0)]->size == 4))
|
||||
return GL_FALSE;
|
||||
|
||||
return GL_TRUE;
|
||||
@@ -438,14 +438,14 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
||||
|
||||
/* Force 'missing' texcoords to something valid.
|
||||
*/
|
||||
if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
|
||||
VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
|
||||
if (DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 3];
|
||||
|
||||
if (DO_TEX2 && VB->TexCoordPtr[1] == 0)
|
||||
VB->TexCoordPtr[1] = VB->TexCoordPtr[2];
|
||||
if (DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 2];
|
||||
|
||||
if (DO_TEX1 && VB->TexCoordPtr[0] == 0)
|
||||
VB->TexCoordPtr[0] = VB->TexCoordPtr[1];
|
||||
if (DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + 0] == 0)
|
||||
VB->AttribPtr[_TNL_ATTRIB_TEX0 + 0] = VB->AttribPtr[_TNL_ATTRIB_TEX0 + 1];
|
||||
|
||||
if (DO_PTEX)
|
||||
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
|
||||
* TEX0 only.
|
||||
*/
|
||||
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) ||
|
||||
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) ||
|
||||
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4)) {
|
||||
if ((DO_TEX3 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(3)]->size == 4) ||
|
||||
(DO_TEX2 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(2)]->size == 4) ||
|
||||
(DO_TEX1 && VB->AttribPtr[_TNL_ATTRIB_TEX0 + GET_TEXSOURCE(1)]->size == 4)) {
|
||||
PTEX_FALLBACK();
|
||||
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) {
|
||||
PTEX_FALLBACK();
|
||||
}
|
||||
|
@@ -128,10 +128,10 @@ int main( int argc, char **argv )
|
||||
OFFSET( "VB_CLIP_MASK ", struct vertex_buffer, ClipMask );
|
||||
OFFSET( "VB_NORMAL_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_NORMAL] );
|
||||
OFFSET( "VB_EDGE_FLAG ", struct vertex_buffer, EdgeFlag );
|
||||
OFFSET( "VB_TEX0_COORD_PTR ", struct vertex_buffer, TexCoordPtr[0] );
|
||||
OFFSET( "VB_TEX1_COORD_PTR ", struct vertex_buffer, TexCoordPtr[1] );
|
||||
OFFSET( "VB_TEX2_COORD_PTR ", struct vertex_buffer, TexCoordPtr[2] );
|
||||
OFFSET( "VB_TEX3_COORD_PTR ", struct vertex_buffer, TexCoordPtr[3] );
|
||||
OFFSET( "VB_TEX0_COORD_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_TEX0] );
|
||||
OFFSET( "VB_TEX1_COORD_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_TEX1] );
|
||||
OFFSET( "VB_TEX2_COORD_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_TEX2] );
|
||||
OFFSET( "VB_TEX3_COORD_PTR ", struct vertex_buffer, AttribPtr[_TNL_ATTRIB_TEX3] );
|
||||
OFFSET( "VB_INDEX_PTR ", struct vertex_buffer, IndexPtr );
|
||||
OFFSET( "VB_COLOR_PTR ", struct vertex_buffer, ColorPtr );
|
||||
OFFSET( "VB_SECONDARY_COLOR_PTR ", struct vertex_buffer, SecondaryColorPtr );
|
||||
|
Reference in New Issue
Block a user