-/* $Id: blend.c,v 1.8 1999/11/11 01:22:25 brianp Exp $ */
+/* $Id: blend.c,v 1.9 1999/11/12 04:56:55 kendallb Exp $ */
/*
* Mesa 3-D graphics library
ctx->Color.BlendColor[3] = CLAMP( alpha, 0.0F, 1.0F );
}
-
+#ifdef USE_MMX_ASM
+#define _BLENDAPI _ASMAPI
+#else
+#define _BLENDAPI
+#endif
/*
* Common transparency blending mode.
*/
-static void blend_transparency( GLcontext *ctx, GLuint n, const GLubyte mask[],
+static void _BLENDAPI blend_transparency( GLcontext *ctx, GLuint n, const GLubyte mask[],
GLubyte rgba[][4], CONST GLubyte dest[][4] )
{
GLuint i;
/*
* Add src and dest.
*/
-static void blend_add( GLcontext *ctx, GLuint n, const GLubyte mask[],
+static void _BLENDAPI blend_add( GLcontext *ctx, GLuint n, const GLubyte mask[],
GLubyte rgba[][4], CONST GLubyte dest[][4] )
{
GLuint i;
rgba[i][GCOMP] = (GLubyte) MIN2( g, 255 );
rgba[i][BCOMP] = (GLubyte) MIN2( b, 255 );
rgba[i][ACOMP] = (GLubyte) MIN2( a, 255 );
- }
+ }
}
}
/*
* Blend min function (for GL_EXT_blend_minmax)
*/
-static void blend_min( GLcontext *ctx, GLuint n, const GLubyte mask[],
- GLubyte rgba[][4], CONST GLubyte dest[][4] )
+static void _BLENDAPI blend_min( GLcontext *ctx, GLuint n, const GLubyte mask[],
+ GLubyte rgba[][4], CONST GLubyte dest[][4] )
{
GLuint i;
ASSERT(ctx->Color.BlendEquation==GL_MIN_EXT);
(void) ctx;
for (i=0;i<n;i++) {
- if (mask[i]) {
- rgba[i][RCOMP] = (GLubyte) MIN2( rgba[i][RCOMP], dest[i][RCOMP] );
- rgba[i][GCOMP] = (GLubyte) MIN2( rgba[i][GCOMP], dest[i][GCOMP] );
- rgba[i][BCOMP] = (GLubyte) MIN2( rgba[i][BCOMP], dest[i][BCOMP] );
- rgba[i][ACOMP] = (GLubyte) MIN2( rgba[i][ACOMP], dest[i][ACOMP] );
- }
+ if (mask[i]) {
+ rgba[i][RCOMP] = (GLubyte) MIN2( rgba[i][RCOMP], dest[i][RCOMP] );
+ rgba[i][GCOMP] = (GLubyte) MIN2( rgba[i][GCOMP], dest[i][GCOMP] );
+ rgba[i][BCOMP] = (GLubyte) MIN2( rgba[i][BCOMP], dest[i][BCOMP] );
+ rgba[i][ACOMP] = (GLubyte) MIN2( rgba[i][ACOMP], dest[i][ACOMP] );
+ }
}
}
/*
* Blend max function (for GL_EXT_blend_minmax)
*/
-static void blend_max( GLcontext *ctx, GLuint n, const GLubyte mask[],
+static void _BLENDAPI blend_max( GLcontext *ctx, GLuint n, const GLubyte mask[],
GLubyte rgba[][4], CONST GLubyte dest[][4] )
{
GLuint i;
for (i=0;i<n;i++) {
if (mask[i]) {
rgba[i][RCOMP] = (GLubyte) MAX2( rgba[i][RCOMP], dest[i][RCOMP] );
- rgba[i][GCOMP] = (GLubyte) MAX2( rgba[i][GCOMP], dest[i][GCOMP] );
- rgba[i][BCOMP] = (GLubyte) MAX2( rgba[i][BCOMP], dest[i][BCOMP] );
- rgba[i][ACOMP] = (GLubyte) MAX2( rgba[i][ACOMP], dest[i][ACOMP] );
- }
+ rgba[i][GCOMP] = (GLubyte) MAX2( rgba[i][GCOMP], dest[i][GCOMP] );
+ rgba[i][BCOMP] = (GLubyte) MAX2( rgba[i][BCOMP], dest[i][BCOMP] );
+ rgba[i][ACOMP] = (GLubyte) MAX2( rgba[i][ACOMP], dest[i][ACOMP] );
+ }
}
}
/*
* Modulate: result = src * dest
*/
-static void blend_modulate( GLcontext *ctx, GLuint n, const GLubyte mask[],
- GLubyte rgba[][4], CONST GLubyte dest[][4] )
+static void _BLENDAPI blend_modulate( GLcontext *ctx, GLuint n, const GLubyte mask[],
+ GLubyte rgba[][4], CONST GLubyte dest[][4] )
{
GLuint i;
(void) ctx;
* In/Out: rgba - the incoming and modified pixels
* Input: dest - the pixels from the dest color buffer
*/
-static void blend_general( GLcontext *ctx, GLuint n, const GLubyte mask[],
- GLubyte rgba[][4], CONST GLubyte dest[][4] )
+static void _BLENDAPI blend_general( GLcontext *ctx, GLuint n, const GLubyte mask[],
+ GLubyte rgba[][4], CONST GLubyte dest[][4] )
{
GLfloat rscale = 1.0F / 255.0F;
GLfloat gscale = 1.0F / 255.0F;
-/* $Id: 3dnow.c,v 1.2 1999/10/19 18:37:06 keithw Exp $ */
+/* $Id: 3dnow.c,v 1.3 1999/11/12 04:57:22 kendallb Exp $ */
/*
* Mesa 3-D graphics library
* 3DNow! optimizations contributed by
* Holger Waechtler <holger@akaflieg.extern.tu-berlin.de>
*/
-#if defined(USE_3DNOW_ASM)
+#if defined(USE_3DNOW_ASM) && defined(USE_X86_ASM)
#include "3dnow.h"
#include <limits.h>
#define DECLARE_XFORM_GROUP(pfx, v, masked) \
- extern void gl_##pfx##_transform_points##v##_general_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##v##_identity_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##v##_3d_no_rot_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##v##_perspective_##masked(XFORM_ARGS);\
- extern void gl_##pfx##_transform_points##v##_2d_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##v##_2d_no_rot_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##v##_3d_##masked(XFORM_ARGS);
+ extern void _ASMAPI gl##pfx##_transform_points##v##_general_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_points##v##_identity_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_points##v##_3d_no_rot_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_points##v##_perspective_##masked(XFORM_ARGS);\
+ extern void _ASMAPI gl##pfx##_transform_points##v##_2d_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_points##v##_2d_no_rot_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_points##v##_3d_##masked(XFORM_ARGS);
#define ASSIGN_XFORM_GROUP( pfx, cma, vsize, masked ) \
gl_transform_tab[cma][vsize][MATRIX_GENERAL] \
- = gl_##pfx##_transform_points##vsize##_general_##masked; \
+ = gl##pfx##_transform_points##vsize##_general_##masked; \
gl_transform_tab[cma][vsize][MATRIX_IDENTITY] \
- = gl_##pfx##_transform_points##vsize##_identity_##masked; \
+ = gl##pfx##_transform_points##vsize##_identity_##masked; \
gl_transform_tab[cma][vsize][MATRIX_3D_NO_ROT] \
- = gl_##pfx##_transform_points##vsize##_3d_no_rot_##masked; \
+ = gl##pfx##_transform_points##vsize##_3d_no_rot_##masked; \
gl_transform_tab[cma][vsize][MATRIX_PERSPECTIVE] \
- = gl_##pfx##_transform_points##vsize##_perspective_##masked; \
+ = gl##pfx##_transform_points##vsize##_perspective_##masked; \
gl_transform_tab[cma][vsize][MATRIX_2D] \
- = gl_##pfx##_transform_points##vsize##_2d_##masked; \
+ = gl##pfx##_transform_points##vsize##_2d_##masked; \
gl_transform_tab[cma][vsize][MATRIX_2D_NO_ROT] \
- = gl_##pfx##_transform_points##vsize##_2d_no_rot_##masked; \
+ = gl##pfx##_transform_points##vsize##_2d_no_rot_##masked; \
gl_transform_tab[cma][vsize][MATRIX_3D] \
- = gl_##pfx##_transform_points##vsize##_3d_##masked;
+ = gl##pfx##_transform_points##vsize##_3d_##masked;
#define DECLARE_NORM_GROUP(pfx, masked) \
- extern void gl_##pfx##_rescale_normals_##masked## (NORM_ARGS); \
- extern void gl_##pfx##_normalize_normals_##masked## (NORM_ARGS); \
- extern void gl_##pfx##_transform_normals_##masked## (NORM_ARGS); \
- extern void gl_##pfx##_transform_normals_no_rot_##masked## (NORM_ARGS); \
- extern void gl_##pfx##_transform_rescale_normals_##masked## (NORM_ARGS); \
- extern void gl_##pfx##_transform_rescale_normals_no_rot_##masked## (NORM_ARGS); \
- extern void gl_##pfx##_transform_normalize_normals_##masked## (NORM_ARGS); \
- extern void gl_##pfx##_transform_normalize_normals_no_rot_##masked## (NORM_ARGS);
+ extern void _ASMAPI gl##pfx##_rescale_normals_##masked## (NORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_normalize_normals_##masked## (NORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_normals_##masked## (NORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_normals_no_rot_##masked## (NORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_rescale_normals_##masked## (NORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_rescale_normals_no_rot_##masked## (NORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_normalize_normals_##masked## (NORM_ARGS); \
+ extern void _ASMAPI gl##pfx##_transform_normalize_normals_no_rot_##masked## (NORM_ARGS);
#define ASSIGN_NORM_GROUP( pfx, cma, masked ) \
gl_normal_tab[NORM_RESCALE][cma] = \
- gl_##pfx##_rescale_normals_##masked##; \
+ gl##pfx##_rescale_normals_##masked##; \
gl_normal_tab[NORM_NORMALIZE][cma] = \
- gl_##pfx##_normalize_normals_##masked##; \
+ gl##pfx##_normalize_normals_##masked##; \
gl_normal_tab[NORM_TRANSFORM][cma] = \
- gl_##pfx##_transform_normals_##masked##; \
+ gl##pfx##_transform_normals_##masked##; \
gl_normal_tab[NORM_TRANSFORM_NO_ROT][cma] = \
- gl_##pfx##_transform_normals_no_rot_##masked##; \
+ gl##pfx##_transform_normals_no_rot_##masked##; \
gl_normal_tab[NORM_TRANSFORM | NORM_RESCALE][cma] = \
- gl_##pfx##_transform_rescale_normals_##masked##; \
+ gl##pfx##_transform_rescale_normals_##masked##; \
gl_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_RESCALE][cma] = \
- gl_##pfx##_transform_rescale_normals_no_rot_##masked##; \
+ gl##pfx##_transform_rescale_normals_no_rot_##masked##; \
gl_normal_tab[NORM_TRANSFORM | NORM_NORMALIZE][cma] = \
- gl_##pfx##_transform_normalize_normals_##masked##; \
+ gl##pfx##_transform_normalize_normals_##masked##; \
gl_normal_tab[NORM_TRANSFORM_NO_ROT | NORM_NORMALIZE][cma] = \
- gl_##pfx##_transform_normalize_normals_no_rot_##masked##;
+ gl##pfx##_transform_normalize_normals_no_rot_##masked##;
-extern void gl_3dnow_project_vertices( GLfloat *first,
+extern void _ASMAPI gl_3dnow_project_vertices( GLfloat *first,
GLfloat *last,
const GLfloat *m,
GLuint stride );
-extern void gl_3dnow_project_clipped_vertices( GLfloat *first,
+extern void _ASMAPI gl_3dnow_project_clipped_vertices( GLfloat *first,
GLfloat *last,
const GLfloat *m,
GLuint stride,
const GLubyte *clipmask );
-extern void gl_v16_3dnow_general_xform( GLfloat *first_vert,
+extern void _ASMAPI gl_v16_3dnow_general_xform( GLfloat *first_vert,
const GLfloat *m,
const GLfloat *src,
GLuint src_stride,
void gl_init_3dnow_asm_transforms (void)
{
- DECLARE_XFORM_GROUP( 3dnow, 1, raw )
- DECLARE_XFORM_GROUP( 3dnow, 2, raw )
- DECLARE_XFORM_GROUP( 3dnow, 3, raw )
- DECLARE_XFORM_GROUP( 3dnow, 4, raw )
-
- DECLARE_XFORM_GROUP( 3dnow, 1, masked )
- DECLARE_XFORM_GROUP( 3dnow, 2, masked )
- DECLARE_XFORM_GROUP( 3dnow, 3, masked )
- DECLARE_XFORM_GROUP( 3dnow, 4, masked )
-
- DECLARE_NORM_GROUP( 3dnow, raw )
-/* DECLARE_NORM_GROUP( 3dnow, masked )
+ DECLARE_XFORM_GROUP( _3dnow, 1, raw )
+ DECLARE_XFORM_GROUP( _3dnow, 2, raw )
+ DECLARE_XFORM_GROUP( _3dnow, 3, raw )
+ DECLARE_XFORM_GROUP( _3dnow, 4, raw )
+
+ DECLARE_XFORM_GROUP( _3dnow, 1, masked )
+ DECLARE_XFORM_GROUP( _3dnow, 2, masked )
+ DECLARE_XFORM_GROUP( _3dnow, 3, masked )
+ DECLARE_XFORM_GROUP( _3dnow, 4, masked )
+
+ DECLARE_NORM_GROUP( _3dnow, raw )
+/* DECLARE_NORM_GROUP( _3dnow, masked )
*/
- ASSIGN_XFORM_GROUP( 3dnow, 0, 1, raw )
- ASSIGN_XFORM_GROUP( 3dnow, 0, 2, raw )
- ASSIGN_XFORM_GROUP( 3dnow, 0, 3, raw )
- ASSIGN_XFORM_GROUP( 3dnow, 0, 4, raw )
+ ASSIGN_XFORM_GROUP( _3dnow, 0, 1, raw )
+ ASSIGN_XFORM_GROUP( _3dnow, 0, 2, raw )
+ ASSIGN_XFORM_GROUP( _3dnow, 0, 3, raw )
+ ASSIGN_XFORM_GROUP( _3dnow, 0, 4, raw )
- ASSIGN_XFORM_GROUP( 3dnow, CULL_MASK_ACTIVE, 1, masked )
- ASSIGN_XFORM_GROUP( 3dnow, CULL_MASK_ACTIVE, 2, masked )
- ASSIGN_XFORM_GROUP( 3dnow, CULL_MASK_ACTIVE, 3, masked )
- ASSIGN_XFORM_GROUP( 3dnow, CULL_MASK_ACTIVE, 4, masked )
+ ASSIGN_XFORM_GROUP( _3dnow, CULL_MASK_ACTIVE, 1, masked )
+ ASSIGN_XFORM_GROUP( _3dnow, CULL_MASK_ACTIVE, 2, masked )
+ ASSIGN_XFORM_GROUP( _3dnow, CULL_MASK_ACTIVE, 3, masked )
+ ASSIGN_XFORM_GROUP( _3dnow, CULL_MASK_ACTIVE, 4, masked )
- ASSIGN_NORM_GROUP( 3dnow, 0, raw )
-/* ASSIGN_NORM_GROUP( 3dnow, CULL_MASK_ACTIVE, masked )
+ ASSIGN_NORM_GROUP( _3dnow, 0, raw )
+/* ASSIGN_NORM_GROUP( _3dnow, CULL_MASK_ACTIVE, masked )
*/
#ifdef DEBUG
}
#endif
-
-/* $Id: x86.c,v 1.2 1999/10/19 18:37:07 keithw Exp $ */
+/* $Id: x86.c,v 1.3 1999/11/12 04:57:23 kendallb Exp $ */
/*
* Mesa 3-D graphics library
#include "xform.h"
#include "x86.h"
-extern void gl_v16_x86_cliptest_points4(GLfloat *first_vert,
+extern void _ASMAPI gl_v16_x86_cliptest_points4(GLfloat *first_vert,
GLfloat *last_vert,
GLubyte *or_mask,
GLubyte *and_mask,
GLubyte *clip_mask );
-extern void gl_v16_x86_general_xform(GLfloat *dest,
+extern void _ASMAPI gl_v16_x86_general_xform(GLfloat *dest,
const GLfloat *m,
const GLfloat *src,
GLuint src_stride,
const GLubyte flag
#define DECLARE_XFORM_GROUP(pfx, vsize, masked) \
- extern void gl_##pfx##_transform_points##vsize##_general_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##vsize##_identity_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##vsize##_3d_no_rot_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##vsize##_perspective_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##vsize##_2d_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##vsize##_2d_no_rot_##masked(XFORM_ARGS); \
- extern void gl_##pfx##_transform_points##vsize##_3d_##masked(XFORM_ARGS);
+ extern void _ASMAPI gl_##pfx##_transform_points##vsize##_general_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl_##pfx##_transform_points##vsize##_identity_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl_##pfx##_transform_points##vsize##_3d_no_rot_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl_##pfx##_transform_points##vsize##_perspective_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl_##pfx##_transform_points##vsize##_2d_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl_##pfx##_transform_points##vsize##_2d_no_rot_##masked(XFORM_ARGS); \
+ extern void _ASMAPI gl_##pfx##_transform_points##vsize##_3d_##masked(XFORM_ARGS);
#define ASSIGN_XFORM_GROUP( pfx, cma, vsize, masked ) \
gl_transform_tab[cma][vsize][MATRIX_GENERAL] \
DECLARE_XFORM_GROUP( x86, 3, masked )
DECLARE_XFORM_GROUP( x86, 4, masked )
- extern GLvector4f *gl_x86_cliptest_points4( GLvector4f *clip_vec,
+ extern GLvector4f * _ASMAPI gl_x86_cliptest_points4( GLvector4f *clip_vec,
GLvector4f *proj_vec,
GLubyte clipMask[],
GLubyte *orMask,