mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-20 11:40:10 +01:00
various pipeline bugs
This commit is contained in:
parent
0552b30633
commit
2be79c1aa2
9 changed files with 69 additions and 31 deletions
|
|
@ -948,6 +948,7 @@ fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win,GrScreenResolution_t res
|
||||||
fxMesa->haveTwoTMUs=GL_FALSE;
|
fxMesa->haveTwoTMUs=GL_FALSE;
|
||||||
|
|
||||||
if (getenv("FX_EMULATE_SINGLE_TMU")) {
|
if (getenv("FX_EMULATE_SINGLE_TMU")) {
|
||||||
|
fprint(stderr, "stadnnadna;lskdjf");
|
||||||
if (MESA_VERBOSE&VERBOSE_DRIVER)
|
if (MESA_VERBOSE&VERBOSE_DRIVER)
|
||||||
fprintf(stderr, "\n\nEmulating single tmu\n\n");
|
fprintf(stderr, "\n\nEmulating single tmu\n\n");
|
||||||
fxMesa->haveTwoTMUs = GL_FALSE;
|
fxMesa->haveTwoTMUs = GL_FALSE;
|
||||||
|
|
|
||||||
|
|
@ -513,6 +513,10 @@ static void fxDDUpdateDDPointers(GLcontext *ctx)
|
||||||
if(new_state & INTERESTED) {
|
if(new_state & INTERESTED) {
|
||||||
fxDDChooseRenderState( ctx );
|
fxDDChooseRenderState( ctx );
|
||||||
fxMesa->RenderVBTables=fxDDChooseRenderVBTables(ctx);
|
fxMesa->RenderVBTables=fxDDChooseRenderVBTables(ctx);
|
||||||
|
fxMesa->RenderVBClippedTab=fxMesa->RenderVBTables[0];
|
||||||
|
fxMesa->RenderVBCulledTab=fxMesa->RenderVBTables[1];
|
||||||
|
fxMesa->RenderVBRawTab=fxMesa->RenderVBTables[2];
|
||||||
|
|
||||||
ctx->Driver.RasterSetup=fxDDChooseSetupFunction(ctx);
|
ctx->Driver.RasterSetup=fxDDChooseSetupFunction(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -520,10 +524,6 @@ static void fxDDUpdateDDPointers(GLcontext *ctx)
|
||||||
ctx->Driver.LineFunc=fxMesa->LineFunc;
|
ctx->Driver.LineFunc=fxMesa->LineFunc;
|
||||||
ctx->Driver.TriangleFunc=fxMesa->TriangleFunc;
|
ctx->Driver.TriangleFunc=fxMesa->TriangleFunc;
|
||||||
ctx->Driver.QuadFunc=fxMesa->QuadFunc;
|
ctx->Driver.QuadFunc=fxMesa->QuadFunc;
|
||||||
ctx->Driver.RenderVBClippedTab=fxMesa->RenderVBTables[0];
|
|
||||||
ctx->Driver.RenderVBCulledTab=fxMesa->RenderVBTables[1];
|
|
||||||
ctx->Driver.RenderVBRawTab=fxMesa->RenderVBTables[2];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->Driver.AllocDepthBuffer=fxAllocDepthBuffer;
|
ctx->Driver.AllocDepthBuffer=fxAllocDepthBuffer;
|
||||||
|
|
|
||||||
|
|
@ -420,6 +420,11 @@ struct tfxMesaContext {
|
||||||
|
|
||||||
render_func **RenderVBTables;
|
render_func **RenderVBTables;
|
||||||
|
|
||||||
|
render_func *RenderVBClippedTab;
|
||||||
|
render_func *RenderVBCulledTab;
|
||||||
|
render_func *RenderVBRawTab;
|
||||||
|
|
||||||
|
|
||||||
tfxStats stats;
|
tfxStats stats;
|
||||||
|
|
||||||
void *state;
|
void *state;
|
||||||
|
|
@ -570,7 +575,10 @@ extern void fxDDShadeModel(GLcontext *ctx, GLenum mode);
|
||||||
extern void fxDDCullFace(GLcontext *ctx, GLenum mode);
|
extern void fxDDCullFace(GLcontext *ctx, GLenum mode);
|
||||||
extern void fxDDFrontFace(GLcontext *ctx, GLenum mode);
|
extern void fxDDFrontFace(GLcontext *ctx, GLenum mode);
|
||||||
|
|
||||||
|
extern void fxPrintRenderState( const char *msg, GLuint state );
|
||||||
|
extern void fxPrintHintState( const char *msg, GLuint state );
|
||||||
|
|
||||||
|
extern void fxDDDoRenderVB( struct vertex_buffer *VB );
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: context.c,v 1.1 1999/08/19 00:55:41 jtg Exp $ */
|
/* $Id: context.c,v 1.2 1999/08/26 14:50:49 keithw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
|
|
@ -764,7 +764,7 @@ static void initialize_context( GLcontext *ctx )
|
||||||
/* Extensions */
|
/* Extensions */
|
||||||
gl_extensions_ctr( ctx );
|
gl_extensions_ctr( ctx );
|
||||||
|
|
||||||
ctx->AllowVertexCull = 0;
|
ctx->AllowVertexCull = CLIP_CULLED_BIT;
|
||||||
|
|
||||||
/* Lighting group */
|
/* Lighting group */
|
||||||
for (i=0;i<MAX_LIGHTS;i++) {
|
for (i=0;i<MAX_LIGHTS;i++) {
|
||||||
|
|
@ -1919,6 +1919,8 @@ static void update_pixel_masking( GLcontext *ctx )
|
||||||
|
|
||||||
static void update_fog_mode( GLcontext *ctx )
|
static void update_fog_mode( GLcontext *ctx )
|
||||||
{
|
{
|
||||||
|
int old_mode = ctx->FogMode;
|
||||||
|
|
||||||
if (ctx->Fog.Enabled) {
|
if (ctx->Fog.Enabled) {
|
||||||
if (ctx->Texture.Enabled)
|
if (ctx->Texture.Enabled)
|
||||||
ctx->FogMode = FOG_FRAGMENT;
|
ctx->FogMode = FOG_FRAGMENT;
|
||||||
|
|
@ -1934,6 +1936,9 @@ static void update_fog_mode( GLcontext *ctx )
|
||||||
else {
|
else {
|
||||||
ctx->FogMode = FOG_NONE;
|
ctx->FogMode = FOG_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (old_mode != ctx->FogMode)
|
||||||
|
ctx->NewState |= NEW_FOG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -2121,7 +2126,9 @@ void gl_update_state( GLcontext *ctx )
|
||||||
ctx->NeedNormals = (ctx->Light.Enabled || ctx->Texture.NeedNormals);
|
ctx->NeedNormals = (ctx->Light.Enabled || ctx->Texture.NeedNormals);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->NewState & (NEW_RASTER_OPS | NEW_LIGHTING)) {
|
if (ctx->NewState & (NEW_RASTER_OPS | NEW_LIGHTING | NEW_FOG)) {
|
||||||
|
|
||||||
|
|
||||||
if (ctx->NewState & NEW_RASTER_OPS) {
|
if (ctx->NewState & NEW_RASTER_OPS) {
|
||||||
update_pixel_logic(ctx);
|
update_pixel_logic(ctx);
|
||||||
update_pixel_masking(ctx);
|
update_pixel_masking(ctx);
|
||||||
|
|
@ -2192,10 +2199,10 @@ void gl_update_state( GLcontext *ctx )
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->NewState & NEW_LIGHTING) {
|
if (ctx->NewState & NEW_LIGHTING) {
|
||||||
ctx->TriangleCaps &= ~(DD_TRI_LIGHT_TWOSIDE|DD_EARLY_CULL);
|
ctx->TriangleCaps &= ~(DD_TRI_LIGHT_TWOSIDE|DD_LIGHTING_CULL);
|
||||||
if (ctx->Light.Enabled) {
|
if (ctx->Light.Enabled) {
|
||||||
if (ctx->Light.Model.TwoSide)
|
if (ctx->Light.Model.TwoSide)
|
||||||
ctx->TriangleCaps |= (DD_TRI_LIGHT_TWOSIDE|DD_EARLY_CULL);
|
ctx->TriangleCaps |= (DD_TRI_LIGHT_TWOSIDE|DD_LIGHTING_CULL);
|
||||||
gl_update_lighting(ctx);
|
gl_update_lighting(ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2207,21 +2214,29 @@ void gl_update_state( GLcontext *ctx )
|
||||||
if (ctx->NewState & NEW_POLYGON) {
|
if (ctx->NewState & NEW_POLYGON) {
|
||||||
/* Setup CullBits bitmask */
|
/* Setup CullBits bitmask */
|
||||||
if (ctx->Polygon.CullFlag) {
|
if (ctx->Polygon.CullFlag) {
|
||||||
|
ctx->backface_sign = 1;
|
||||||
switch(ctx->Polygon.CullFaceMode) {
|
switch(ctx->Polygon.CullFaceMode) {
|
||||||
case GL_FRONT:
|
|
||||||
ctx->Polygon.CullBits = 2;
|
|
||||||
break;
|
|
||||||
case GL_BACK:
|
case GL_BACK:
|
||||||
|
if(ctx->Polygon.FrontFace==GL_CCW)
|
||||||
|
ctx->backface_sign = -1;
|
||||||
ctx->Polygon.CullBits = 1;
|
ctx->Polygon.CullBits = 1;
|
||||||
break;
|
break;
|
||||||
|
case GL_FRONT:
|
||||||
|
if(ctx->Polygon.FrontFace!=GL_CCW)
|
||||||
|
ctx->backface_sign = -1;
|
||||||
|
ctx->Polygon.CullBits = 2;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
case GL_FRONT_AND_BACK:
|
case GL_FRONT_AND_BACK:
|
||||||
|
ctx->backface_sign = 0;
|
||||||
ctx->Polygon.CullBits = 3;
|
ctx->Polygon.CullBits = 3;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
ctx->Polygon.CullBits = 3;
|
ctx->Polygon.CullBits = 3;
|
||||||
|
ctx->backface_sign = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Any Polygon offsets enabled? */
|
/* Any Polygon offsets enabled? */
|
||||||
ctx->TriangleCaps &= ~DD_TRI_OFFSET;
|
ctx->TriangleCaps &= ~DD_TRI_OFFSET;
|
||||||
|
|
@ -2257,6 +2272,9 @@ void gl_update_state( GLcontext *ctx )
|
||||||
ctx->IndirectTriangles = ctx->TriangleCaps & ~ctx->Driver.TriangleCaps;
|
ctx->IndirectTriangles = ctx->TriangleCaps & ~ctx->Driver.TriangleCaps;
|
||||||
ctx->IndirectTriangles |= DD_SW_RASTERIZE;
|
ctx->IndirectTriangles |= DD_SW_RASTERIZE;
|
||||||
|
|
||||||
|
if (MESA_VERBOSE&VERBOSE_CULL)
|
||||||
|
gl_print_tri_caps("initial indirect tris", ctx->IndirectTriangles);
|
||||||
|
|
||||||
ctx->Driver.PointsFunc = NULL;
|
ctx->Driver.PointsFunc = NULL;
|
||||||
ctx->Driver.LineFunc = NULL;
|
ctx->Driver.LineFunc = NULL;
|
||||||
ctx->Driver.TriangleFunc = NULL;
|
ctx->Driver.TriangleFunc = NULL;
|
||||||
|
|
@ -2272,6 +2290,9 @@ void gl_update_state( GLcontext *ctx )
|
||||||
*/
|
*/
|
||||||
ctx->Driver.UpdateState(ctx);
|
ctx->Driver.UpdateState(ctx);
|
||||||
|
|
||||||
|
if (MESA_VERBOSE&VERBOSE_CULL)
|
||||||
|
gl_print_tri_caps("indirect tris", ctx->IndirectTriangles);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In case the driver didn't hook in an optimized point, line or
|
* In case the driver didn't hook in an optimized point, line or
|
||||||
* triangle function we'll now select "core/fallback" point, line
|
* triangle function we'll now select "core/fallback" point, line
|
||||||
|
|
@ -2282,8 +2303,16 @@ void gl_update_state( GLcontext *ctx )
|
||||||
gl_set_line_function(ctx);
|
gl_set_line_function(ctx);
|
||||||
gl_set_triangle_function(ctx);
|
gl_set_triangle_function(ctx);
|
||||||
gl_set_quad_function(ctx);
|
gl_set_quad_function(ctx);
|
||||||
|
|
||||||
|
if ((ctx->IndirectTriangles &
|
||||||
|
(DD_TRI_SW_RASTERIZE|DD_QUAD_SW_RASTERIZE|DD_TRI_CULL)) ==
|
||||||
|
(DD_TRI_SW_RASTERIZE|DD_QUAD_SW_RASTERIZE|DD_TRI_CULL))
|
||||||
|
ctx->IndirectTriangles &= ~DD_TRI_CULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MESA_VERBOSE&VERBOSE_CULL)
|
||||||
|
gl_print_tri_caps("indirect tris 2", ctx->IndirectTriangles);
|
||||||
|
|
||||||
gl_set_render_vb_function(ctx);
|
gl_set_render_vb_function(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2311,9 +2340,10 @@ void gl_update_state( GLcontext *ctx )
|
||||||
/* Figure out whether we can light in object space or not. If we
|
/* Figure out whether we can light in object space or not. If we
|
||||||
* can, find the current positions of the lights in object space
|
* can, find the current positions of the lights in object space
|
||||||
*/
|
*/
|
||||||
if ((ctx->Enabled & (ENABLE_POINT_ATTEN | ENABLE_LIGHT |
|
if ((ctx->Enabled & (ENABLE_POINT_ATTEN | ENABLE_LIGHT | ENABLE_FOG |
|
||||||
ENABLE_TEXGEN0 | ENABLE_TEXGEN1)) &&
|
ENABLE_TEXGEN0 | ENABLE_TEXGEN1)) &&
|
||||||
(ctx->NewState & (NEW_LIGHTING |
|
(ctx->NewState & (NEW_LIGHTING |
|
||||||
|
NEW_FOG |
|
||||||
NEW_MODELVIEW |
|
NEW_MODELVIEW |
|
||||||
NEW_PROJECTION |
|
NEW_PROJECTION |
|
||||||
NEW_TEXTURING |
|
NEW_TEXTURING |
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: dlist.c,v 1.1 1999/08/19 00:55:41 jtg Exp $ */
|
/* $Id: dlist.c,v 1.2 1999/08/26 14:50:49 keithw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
|
|
@ -2454,6 +2454,10 @@ static void execute_list( GLcontext *ctx, GLuint list )
|
||||||
case OPCODE_VERTEX_CASSETTE:
|
case OPCODE_VERTEX_CASSETTE:
|
||||||
if (ctx->NewState)
|
if (ctx->NewState)
|
||||||
gl_update_state(ctx);
|
gl_update_state(ctx);
|
||||||
|
if (ctx->CompileCVAFlag) {
|
||||||
|
ctx->CompileCVAFlag = 0;
|
||||||
|
ctx->CVA.elt.pipeline_valid = 0;
|
||||||
|
}
|
||||||
if (!ctx->CVA.elt.pipeline_valid)
|
if (!ctx->CVA.elt.pipeline_valid)
|
||||||
gl_build_immediate_pipeline( ctx );
|
gl_build_immediate_pipeline( ctx );
|
||||||
gl_fixup_cassette( ctx, (struct immediate *) n[1].data );
|
gl_fixup_cassette( ctx, (struct immediate *) n[1].data );
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: enable.c,v 1.2 1999/08/19 13:24:27 brianp Exp $ */
|
/* $Id: enable.c,v 1.3 1999/08/26 14:50:49 keithw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
|
|
@ -56,7 +56,7 @@ void gl_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
|
||||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH( ctx, "gl_enable/disable" );
|
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH( ctx, "gl_enable/disable" );
|
||||||
|
|
||||||
if (MESA_VERBOSE & VERBOSE_API)
|
if (MESA_VERBOSE & VERBOSE_API)
|
||||||
fprintf(stderr, "%s %s (%x)\n",
|
fprintf(stderr, "%s %s (newstate is %x)\n",
|
||||||
state ? "glEnable" : "glDisable",
|
state ? "glEnable" : "glDisable",
|
||||||
gl_lookup_enum_by_nr(cap),
|
gl_lookup_enum_by_nr(cap),
|
||||||
ctx->NewState);
|
ctx->NewState);
|
||||||
|
|
@ -153,7 +153,7 @@ void gl_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
|
||||||
if (ctx->Fog.Enabled!=state) {
|
if (ctx->Fog.Enabled!=state) {
|
||||||
ctx->Fog.Enabled = state;
|
ctx->Fog.Enabled = state;
|
||||||
ctx->Enabled ^= ENABLE_FOG;
|
ctx->Enabled ^= ENABLE_FOG;
|
||||||
ctx->NewState |= NEW_FOG;
|
ctx->NewState |= NEW_FOG|NEW_RASTER_OPS;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GL_LIGHT0:
|
case GL_LIGHT0:
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: polygon.c,v 1.1 1999/08/19 00:55:41 jtg Exp $ */
|
/* $Id: polygon.c,v 1.2 1999/08/26 14:50:49 keithw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
|
|
@ -119,9 +119,6 @@ void gl_PolygonMode( GLcontext *ctx, GLenum face, GLenum mode )
|
||||||
ctx->Polygon.Unfilled = GL_TRUE;
|
ctx->Polygon.Unfilled = GL_TRUE;
|
||||||
ctx->TriangleCaps |= DD_TRI_UNFILLED;
|
ctx->TriangleCaps |= DD_TRI_UNFILLED;
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
ctx->Polygon.Unfilled = GL_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx->NewState |= (NEW_POLYGON | NEW_RASTER_OPS);
|
ctx->NewState |= (NEW_POLYGON | NEW_RASTER_OPS);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: varray.c,v 1.1 1999/08/19 00:55:41 jtg Exp $ */
|
/* $Id: varray.c,v 1.2 1999/08/26 14:50:49 keithw Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
|
|
@ -407,7 +407,7 @@ void gl_exec_array_elements( GLcontext *ctx, struct immediate *IM )
|
||||||
if (translate & VERT_OBJ_ANY)
|
if (translate & VERT_OBJ_ANY)
|
||||||
(ctx->Array.VertexEltFunc)( IM->Obj,
|
(ctx->Array.VertexEltFunc)( IM->Obj,
|
||||||
&ctx->Array.Vertex,
|
&ctx->Array.Vertex,
|
||||||
flags, elts, VERT_ELT,
|
flags, elts, (VERT_ELT|VERT_OBJ_ANY),
|
||||||
start, count);
|
start, count);
|
||||||
|
|
||||||
if (translate & VERT_NORM)
|
if (translate & VERT_NORM)
|
||||||
|
|
@ -830,11 +830,10 @@ static void FUNC( GLcontext *ctx, GLenum mode, \
|
||||||
GLuint nr = MIN2( VB_MAX, count - j + VB_START ); \
|
GLuint nr = MIN2( VB_MAX, count - j + VB_START ); \
|
||||||
struct immediate *IM = ctx->input; \
|
struct immediate *IM = ctx->input; \
|
||||||
GLuint sf = IM->Flag[VB_START]; \
|
GLuint sf = IM->Flag[VB_START]; \
|
||||||
GLuint flags = IM->ArrayOrFlags; \
|
|
||||||
\
|
\
|
||||||
for (i = VB_START ; i < nr ; i++) { \
|
for (i = VB_START ; i < nr ; i++) { \
|
||||||
IM->Elt[i] = (GLuint) *indices++; \
|
IM->Elt[i] = (GLuint) *indices++; \
|
||||||
IM->Flag[i] = flags; \
|
IM->Flag[i] = VERT_ELT; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
if (j == 0) IM->Flag[VB_START] |= sf; \
|
if (j == 0) IM->Flag[VB_START] |= sf; \
|
||||||
|
|
@ -1251,8 +1250,6 @@ void gl_update_client_state( GLcontext *ctx )
|
||||||
/* Not really important any more:
|
/* Not really important any more:
|
||||||
*/
|
*/
|
||||||
ctx->Array.Summary = ctx->Array.Flags & VERT_DATA;
|
ctx->Array.Summary = ctx->Array.Flags & VERT_DATA;
|
||||||
|
|
||||||
ctx->input->ArrayOrFlags = (ctx->Array.Flags & VERT_OBJ_234) | VERT_ELT;
|
|
||||||
ctx->input->ArrayAndFlags = ~ctx->Array.Flags;
|
ctx->input->ArrayAndFlags = ~ctx->Array.Flags;
|
||||||
ctx->input->ArrayEltFlush = !(ctx->CompileCVAFlag);
|
ctx->input->ArrayEltFlush = !(ctx->CompileCVAFlag);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
#include "common_x86asm.h"
|
#include "common_x86asm.h"
|
||||||
|
|
||||||
int gl_x86_cpu_features = 0;
|
int gl_x86_cpu_features = 0;
|
||||||
|
|
@ -43,7 +44,7 @@ void gl_init_all_x86_asm (void)
|
||||||
gl_x86_cpu_features = gl_identify_x86_cpu_features ();
|
gl_x86_cpu_features = gl_identify_x86_cpu_features ();
|
||||||
|
|
||||||
if (gl_x86_cpu_features & GL_CPU_GenuineIntel) {
|
if (gl_x86_cpu_features & GL_CPU_GenuineIntel) {
|
||||||
printf ("GenuineIntel cpu detected.\n");
|
fprintf (stderr, "GenuineIntel cpu detected.\n");
|
||||||
}
|
}
|
||||||
gl_init_x86_asm_transforms ();
|
gl_init_x86_asm_transforms ();
|
||||||
|
|
||||||
|
|
@ -52,7 +53,7 @@ void gl_init_all_x86_asm (void)
|
||||||
if (gl_x86_cpu_features & GL_CPU_MMX) {
|
if (gl_x86_cpu_features & GL_CPU_MMX) {
|
||||||
char *s = getenv( "MESA_NO_MMX" );
|
char *s = getenv( "MESA_NO_MMX" );
|
||||||
if (s == NULL) {
|
if (s == NULL) {
|
||||||
printf ("MMX cpu detected.\n");
|
fprintf (stderr, "MMX cpu detected.\n");
|
||||||
} else {
|
} else {
|
||||||
gl_x86_cpu_features &= (!GL_CPU_MMX);
|
gl_x86_cpu_features &= (!GL_CPU_MMX);
|
||||||
}
|
}
|
||||||
|
|
@ -64,7 +65,7 @@ void gl_init_all_x86_asm (void)
|
||||||
if (gl_x86_cpu_features & GL_CPU_3Dnow) {
|
if (gl_x86_cpu_features & GL_CPU_3Dnow) {
|
||||||
char *s = getenv( "MESA_NO_3DNOW" );
|
char *s = getenv( "MESA_NO_3DNOW" );
|
||||||
if (s == NULL) {
|
if (s == NULL) {
|
||||||
printf ("3Dnow cpu detected.\n");
|
fprintf (stderr, "3Dnow cpu detected.\n");
|
||||||
gl_init_3dnow_asm_transforms ();
|
gl_init_3dnow_asm_transforms ();
|
||||||
} else {
|
} else {
|
||||||
gl_x86_cpu_features &= (!GL_CPU_3Dnow);
|
gl_x86_cpu_features &= (!GL_CPU_3Dnow);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue