Revert earlier changes protecting against null VB->TexCoordPtr[x]. Do
this a better way via check_tex_sizes().
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: t_dd_vb.c,v 1.6 2001/03/12 00:48:44 gareth Exp $ */
|
/* $Id: t_dd_vb.c,v 1.7 2001/03/17 17:31:42 keithw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -34,12 +34,17 @@
|
|||||||
#define UNVIEWPORT_Z(x) x
|
#define UNVIEWPORT_Z(x) x
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef LOCALVARS
|
||||||
|
#define LOCALVARS
|
||||||
|
#endif
|
||||||
|
|
||||||
/* These don't need to be duplicated, but there's currently nowhere
|
/* These don't need to be duplicated, but there's currently nowhere
|
||||||
* really convenient to put them. Need to build some actual .o files in
|
* really convenient to put them. Need to build some actual .o files in
|
||||||
* this directory?
|
* this directory?
|
||||||
*/
|
*/
|
||||||
static void copy_pv_rgba4_spec5( GLcontext *ctx, GLuint edst, GLuint esrc )
|
static void copy_pv_rgba4_spec5( GLcontext *ctx, GLuint edst, GLuint esrc )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
GLubyte *verts = GET_VERTEX_STORE();
|
GLubyte *verts = GET_VERTEX_STORE();
|
||||||
GLuint shift = GET_VERTEX_STRIDE_SHIFT();
|
GLuint shift = GET_VERTEX_STRIDE_SHIFT();
|
||||||
GLuint *dst = (GLuint *)(verts + (edst << shift));
|
GLuint *dst = (GLuint *)(verts + (edst << shift));
|
||||||
@@ -50,6 +55,7 @@ static void copy_pv_rgba4_spec5( GLcontext *ctx, GLuint edst, GLuint esrc )
|
|||||||
|
|
||||||
static void copy_pv_rgba4( GLcontext *ctx, GLuint edst, GLuint esrc )
|
static void copy_pv_rgba4( GLcontext *ctx, GLuint edst, GLuint esrc )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
GLubyte *verts = GET_VERTEX_STORE();
|
GLubyte *verts = GET_VERTEX_STORE();
|
||||||
GLuint shift = GET_VERTEX_STRIDE_SHIFT();
|
GLuint shift = GET_VERTEX_STRIDE_SHIFT();
|
||||||
GLuint *dst = (GLuint *)(verts + (edst << shift));
|
GLuint *dst = (GLuint *)(verts + (edst << shift));
|
||||||
@@ -59,6 +65,7 @@ static void copy_pv_rgba4( GLcontext *ctx, GLuint edst, GLuint esrc )
|
|||||||
|
|
||||||
static void copy_pv_rgba3( GLcontext *ctx, GLuint edst, GLuint esrc )
|
static void copy_pv_rgba3( GLcontext *ctx, GLuint edst, GLuint esrc )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
GLubyte *verts = GET_VERTEX_STORE();
|
GLubyte *verts = GET_VERTEX_STORE();
|
||||||
GLuint shift = GET_VERTEX_STRIDE_SHIFT();
|
GLuint shift = GET_VERTEX_STRIDE_SHIFT();
|
||||||
GLuint *dst = (GLuint *)(verts + (edst << shift));
|
GLuint *dst = (GLuint *)(verts + (edst << shift));
|
||||||
@@ -71,6 +78,7 @@ void TAG(translate_vertex)(GLcontext *ctx,
|
|||||||
const VERTEX *src,
|
const VERTEX *src,
|
||||||
SWvertex *dst)
|
SWvertex *dst)
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
GLuint format = GET_VERTEX_FORMAT();
|
GLuint format = GET_VERTEX_FORMAT();
|
||||||
GLfloat *s = ctx->Viewport._WindowMap.m;
|
GLfloat *s = ctx->Viewport._WindowMap.m;
|
||||||
UNVIEWPORT_VARS;
|
UNVIEWPORT_VARS;
|
||||||
@@ -176,43 +184,11 @@ void TAG(translate_vertex)(GLcontext *ctx,
|
|||||||
dst->pointSize = ctx->Point._Size;
|
dst->pointSize = ctx->Point._Size;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static void
|
|
||||||
mga_translate_vertex( GLcontext *ctx, const mgaVertex *src, SWvertex *dst)
|
|
||||||
{
|
|
||||||
mgaContextPtr mmesa = MGA_CONTEXT(ctx);
|
|
||||||
|
|
||||||
dst->win[0] = src->v.x - mmesa->drawX - SUBPIXEL_X;
|
|
||||||
dst->win[1] = - src->v.y + mmesa->driDrawable->h + mmesa->drawY + SUBPIXEL_Y;
|
|
||||||
dst->win[2] = src->v.z / mmesa->depth_scale;
|
|
||||||
dst->win[3] = src->v.oow;
|
|
||||||
|
|
||||||
dst->color[0] = src->v.color.red;
|
|
||||||
dst->color[1] = src->v.color.green;
|
|
||||||
dst->color[2] = src->v.color.blue;
|
|
||||||
dst->color[3] = src->v.color.alpha;
|
|
||||||
|
|
||||||
if (mmesa->tmu_source[0] == 0) {
|
|
||||||
dst->texcoord[0][0] = src->v.tu0;
|
|
||||||
dst->texcoord[0][1] = src->v.tv0;
|
|
||||||
dst->texcoord[0][3] = 1.0;
|
|
||||||
} else {
|
|
||||||
dst->texcoord[1][0] = src->v.tu0;
|
|
||||||
dst->texcoord[1][1] = src->v.tv0;
|
|
||||||
dst->texcoord[1][3] = 1.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dst->texcoord[1][0] = src->v.tu1;
|
|
||||||
dst->texcoord[1][1] = src->v.tv1;
|
|
||||||
dst->texcoord[1][3] = 1.0;
|
|
||||||
|
|
||||||
dst->pointSize = ctx->Point._Size;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v )
|
void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
GLuint format = GET_VERTEX_FORMAT();
|
GLuint format = GET_VERTEX_FORMAT();
|
||||||
|
|
||||||
if (format == TINY_VERTEX_FORMAT) {
|
if (format == TINY_VERTEX_FORMAT) {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: t_dd_vbtmp.h,v 1.8 2001/03/12 00:48:44 gareth Exp $ */
|
/* $Id: t_dd_vbtmp.h,v 1.9 2001/03/17 17:31:42 keithw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -105,6 +105,9 @@
|
|||||||
#error "can't cope with this combination"
|
#error "can't cope with this combination"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef LOCALVARS
|
||||||
|
#define LOCALVARS
|
||||||
|
#endif
|
||||||
|
|
||||||
#if (HAVE_HW_DIVIDE || DO_SPEC || DO_TEX0 || DO_FOG || !HAVE_TINY_VERTICES)
|
#if (HAVE_HW_DIVIDE || DO_SPEC || DO_TEX0 || DO_FOG || !HAVE_TINY_VERTICES)
|
||||||
|
|
||||||
@@ -113,9 +116,10 @@ static void TAG(emit)( GLcontext *ctx,
|
|||||||
void *dest,
|
void *dest,
|
||||||
GLuint stride )
|
GLuint stride )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
||||||
GLfloat (*tc0)[4], (*tc1)[4], (*tc2)[4], (*tc3)[4];
|
GLfloat (*tc0)[4], (*tc1)[4], *fog;
|
||||||
GLfloat *fog;
|
GLfloat (*tc2)[4], (*tc3)[4];
|
||||||
GLubyte (*col)[4], (*spec)[4];
|
GLubyte (*col)[4], (*spec)[4];
|
||||||
GLuint tc0_stride, tc1_stride, col_stride, spec_stride, fog_stride;
|
GLuint tc0_stride, tc1_stride, col_stride, spec_stride, fog_stride;
|
||||||
GLuint tc2_stride, tc3_stride;
|
GLuint tc2_stride, tc3_stride;
|
||||||
@@ -140,62 +144,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);
|
||||||
if (VB->TexCoordPtr[t3]) {
|
tc3 = VB->TexCoordPtr[t3]->data;
|
||||||
tc3 = VB->TexCoordPtr[t3]->data;
|
tc3_stride = VB->TexCoordPtr[t3]->stride;
|
||||||
tc3_stride = VB->TexCoordPtr[t3]->stride;
|
if (DO_PTEX)
|
||||||
if (DO_PTEX)
|
tc3_size = VB->TexCoordPtr[t3]->size;
|
||||||
tc3_size = VB->TexCoordPtr[t3]->size;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tc3 = NULL;
|
|
||||||
tc3_stride = 0; /* just to silence warnings */
|
|
||||||
tc3_size = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DO_TEX2) {
|
if (DO_TEX2) {
|
||||||
const GLuint t2 = GET_TEXSOURCE(2);
|
const GLuint t2 = GET_TEXSOURCE(2);
|
||||||
if (VB->TexCoordPtr[t2]) {
|
tc2 = VB->TexCoordPtr[t2]->data;
|
||||||
tc2 = VB->TexCoordPtr[t2]->data;
|
tc2_stride = VB->TexCoordPtr[t2]->stride;
|
||||||
tc2_stride = VB->TexCoordPtr[t2]->stride;
|
if (DO_PTEX)
|
||||||
if (DO_PTEX)
|
tc2_size = VB->TexCoordPtr[t2]->size;
|
||||||
tc2_size = VB->TexCoordPtr[t2]->size;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tc2 = NULL;
|
|
||||||
tc2_stride = 0;
|
|
||||||
tc2_size = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DO_TEX1) {
|
if (DO_TEX1) {
|
||||||
const GLuint t1 = GET_TEXSOURCE(1);
|
const GLuint t1 = GET_TEXSOURCE(1);
|
||||||
if (VB->TexCoordPtr[t1]) {
|
tc1 = VB->TexCoordPtr[t1]->data;
|
||||||
tc1 = VB->TexCoordPtr[t1]->data;
|
tc1_stride = VB->TexCoordPtr[t1]->stride;
|
||||||
tc1_stride = VB->TexCoordPtr[t1]->stride;
|
if (DO_PTEX)
|
||||||
if (DO_PTEX)
|
tc1_size = VB->TexCoordPtr[t1]->size;
|
||||||
tc1_size = VB->TexCoordPtr[t1]->size;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tc1 = NULL;
|
|
||||||
tc1_stride = 0;
|
|
||||||
tc1_size = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DO_TEX0) {
|
if (DO_TEX0) {
|
||||||
const GLuint t0 = GET_TEXSOURCE(0);
|
const GLuint t0 = GET_TEXSOURCE(0);
|
||||||
if (VB->TexCoordPtr[t0]) {
|
tc0_stride = VB->TexCoordPtr[t0]->stride;
|
||||||
tc0_stride = VB->TexCoordPtr[t0]->stride;
|
tc0 = VB->TexCoordPtr[t0]->data;
|
||||||
tc0 = VB->TexCoordPtr[t0]->data;
|
if (DO_PTEX)
|
||||||
if (DO_PTEX)
|
tc0_size = VB->TexCoordPtr[t0]->size;
|
||||||
tc0_size = VB->TexCoordPtr[t0]->size;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
tc0 = NULL;
|
|
||||||
tc0_stride = 0;
|
|
||||||
tc0_size = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DO_RGBA) {
|
if (DO_RGBA) {
|
||||||
@@ -217,20 +193,16 @@ static void TAG(emit)( GLcontext *ctx,
|
|||||||
/* May have nonstandard strides:
|
/* May have nonstandard strides:
|
||||||
*/
|
*/
|
||||||
if (start) {
|
if (start) {
|
||||||
coord = (GLfloat (*)[4])((GLubyte *)coord + start * coord_stride);
|
coord = (GLfloat (*)[4])((GLubyte *)coord + start * coord_stride);
|
||||||
if (DO_TEX0)
|
if (DO_TEX0)
|
||||||
if (tc0)
|
tc0 = (GLfloat (*)[4])((GLubyte *)tc0 + start * tc0_stride);
|
||||||
tc0 = (GLfloat (*)[4])((GLubyte *)tc0 + start * tc0_stride);
|
if (DO_TEX1)
|
||||||
if (DO_TEX1)
|
tc1 = (GLfloat (*)[4])((GLubyte *)tc1 + start * tc1_stride);
|
||||||
if (tc1)
|
if (DO_TEX2)
|
||||||
tc1 = (GLfloat (*)[4])((GLubyte *)tc1 + start * tc1_stride);
|
tc2 = (GLfloat (*)[4])((GLubyte *)tc2 + start * tc2_stride);
|
||||||
if (DO_TEX2)
|
if (DO_TEX3)
|
||||||
if (tc2)
|
tc3 = (GLfloat (*)[4])((GLubyte *)tc3 + start * tc3_stride);
|
||||||
tc2 = (GLfloat (*)[4])((GLubyte *)tc2 + start * tc2_stride);
|
if (DO_RGBA)
|
||||||
if (DO_TEX3)
|
|
||||||
if (tc3)
|
|
||||||
tc3 = (GLfloat (*)[4])((GLubyte *)tc3 + start * tc3_stride);
|
|
||||||
if (DO_RGBA)
|
|
||||||
STRIDE_4UB(col, start * col_stride);
|
STRIDE_4UB(col, start * col_stride);
|
||||||
if (DO_SPEC)
|
if (DO_SPEC)
|
||||||
STRIDE_4UB(spec, start * spec_stride);
|
STRIDE_4UB(spec, start * spec_stride);
|
||||||
@@ -271,80 +243,72 @@ static void TAG(emit)( GLcontext *ctx,
|
|||||||
STRIDE_F(fog, fog_stride);
|
STRIDE_F(fog, fog_stride);
|
||||||
}
|
}
|
||||||
if (DO_TEX0) {
|
if (DO_TEX0) {
|
||||||
if (tc0) {
|
v->v.u0 = tc0[0][0];
|
||||||
v->v.u0 = tc0[0][0];
|
v->v.v0 = tc0[0][1];
|
||||||
v->v.v0 = tc0[0][1];
|
if (DO_PTEX) {
|
||||||
if (DO_PTEX) {
|
if (HAVE_PTEX_VERTICES) {
|
||||||
if (HAVE_PTEX_VERTICES) {
|
if (tc0_size == 4)
|
||||||
if (tc0_size == 4)
|
v->pv.q0 = tc0[0][3];
|
||||||
v->pv.q0 = tc0[0][3];
|
else
|
||||||
else
|
v->pv.q0 = 1.0;
|
||||||
v->pv.q0 = 1.0;
|
}
|
||||||
}
|
else if (tc0_size == 4) {
|
||||||
else if (tc0_size == 4) {
|
float rhw = 1.0 / tc0[0][3];
|
||||||
float rhw = 1.0 / tc0[0][3];
|
v->v.w *= tc0[0][3];
|
||||||
v->v.w *= tc0[0][3];
|
v->v.u0 *= rhw;
|
||||||
v->v.u0 *= rhw;
|
v->v.v0 *= rhw;
|
||||||
v->v.v0 *= rhw;
|
}
|
||||||
}
|
}
|
||||||
}
|
tc0 = (GLfloat (*)[4])((GLubyte *)tc0 + tc0_stride);
|
||||||
tc0 = (GLfloat (*)[4])((GLubyte *)tc0 + tc0_stride);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (DO_TEX1) {
|
if (DO_TEX1) {
|
||||||
if (tc1) {
|
if (DO_PTEX) {
|
||||||
if (DO_PTEX) {
|
v->pv.u1 = tc1[0][0];
|
||||||
v->pv.u1 = tc1[0][0];
|
v->pv.v1 = tc1[0][1];
|
||||||
v->pv.v1 = tc1[0][1];
|
if (tc1_size == 4)
|
||||||
if (tc1_size == 4)
|
v->pv.q1 = tc1[0][3];
|
||||||
v->pv.q1 = tc1[0][3];
|
else
|
||||||
else
|
v->pv.q1 = 1.0;
|
||||||
v->pv.q1 = 1.0;
|
}
|
||||||
}
|
else {
|
||||||
else {
|
v->v.u1 = tc1[0][0];
|
||||||
v->v.u1 = tc1[0][0];
|
v->v.v1 = tc1[0][1];
|
||||||
v->v.v1 = tc1[0][1];
|
}
|
||||||
}
|
tc1 = (GLfloat (*)[4])((GLubyte *)tc1 + tc1_stride);
|
||||||
tc1 = (GLfloat (*)[4])((GLubyte *)tc1 + tc1_stride);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (DO_PTEX) {
|
else if (DO_PTEX) {
|
||||||
*(GLuint *)&v->pv.q1 = 0; /* avoid culling on radeon */
|
*(GLuint *)&v->pv.q1 = 0; /* avoid culling on radeon */
|
||||||
}
|
}
|
||||||
if (DO_TEX2) {
|
if (DO_TEX2) {
|
||||||
if (tc2) {
|
if (DO_PTEX) {
|
||||||
if (DO_PTEX) {
|
v->pv.u2 = tc2[0][0];
|
||||||
v->pv.u2 = tc2[0][0];
|
v->pv.v2 = tc2[0][1];
|
||||||
v->pv.v2 = tc2[0][1];
|
if (tc2_size == 4)
|
||||||
if (tc2_size == 4)
|
v->pv.q2 = tc2[0][3];
|
||||||
v->pv.q2 = tc2[0][3];
|
else
|
||||||
else
|
v->pv.q2 = 1.0;
|
||||||
v->pv.q2 = 1.0;
|
}
|
||||||
}
|
else {
|
||||||
else {
|
v->v.u2 = tc2[0][0];
|
||||||
v->v.u2 = tc2[0][0];
|
v->v.v2 = tc2[0][1];
|
||||||
v->v.v2 = tc2[0][1];
|
}
|
||||||
}
|
tc2 = (GLfloat (*)[4])((GLubyte *)tc2 + tc2_stride);
|
||||||
tc2 = (GLfloat (*)[4])((GLubyte *)tc2 + tc2_stride);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
if (DO_TEX3) {
|
if (DO_TEX3) {
|
||||||
if (tc3) {
|
if (DO_PTEX) {
|
||||||
if (DO_PTEX) {
|
v->pv.u3 = tc3[0][0];
|
||||||
v->pv.u3 = tc3[0][0];
|
v->pv.v3 = tc3[0][1];
|
||||||
v->pv.v3 = tc3[0][1];
|
if (tc3_size == 4)
|
||||||
if (tc3_size == 4)
|
v->pv.q3 = tc3[0][3];
|
||||||
v->pv.q3 = tc3[0][3];
|
else
|
||||||
else
|
v->pv.q3 = 1.0;
|
||||||
v->pv.q3 = 1.0;
|
}
|
||||||
}
|
else {
|
||||||
else {
|
v->v.u3 = tc3[0][0];
|
||||||
v->v.u3 = tc3[0][0];
|
v->v.v3 = tc3[0][1];
|
||||||
v->v.v3 = tc3[0][1];
|
}
|
||||||
}
|
tc3 = (GLfloat (*)[4])((GLubyte *)tc3 + tc3_stride);
|
||||||
tc3 = (GLfloat (*)[4])((GLubyte *)tc3 + tc3_stride);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -377,46 +341,42 @@ static void TAG(emit)( GLcontext *ctx,
|
|||||||
v->v.specular.alpha = fog[i] * 255.0;
|
v->v.specular.alpha = fog[i] * 255.0;
|
||||||
}
|
}
|
||||||
if (DO_TEX0) {
|
if (DO_TEX0) {
|
||||||
if (tc0) {
|
if (DO_PTEX) {
|
||||||
if (DO_PTEX) {
|
v->pv.u0 = tc0[i][0];
|
||||||
v->pv.u0 = tc0[i][0];
|
v->pv.v0 = tc0[i][1];
|
||||||
v->pv.v0 = tc0[i][1];
|
if (HAVE_PTEX_VERTICES) {
|
||||||
if (HAVE_PTEX_VERTICES) {
|
if (tc0_size == 4)
|
||||||
if (tc0_size == 4)
|
v->pv.q0 = tc0[i][3];
|
||||||
v->pv.q0 = tc0[i][3];
|
else
|
||||||
else
|
v->pv.q0 = 1.0;
|
||||||
v->pv.q0 = 1.0;
|
|
||||||
|
|
||||||
v->pv.q1 = 0; /* radeon */
|
v->pv.q1 = 0; /* radeon */
|
||||||
}
|
}
|
||||||
else if (tc0_size == 4) {
|
else if (tc0_size == 4) {
|
||||||
float rhw = 1.0 / tc0[i][3];
|
float rhw = 1.0 / tc0[i][3];
|
||||||
v->v.w *= tc0[i][3];
|
v->v.w *= tc0[i][3];
|
||||||
v->v.u0 *= rhw;
|
v->v.u0 *= rhw;
|
||||||
v->v.v0 *= rhw;
|
v->v.v0 *= rhw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
v->v.u0 = tc0[i][0];
|
v->v.u0 = tc0[i][0];
|
||||||
v->v.v0 = tc0[i][1];
|
v->v.v0 = tc0[i][1];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (DO_TEX1) {
|
if (DO_TEX1) {
|
||||||
if (tc1) {
|
if (DO_PTEX) {
|
||||||
if (DO_PTEX) {
|
v->pv.u1 = tc1[i][0];
|
||||||
v->pv.u1 = tc1[i][0];
|
v->pv.v1 = tc1[i][1];
|
||||||
v->pv.v1 = tc1[i][1];
|
if (tc1_size == 4)
|
||||||
if (tc1_size == 4)
|
v->pv.q1 = tc1[i][3];
|
||||||
v->pv.q1 = tc1[i][3];
|
else
|
||||||
else
|
v->pv.q1 = 1.0;
|
||||||
v->pv.q1 = 1.0;
|
}
|
||||||
}
|
else {
|
||||||
else {
|
v->v.u1 = tc1[i][0];
|
||||||
v->v.u1 = tc1[i][0];
|
v->v.v1 = tc1[i][1];
|
||||||
v->v.v1 = tc1[i][1];
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -431,6 +391,7 @@ static void TAG(emit)( GLcontext *ctx,
|
|||||||
static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
|
static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
|
||||||
void *dest, GLuint stride )
|
void *dest, GLuint stride )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
||||||
GLubyte (*col)[4] = VB->ColorPtr[0]->data;
|
GLubyte (*col)[4] = VB->ColorPtr[0]->data;
|
||||||
GLuint col_stride = VB->ColorPtr[0]->stride;
|
GLuint col_stride = VB->ColorPtr[0]->stride;
|
||||||
@@ -502,6 +463,7 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
|
|||||||
static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
|
static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
|
||||||
void *dest, GLuint stride )
|
void *dest, GLuint stride )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
||||||
GLubyte (*col)[4] = VB->ColorPtr[0]->data;
|
GLubyte (*col)[4] = VB->ColorPtr[0]->data;
|
||||||
GLuint col_stride = VB->ColorPtr[0]->stride;
|
GLuint col_stride = VB->ColorPtr[0]->stride;
|
||||||
@@ -540,8 +502,11 @@ static void TAG(emit)( GLcontext *ctx, GLuint start, GLuint end,
|
|||||||
#if (HAVE_PTEX_VERTICES)
|
#if (HAVE_PTEX_VERTICES)
|
||||||
static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
||||||
|
|
||||||
|
/* Force 'missing' texcoords to something valid.
|
||||||
|
*/
|
||||||
if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
|
if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
|
||||||
VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
|
VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
|
||||||
|
|
||||||
@@ -553,11 +518,11 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
|||||||
|
|
||||||
if (DO_PTEX)
|
if (DO_PTEX)
|
||||||
return GL_TRUE;
|
return GL_TRUE;
|
||||||
|
|
||||||
if ((DO_TEX3 && VB->TexCoordPtr[3]->size == 4) ||
|
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) ||
|
||||||
(DO_TEX2 && VB->TexCoordPtr[2]->size == 4) ||
|
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) ||
|
||||||
(DO_TEX1 && VB->TexCoordPtr[1]->size == 4) ||
|
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4) ||
|
||||||
(DO_TEX0 && VB->TexCoordPtr[0]->size == 4))
|
(DO_TEX0 && VB->TexCoordPtr[GET_TEXSOURCE(0)]->size == 4))
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
return GL_TRUE;
|
return GL_TRUE;
|
||||||
@@ -565,8 +530,11 @@ static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
|||||||
#else
|
#else
|
||||||
static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
static GLboolean TAG(check_tex_sizes)( GLcontext *ctx )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
||||||
|
|
||||||
|
/* Force 'missing' texcoords to something valid.
|
||||||
|
*/
|
||||||
if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
|
if (DO_TEX3 && VB->TexCoordPtr[2] == 0)
|
||||||
VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
|
VB->TexCoordPtr[2] = VB->TexCoordPtr[3];
|
||||||
|
|
||||||
@@ -582,14 +550,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[3]->size == 4) ||
|
if ((DO_TEX3 && VB->TexCoordPtr[GET_TEXSOURCE(3)]->size == 4) ||
|
||||||
(DO_TEX2 && VB->TexCoordPtr[2]->size == 4) ||
|
(DO_TEX2 && VB->TexCoordPtr[GET_TEXSOURCE(2)]->size == 4) ||
|
||||||
(DO_TEX1 && VB->TexCoordPtr[1]->size == 4)) {
|
(DO_TEX1 && VB->TexCoordPtr[GET_TEXSOURCE(1)]->size == 4)) {
|
||||||
PTEX_FALLBACK();
|
PTEX_FALLBACK();
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DO_TEX0 && VB->TexCoordPtr[0]->size == 4) {
|
if (DO_TEX0 && VB->TexCoordPtr[GET_TEXSOURCE(0)]->size == 4) {
|
||||||
if (DO_TEX1 || DO_TEX2 || DO_TEX3) {
|
if (DO_TEX1 || DO_TEX2 || DO_TEX3) {
|
||||||
PTEX_FALLBACK();
|
PTEX_FALLBACK();
|
||||||
}
|
}
|
||||||
@@ -606,6 +574,7 @@ static void TAG(interp)( GLcontext *ctx,
|
|||||||
GLuint edst, GLuint eout, GLuint ein,
|
GLuint edst, GLuint eout, GLuint ein,
|
||||||
GLboolean force_boundary )
|
GLboolean force_boundary )
|
||||||
{
|
{
|
||||||
|
LOCALVARS
|
||||||
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
||||||
GLubyte *ddverts = GET_VERTEX_STORE();
|
GLubyte *ddverts = GET_VERTEX_STORE();
|
||||||
GLuint shift = GET_VERTEX_STRIDE_SHIFT();
|
GLuint shift = GET_VERTEX_STRIDE_SHIFT();
|
||||||
|
Reference in New Issue
Block a user