/*
* Mesa 3-D graphics library
- * Version: 3.5
*
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
+ * Keith Whitwell <keithw@vmware.com>
*/
#include "math/m_translate.h"
* really convenient to put them. Need to build some actual .o files in
* this directory?
*/
-static void copy_pv_rgba4_spec5( GLcontext *ctx, GLuint edst, GLuint esrc )
+static void copy_pv_rgba4_spec5( struct gl_context *ctx, GLuint edst, GLuint esrc )
{
LOCALVARS
GLubyte *verts = GET_VERTEX_STORE();
dst[5] = src[5];
}
-static void copy_pv_rgba4( GLcontext *ctx, GLuint edst, GLuint esrc )
+static void copy_pv_rgba4( struct gl_context *ctx, GLuint edst, GLuint esrc )
{
LOCALVARS
GLubyte *verts = GET_VERTEX_STORE();
dst[4] = src[4];
}
-static void copy_pv_rgba3( GLcontext *ctx, GLuint edst, GLuint esrc )
+static void copy_pv_rgba3( struct gl_context *ctx, GLuint edst, GLuint esrc )
{
LOCALVARS
GLubyte *verts = GET_VERTEX_STORE();
}
-void TAG(translate_vertex)(GLcontext *ctx,
+void TAG(translate_vertex)(struct gl_context *ctx,
const VERTEX *src,
SWvertex *dst)
{
if (format == TINY_VERTEX_FORMAT) {
if (HAVE_HW_VIEWPORT) {
- dst->win[0] = s[0] * src->v.x + s[12];
- dst->win[1] = s[5] * src->v.y + s[13];
- dst->win[2] = s[10] * src->v.z + s[14];
- dst->win[3] = 1.0;
+ dst->attrib[VARYING_SLOT_POS][0] = s[0] * src->v.x + s[12];
+ dst->attrib[VARYING_SLOT_POS][1] = s[5] * src->v.y + s[13];
+ dst->attrib[VARYING_SLOT_POS][2] = s[10] * src->v.z + s[14];
+ dst->attrib[VARYING_SLOT_POS][3] = 1.0;
} else {
- dst->win[0] = UNVIEWPORT_X( src->v.x );
- dst->win[1] = UNVIEWPORT_Y( src->v.y );
- dst->win[2] = UNVIEWPORT_Z( src->v.z );
- dst->win[3] = 1.0;
+ dst->attrib[VARYING_SLOT_POS][0] = UNVIEWPORT_X( src->v.x );
+ dst->attrib[VARYING_SLOT_POS][1] = UNVIEWPORT_Y( src->v.y );
+ dst->attrib[VARYING_SLOT_POS][2] = UNVIEWPORT_Z( src->v.z );
+ dst->attrib[VARYING_SLOT_POS][3] = 1.0;
}
dst->color[0] = src->tv.color.red;
if (HAVE_HW_VIEWPORT) {
if (HAVE_HW_DIVIDE && CHECK_HW_DIVIDE) {
GLfloat oow = 1.0 / src->v.w;
- dst->win[0] = s[0] * src->v.x * oow + s[12];
- dst->win[1] = s[5] * src->v.y * oow + s[13];
- dst->win[2] = s[10] * src->v.z * oow + s[14];
- dst->win[3] = oow;
+ dst->attrib[VARYING_SLOT_POS][0] = s[0] * src->v.x * oow + s[12];
+ dst->attrib[VARYING_SLOT_POS][1] = s[5] * src->v.y * oow + s[13];
+ dst->attrib[VARYING_SLOT_POS][2] = s[10] * src->v.z * oow + s[14];
+ dst->attrib[VARYING_SLOT_POS][3] = oow;
} else {
- dst->win[0] = s[0] * src->v.x + s[12];
- dst->win[1] = s[5] * src->v.y + s[13];
- dst->win[2] = s[10] * src->v.z + s[14];
- dst->win[3] = src->v.w;
+ dst->attrib[VARYING_SLOT_POS][0] = s[0] * src->v.x + s[12];
+ dst->attrib[VARYING_SLOT_POS][1] = s[5] * src->v.y + s[13];
+ dst->attrib[VARYING_SLOT_POS][2] = s[10] * src->v.z + s[14];
+ dst->attrib[VARYING_SLOT_POS][3] = src->v.w;
}
} else {
- dst->win[0] = UNVIEWPORT_X( src->v.x );
- dst->win[1] = UNVIEWPORT_Y( src->v.y );
- dst->win[2] = UNVIEWPORT_Z( src->v.z );
- dst->win[3] = src->v.w;
+ dst->attrib[VARYING_SLOT_POS][0] = UNVIEWPORT_X( src->v.x );
+ dst->attrib[VARYING_SLOT_POS][1] = UNVIEWPORT_Y( src->v.y );
+ dst->attrib[VARYING_SLOT_POS][2] = UNVIEWPORT_Z( src->v.z );
+ dst->attrib[VARYING_SLOT_POS][3] = src->v.w;
}
dst->color[0] = src->v.color.red;
dst->color[2] = src->v.color.blue;
dst->color[3] = src->v.color.alpha;
- dst->specular[0] = src->v.specular.red;
- dst->specular[1] = src->v.specular.green;
- dst->specular[2] = src->v.specular.blue;
+ dst->attrib[VARYING_SLOT_COL1][0] = UBYTE_TO_FLOAT(src->v.specular.red);
+ dst->attrib[VARYING_SLOT_COL1][1] = UBYTE_TO_FLOAT(src->v.specular.green);
+ dst->attrib[VARYING_SLOT_COL1][2] = UBYTE_TO_FLOAT(src->v.specular.blue);
- dst->fog = src->v.specular.alpha/255.0;
+ dst->attrib[VARYING_SLOT_FOGC][0] = UBYTE_TO_FLOAT(src->v.specular.alpha);
if (HAVE_PTEX_VERTICES &&
((HAVE_TEX2_VERTICES && format == PROJ_TEX3_VERTEX_FORMAT) ||
(format == PROJ_TEX1_VERTEX_FORMAT))) {
- dst->attrib[FRAG_ATTRIB_TEX0][0] = src->pv.u0;
- dst->attrib[FRAG_ATTRIB_TEX0][1] = src->pv.v0;
- dst->attrib[FRAG_ATTRIB_TEX0][3] = src->pv.q0;
+ dst->attrib[VARYING_SLOT_TEX0][0] = src->pv.u0;
+ dst->attrib[VARYING_SLOT_TEX0][1] = src->pv.v0;
+ dst->attrib[VARYING_SLOT_TEX0][3] = src->pv.q0;
- dst->attrib[FRAG_ATTRIB_TEX1][0] = src->pv.u1;
- dst->attrib[FRAG_ATTRIB_TEX1][1] = src->pv.v1;
- dst->attrib[FRAG_ATTRIB_TEX1][3] = src->pv.q1;
+ dst->attrib[VARYING_SLOT_TEX1][0] = src->pv.u1;
+ dst->attrib[VARYING_SLOT_TEX1][1] = src->pv.v1;
+ dst->attrib[VARYING_SLOT_TEX1][3] = src->pv.q1;
if (HAVE_TEX2_VERTICES) {
- dst->attrib[FRAG_ATTRIB_TEX2][0] = src->pv.u2;
- dst->attrib[FRAG_ATTRIB_TEX2][1] = src->pv.v2;
- dst->attrib[FRAG_ATTRIB_TEX2][3] = src->pv.q2;
+ dst->attrib[VARYING_SLOT_TEX2][0] = src->pv.u2;
+ dst->attrib[VARYING_SLOT_TEX2][1] = src->pv.v2;
+ dst->attrib[VARYING_SLOT_TEX2][3] = src->pv.q2;
}
if (HAVE_TEX3_VERTICES) {
- dst->attrib[FRAG_ATTRIB_TEX3][0] = src->pv.u3;
- dst->attrib[FRAG_ATTRIB_TEX3][1] = src->pv.v3;
- dst->attrib[FRAG_ATTRIB_TEX3][3] = src->pv.q3;
+ dst->attrib[VARYING_SLOT_TEX3][0] = src->pv.u3;
+ dst->attrib[VARYING_SLOT_TEX3][1] = src->pv.v3;
+ dst->attrib[VARYING_SLOT_TEX3][3] = src->pv.q3;
}
}
else {
- dst->attrib[FRAG_ATTRIB_TEX0][0] = src->v.u0;
- dst->attrib[FRAG_ATTRIB_TEX0][1] = src->v.v0;
- dst->attrib[FRAG_ATTRIB_TEX0][3] = 1.0;
+ dst->attrib[VARYING_SLOT_TEX0][0] = src->v.u0;
+ dst->attrib[VARYING_SLOT_TEX0][1] = src->v.v0;
+ dst->attrib[VARYING_SLOT_TEX0][3] = 1.0;
- dst->attrib[FRAG_ATTRIB_TEX1][0] = src->v.u1;
- dst->attrib[FRAG_ATTRIB_TEX1][1] = src->v.v1;
- dst->attrib[FRAG_ATTRIB_TEX1][3] = 1.0;
+ dst->attrib[VARYING_SLOT_TEX1][0] = src->v.u1;
+ dst->attrib[VARYING_SLOT_TEX1][1] = src->v.v1;
+ dst->attrib[VARYING_SLOT_TEX1][3] = 1.0;
if (HAVE_TEX2_VERTICES) {
- dst->attrib[FRAG_ATTRIB_TEX2][0] = src->v.u2;
- dst->attrib[FRAG_ATTRIB_TEX2][1] = src->v.v2;
- dst->attrib[FRAG_ATTRIB_TEX2][3] = 1.0;
+ dst->attrib[VARYING_SLOT_TEX2][0] = src->v.u2;
+ dst->attrib[VARYING_SLOT_TEX2][1] = src->v.v2;
+ dst->attrib[VARYING_SLOT_TEX2][3] = 1.0;
}
if (HAVE_TEX3_VERTICES) {
- dst->attrib[FRAG_ATTRIB_TEX3][0] = src->v.u3;
- dst->attrib[FRAG_ATTRIB_TEX3][1] = src->v.v3;
- dst->attrib[FRAG_ATTRIB_TEX3][3] = 1.0;
+ dst->attrib[VARYING_SLOT_TEX3][0] = src->v.u3;
+ dst->attrib[VARYING_SLOT_TEX3][1] = src->v.v3;
+ dst->attrib[VARYING_SLOT_TEX3][3] = 1.0;
}
}
}
- dst->pointSize = ctx->Point._Size;
+ dst->pointSize = ctx->Point.Size;
}
+/* prototype to silence warning */
+void TAG(print_vertex)( struct gl_context *ctx, const VERTEX *v );
-void TAG(print_vertex)( GLcontext *ctx, const VERTEX *v )
+
+void TAG(print_vertex)( struct gl_context *ctx, const VERTEX *v )
{
LOCALVARS
GLuint format = GET_VERTEX_FORMAT();
#define GET_COLOR(ptr, idx) ((ptr)->data[idx])
-INTERP_QUALIFIER void TAG(interp_extras)( GLcontext *ctx,
+INTERP_QUALIFIER void TAG(interp_extras)( struct gl_context *ctx,
GLfloat t,
GLuint dst, GLuint out, GLuint in,
GLboolean force_boundary )
LOCALVARS
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- if (VB->ColorPtr[1]) {
- assert(VB->ColorPtr[1]->stride == 4 * sizeof(GLfloat));
+ if (VB->BackfaceColorPtr) {
+ assert(VB->BackfaceColorPtr->stride == 4 * sizeof(GLfloat));
INTERP_4F( t,
- GET_COLOR(VB->ColorPtr[1], dst),
- GET_COLOR(VB->ColorPtr[1], out),
- GET_COLOR(VB->ColorPtr[1], in) );
+ GET_COLOR(VB->BackfaceColorPtr, dst),
+ GET_COLOR(VB->BackfaceColorPtr, out),
+ GET_COLOR(VB->BackfaceColorPtr, in) );
- if (VB->SecondaryColorPtr[1]) {
+ if (VB->BackfaceSecondaryColorPtr) {
INTERP_3F( t,
- GET_COLOR(VB->SecondaryColorPtr[1], dst),
- GET_COLOR(VB->SecondaryColorPtr[1], out),
- GET_COLOR(VB->SecondaryColorPtr[1], in) );
+ GET_COLOR(VB->BackfaceSecondaryColorPtr, dst),
+ GET_COLOR(VB->BackfaceSecondaryColorPtr, out),
+ GET_COLOR(VB->BackfaceSecondaryColorPtr, in) );
}
}
INTERP_VERTEX(ctx, t, dst, out, in, force_boundary);
}
-INTERP_QUALIFIER void TAG(copy_pv_extras)( GLcontext *ctx,
+INTERP_QUALIFIER void TAG(copy_pv_extras)( struct gl_context *ctx,
GLuint dst, GLuint src )
{
LOCALVARS
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
- if (VB->ColorPtr[1]) {
- COPY_4FV( GET_COLOR(VB->ColorPtr[1], dst),
- GET_COLOR(VB->ColorPtr[1], src) );
+ if (VB->BackfaceColorPtr) {
+ COPY_4FV( GET_COLOR(VB->BackfaceColorPtr, dst),
+ GET_COLOR(VB->BackfaceColorPtr, src) );
- if (VB->SecondaryColorPtr[1]) {
- COPY_4FV( GET_COLOR(VB->SecondaryColorPtr[1], dst),
- GET_COLOR(VB->SecondaryColorPtr[1], src) );
+ if (VB->BackfaceSecondaryColorPtr) {
+ COPY_4FV( GET_COLOR(VB->BackfaceSecondaryColorPtr, dst),
+ GET_COLOR(VB->BackfaceSecondaryColorPtr, src) );
}
}