-/* $Id: t_dd_vbtmp.h,v 1.16 2002/02/13 00:53:20 keithw Exp $ */
+/* $Id: t_dd_vbtmp.h,v 1.17 2002/06/03 16:06:35 brianp Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.0.3
*
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
}
if (DO_RGBA) {
if (HAVE_RGBA_COLOR) {
- *(GLuint *)&v->v.color = *(GLuint *)&col[0];
+ *(GLuint *)&v->v.color = LE32_TO_CPU(*(GLuint *)&col[0]);
STRIDE_4UB(col, col_stride);
} else {
v->v.color.blue = col[0][2];
}
if (DO_RGBA) {
if (HAVE_RGBA_COLOR) {
- *(GLuint *)&v->v.color = *(GLuint *)&col[i];
+ *(GLuint *)&v->v.color = LE32_TO_CPU(*(GLuint *)&col[i]);
}
else {
v->v.color.blue = col[i][2];
coord = (GLfloat (*)[4])((GLubyte *)coord + coord_stride);
if (DO_RGBA) {
if (HAVE_RGBA_COLOR) {
- *(GLuint *)&v[3] = *(GLuint *)col;
+ *(GLuint *)&v[3] = LE32_TO_CPU(*(GLuint *)col);
}
else {
GLubyte *b = (GLubyte *)&v[3];
}
if (DO_RGBA) {
if (HAVE_RGBA_COLOR) {
- *(GLuint *)&v[3] = *(GLuint *)&col[i];
+ *(GLuint *)&v[3] = LE32_TO_CPU(*(GLuint *)&col[i]);
}
else {
GLubyte *b = (GLubyte *)&v[3];
for (i=start; i < end; i++, STRIDE_F(v, stride)) {
if (HAVE_RGBA_COLOR) {
- *(GLuint *)v = *(GLuint *)col[0];
+ *(GLuint *)v = LE32_TO_CPU(*(GLuint *)col[0]);
}
else {
GLubyte *b = (GLubyte *)v;
INTERP_UB( t, dst->ub4[4][3], out->ub4[4][3], in->ub4[4][3] );
if (DO_SPEC) {
- INTERP_UB( t, dst->ub4[5][0], out->ub4[5][0], in->ub4[5][0] );
- INTERP_UB( t, dst->ub4[5][1], out->ub4[5][1], in->ub4[5][1] );
- INTERP_UB( t, dst->ub4[5][2], out->ub4[5][2], in->ub4[5][2] );
+ INTERP_UB( t, dst->v.specular.red, out->v.specular.red, in->v.specular.red );
+ INTERP_UB( t, dst->v.specular.green, out->v.specular.green, in->v.specular.green );
+ INTERP_UB( t, dst->v.specular.blue, out->v.specular.blue, in->v.specular.blue );
}
if (DO_FOG) {
- INTERP_UB( t, dst->ub4[5][3], out->ub4[5][3], in->ub4[5][3] );
+ INTERP_UB( t, dst->v.specular.alpha, out->v.specular.alpha, in->v.specular.alpha );
}
if (DO_TEX0) {
if (DO_PTEX) {
-/* $Id: macros.h,v 1.25 2002/02/13 00:53:19 keithw Exp $ */
/*
* Mesa 3-D graphics library
+/* Byte swapping
+ */
+
+#ifdef __BIG_ENDIAN
+#include <byteswap.h>
+#define CPU_TO_LE32( x ) bswap_32( x )
+#else
+#define CPU_TO_LE32( x ) ( x )
+#endif
+
+#define LE32_TO_CPU( x ) CPU_TO_LE32( x )
+
+
/* Generic color packing macros
*/
(((a) & 0xe0) | (((b) & 0xe0) >> 3) | (((c) & 0xc0) >> 6))
+#ifdef __BIG_ENDIAN
+
+#define PACK_COLOR_8888_LE( a, b, c, d ) PACK_COLOR_8888( d, c, b, a )
+
+#define PACK_COLOR_565_LE( a, b, c ) \
+ (((a) & 0xf8) | (((b) & 0xe0) >> 5) | (((b) & 0x1c) << 11) | \
+ (((c) & 0xf8) << 5))
+
+#define PACK_COLOR_1555_LE( a, b, c, d ) \
+ ((((b) & 0xf8) >> 1) | (((c) & 0xc0) >> 6) | (((c) & 0x38) << 10) | \
+ (((d) & 0xf8) << 5) | ((a) ? 0x80 : 0))
+
+#define PACK_COLOR_4444_LE( a, b, c, d ) PACK_COLOR_4444( c, d, a, b )
+
+#define PACK_COLOR_88_LE( a, b ) PACK_COLOR_88( b, a )
+
+#else /* little endian */
+
+#define PACK_COLOR_8888_LE( a, b, c, d ) PACK_COLOR_8888( a, b, c, d )
+
+#define PACK_COLOR_565_LE( a, b, c ) PACK_COLOR_565( a, b, c )
+
+#define PACK_COLOR_1555_LE( a, b, c, d ) PACK_COLOR_1555( a, b, c, d )
+
+#define PACK_COLOR_4444_LE( a, b, c, d ) PACK_COLOR_4444( a, b, c, d )
+
+#define PACK_COLOR_88_LE( a, b ) PACK_COLOR_88( a, b )
+
+#endif /* endianness */
+
+
#endif
-/* $Id: texutil.c,v 1.27 2002/03/15 18:05:49 brianp Exp $ */
+/* $Id: texutil.c,v 1.28 2002/06/03 16:06:34 brianp Exp $ */
/*
* Mesa 3-D graphics library
#define DEBUG_TEXUTIL 0
+#ifdef __BIG_ENDIAN
+#define APPEND16( a, b ) ( (a) << 16 | (b) )
+#else
+#define APPEND16( a, b ) ( (a) | (b) << 16 )
+#endif
+
+
struct gl_texture_convert {
GLint xoffset, yoffset, zoffset; /* Subimage offset */
GLint width, height, depth; /* Subimage region */
#define DST_TEXELS_PER_DWORD 1
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
+ dst = PACK_COLOR_8888_LE( src[3], src[2], src[1], src[0] )
#define CONVERT_DIRECT
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_8888( src[0], src[1], src[2], src[3] )
+ dst = PACK_COLOR_8888_LE( src[0], src[1], src[2], src[3] )
#define CONVERT_TEXEL_DWORD( dst, src ) CONVERT_TEXEL( dst, src )
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_8888( src[0], src[1], src[2], 0xff )
+ dst = PACK_COLOR_8888_LE( src[0], src[1], src[2], 0xff )
#define CONVERT_TEXEL_DWORD( dst, src ) CONVERT_TEXEL( dst, src )
#define DST_TEXELS_PER_DWORD 1
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
+ dst = PACK_COLOR_8888_LE( src[3], src[2], src[1], src[0] )
#define CONVERT_DIRECT
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_8888( src[3], src[0], src[1], src[2] )
+ dst = PACK_COLOR_8888_LE( src[3], src[0], src[1], src[2] )
#define CONVERT_TEXEL_DWORD( dst, src ) CONVERT_TEXEL( dst, src )
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_8888( 0xff, src[0], src[1], src[2] )
+ dst = PACK_COLOR_8888_LE( 0xff, src[0], src[1], src[2] )
#define CONVERT_TEXEL_DWORD( dst, src ) CONVERT_TEXEL( dst, src )
#define DST_TEXELS_PER_DWORD 2
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_565( src[0], src[1], src[2] )
+ dst = PACK_COLOR_565_LE( src[0], src[1], src[2] )
#define CONVERT_DIRECT
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_565( src[0], src[1], src[2] )
+ dst = PACK_COLOR_565_LE( src[0], src[1], src[2] )
#define CONVERT_TEXEL_DWORD( dst, src ) \
- dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) | \
- (PACK_COLOR_565( src[3], src[4], src[5] ) << 16))
+ dst = APPEND16( PACK_COLOR_565_LE( src[0], src[1], src[2] ), \
+ PACK_COLOR_565_LE( src[3], src[4], src[5] ) )
#define SRC_TEXEL_BYTES 3
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_565( src[0], src[1], src[2] )
+ dst = PACK_COLOR_565_LE( src[0], src[1], src[2] )
#define CONVERT_TEXEL_DWORD( dst, src ) \
- dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) | \
- (PACK_COLOR_565( src[4], src[5], src[6] ) << 16))
+ dst = APPEND16( PACK_COLOR_565_LE( src[0], src[1], src[2] ), \
+ PACK_COLOR_565_LE( src[4], src[5], src[6] ) )
#define SRC_TEXEL_BYTES 4
#define DST_TEXELS_PER_DWORD 2
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
+ dst = PACK_COLOR_4444_LE( src[3], src[0], src[1], src[2] )
#define CONVERT_DIRECT
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
+ dst = PACK_COLOR_4444_LE( src[3], src[0], src[1], src[2] )
#define CONVERT_TEXEL_DWORD( dst, src ) \
- dst = ((PACK_COLOR_4444( src[3], src[0], src[1], src[2] )) | \
- (PACK_COLOR_4444( src[7], src[4], src[5], src[6] ) << 16))
+ dst = APPEND16( PACK_COLOR_4444_LE( src[3], src[0], src[1], src[2] ), \
+ PACK_COLOR_4444_LE( src[7], src[4], src[5], src[6] ) )
#define SRC_TEXEL_BYTES 4
#define DST_TEXELS_PER_DWORD 2
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
+ dst = PACK_COLOR_1555_LE( src[3], src[0], src[1], src[2] )
#define CONVERT_DIRECT
#include "texutil_tmp.h"
+#ifdef __BIG_ENDIAN
+
+#define CONVERT_TEXEL( dst, src ) \
+ { const GLushort s = *(GLushort *)src; \
+ dst = (s >> 9) | ((s & 0x1ff) << 7); }
+
+#define CONVERT_TEXEL_DWORD( dst, src ) \
+ { const GLuint s = ((fi_type *)src)->i; \
+ dst = (((s & 0xfe00fe00) >> 9) | \
+ ((s & 0x01ff01ff) << 7)); }
+
+#else
+
#define CONVERT_TEXEL( dst, src ) \
{ const GLushort s = *(GLushort *)src; \
dst = (s >> 1) | ((s & 1) << 15); }
dst = (((s & 0xfffefffe) >> 1) | \
((s & 0x00010001) << 15)); }
+#endif
+
#define SRC_TEXEL_BYTES 2
#define TAG(x) x##_rgba5551_to_argb1555
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
+ dst = PACK_COLOR_1555_LE( src[3], src[0], src[1], src[2] )
#define CONVERT_TEXEL_DWORD( dst, src ) \
- dst = ((PACK_COLOR_1555( src[3], src[0], src[1], src[2] )) | \
- (PACK_COLOR_1555( src[7], src[4], src[5], src[6] ) << 16))
+ dst = APPEND16( PACK_COLOR_1555_LE( src[3], src[0], src[1], src[2] ), \
+ PACK_COLOR_1555_LE( src[7], src[4], src[5], src[6] ) )
#define SRC_TEXEL_BYTES 4
#define DST_TEXELS_PER_DWORD 2
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_88( src[0], src[1] )
+ dst = PACK_COLOR_88_LE( src[0], src[1] )
#define CONVERT_DIRECT
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_88( src[0], 0x00 )
+ dst = PACK_COLOR_88_LE( src[0], 0x00 )
#define CONVERT_TEXEL_DWORD( dst, src ) \
- dst = ((PACK_COLOR_88( src[0], 0x00 )) | \
- (PACK_COLOR_88( src[1], 0x00 ) << 16))
+ dst = APPEND16( PACK_COLOR_88_LE( src[0], 0x00 ), \
+ PACK_COLOR_88_LE( src[1], 0x00 ) )
#define SRC_TEXEL_BYTES 1
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_88( 0xff, src[0] )
+ dst = PACK_COLOR_88_LE( 0xff, src[0] )
#define CONVERT_TEXEL_DWORD( dst, src ) \
- dst = ((PACK_COLOR_88( 0xff, src[0] )) | \
- (PACK_COLOR_88( 0xff, src[1] ) << 16))
+ dst = APPEND16( PACK_COLOR_88_LE( 0xff, src[0] ), \
+ PACK_COLOR_88_LE( 0xff, src[1] ) )
#define SRC_TEXEL_BYTES 1
#define CONVERT_TEXEL( dst, src ) \
- dst = PACK_COLOR_88( src[3], src[0] )
+ dst = PACK_COLOR_88_LE( src[3], src[0] )
#define CONVERT_TEXEL_DWORD( dst, src ) \
- dst = ((PACK_COLOR_88( src[3], src[0] )) | \
- (PACK_COLOR_88( src[7], src[4] ) << 16))
+ dst = APPEND16( PACK_COLOR_88_LE( src[3], src[0] ), \
+ PACK_COLOR_88_LE( src[7], src[4] ) )
#define SRC_TEXEL_BYTES 4