diff options
Diffstat (limited to 'xc/extras/Mesa/src/hint.c')
-rw-r--r-- | xc/extras/Mesa/src/hint.c | 157 |
1 files changed, 89 insertions, 68 deletions
diff --git a/xc/extras/Mesa/src/hint.c b/xc/extras/Mesa/src/hint.c index 210138d2b..6537bd004 100644 --- a/xc/extras/Mesa/src/hint.c +++ b/xc/extras/Mesa/src/hint.c @@ -52,78 +52,94 @@ _mesa_try_Hint( GLcontext *ctx, GLenum target, GLenum mode ) if (MESA_VERBOSE & VERBOSE_API) fprintf(stderr, "glHint %s %d\n", gl_lookup_enum_by_nr(target), mode); + if (mode != GL_NICEST && mode != GL_FASTEST && mode != GL_DONT_CARE) { + gl_error(ctx, GL_INVALID_ENUM, "glHint(mode)"); + return GL_FALSE; + } + switch (target) { - case GL_FOG_HINT: - ctx->Hint.Fog = mode; - break; - case GL_LINE_SMOOTH_HINT: - ctx->Hint.LineSmooth = mode; - break; - case GL_PERSPECTIVE_CORRECTION_HINT: - ctx->Hint.PerspectiveCorrection = mode; - break; - case GL_POINT_SMOOTH_HINT: - ctx->Hint.PointSmooth = mode; - break; - case GL_POLYGON_SMOOTH_HINT: - ctx->Hint.PolygonSmooth = mode; - break; - case GL_PREFER_DOUBLEBUFFER_HINT_PGI: - case GL_STRICT_DEPTHFUNC_HINT_PGI: - break; - case GL_STRICT_LIGHTING_HINT_PGI: - ctx->Hint.StrictLighting = mode; - break; - case GL_STRICT_SCISSOR_HINT_PGI: - case GL_FULL_STIPPLE_HINT_PGI: - case GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI: - case GL_NATIVE_GRAPHICS_END_HINT_PGI: - case GL_CONSERVE_MEMORY_HINT_PGI: - case GL_RECLAIM_MEMORY_HINT_PGI: - break; - case GL_ALWAYS_FAST_HINT_PGI: - if (mode) { - ctx->Hint.AllowDrawWin = GL_TRUE; - ctx->Hint.AllowDrawSpn = GL_FALSE; - ctx->Hint.AllowDrawMem = GL_FALSE; - } else { - ctx->Hint.AllowDrawWin = GL_TRUE; - ctx->Hint.AllowDrawSpn = GL_TRUE; - ctx->Hint.AllowDrawMem = GL_TRUE; - } - break; - case GL_ALWAYS_SOFT_HINT_PGI: - ctx->Hint.AllowDrawWin = GL_TRUE; - ctx->Hint.AllowDrawSpn = GL_TRUE; - ctx->Hint.AllowDrawMem = GL_TRUE; - break; - case GL_ALLOW_DRAW_OBJ_HINT_PGI: - break; - case GL_ALLOW_DRAW_WIN_HINT_PGI: - ctx->Hint.AllowDrawWin = mode; - break; - case GL_ALLOW_DRAW_SPN_HINT_PGI: - ctx->Hint.AllowDrawSpn = mode; - break; - case GL_ALLOW_DRAW_MEM_HINT_PGI: - ctx->Hint.AllowDrawMem = mode; - break; - case GL_CLIP_NEAR_HINT_PGI: - case GL_CLIP_FAR_HINT_PGI: - case GL_WIDE_LINE_HINT_PGI: - case GL_BACK_NORMALS_HINT_PGI: - case GL_NATIVE_GRAPHICS_HANDLE_PGI: - break; + case GL_FOG_HINT: + ctx->Hint.Fog = mode; + break; + case GL_LINE_SMOOTH_HINT: + ctx->Hint.LineSmooth = mode; + break; + case GL_PERSPECTIVE_CORRECTION_HINT: + ctx->Hint.PerspectiveCorrection = mode; + break; + case GL_POINT_SMOOTH_HINT: + ctx->Hint.PointSmooth = mode; + break; + case GL_POLYGON_SMOOTH_HINT: + ctx->Hint.PolygonSmooth = mode; + break; + case GL_PREFER_DOUBLEBUFFER_HINT_PGI: + case GL_STRICT_DEPTHFUNC_HINT_PGI: + break; + case GL_STRICT_LIGHTING_HINT_PGI: + ctx->Hint.StrictLighting = mode; + break; + case GL_STRICT_SCISSOR_HINT_PGI: + case GL_FULL_STIPPLE_HINT_PGI: + case GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI: + case GL_NATIVE_GRAPHICS_END_HINT_PGI: + case GL_CONSERVE_MEMORY_HINT_PGI: + case GL_RECLAIM_MEMORY_HINT_PGI: + break; + case GL_ALWAYS_FAST_HINT_PGI: + if (mode) { + ctx->Hint.AllowDrawWin = GL_TRUE; + ctx->Hint.AllowDrawFrg = GL_FALSE; + ctx->Hint.AllowDrawMem = GL_FALSE; + } else { + ctx->Hint.AllowDrawWin = GL_TRUE; + ctx->Hint.AllowDrawFrg = GL_TRUE; + ctx->Hint.AllowDrawMem = GL_TRUE; + } + break; + case GL_ALWAYS_SOFT_HINT_PGI: + ctx->Hint.AllowDrawWin = GL_TRUE; + ctx->Hint.AllowDrawFrg = GL_TRUE; + ctx->Hint.AllowDrawMem = GL_TRUE; + break; + case GL_ALLOW_DRAW_OBJ_HINT_PGI: + break; + case GL_ALLOW_DRAW_WIN_HINT_PGI: + ctx->Hint.AllowDrawWin = mode; + break; + case GL_ALLOW_DRAW_FRG_HINT_PGI: + ctx->Hint.AllowDrawFrg = mode; + break; + case GL_ALLOW_DRAW_MEM_HINT_PGI: + ctx->Hint.AllowDrawMem = mode; + break; + case GL_CLIP_NEAR_HINT_PGI: + case GL_CLIP_FAR_HINT_PGI: + case GL_WIDE_LINE_HINT_PGI: + case GL_BACK_NORMALS_HINT_PGI: + case GL_NATIVE_GRAPHICS_HANDLE_PGI: + break; /* GL_EXT_clip_volume_hint */ - case GL_CLIP_VOLUME_CLIPPING_HINT_EXT: - ctx->Hint.ClipVolumeClipping = mode; - break; + case GL_CLIP_VOLUME_CLIPPING_HINT_EXT: + ctx->Hint.ClipVolumeClipping = mode; + break; - default: - gl_error( ctx, GL_INVALID_ENUM, "glHint(target)" ); - return GL_FALSE; + /* GL_ARB_texture_compression */ + case GL_TEXTURE_COMPRESSION_HINT_ARB: + if (ctx->Extensions.HaveTextureCompression) { + ctx->Hint.TextureCompression = mode; + } + else { + gl_error(ctx, GL_INVALID_ENUM, "glHint(target)"); + } + break; + + default: + gl_error(ctx, GL_INVALID_ENUM, "glHint(target)"); + return GL_FALSE; } + ctx->NewState |= NEW_ALL; /* just to be safe */ if (ctx->Driver.Hint) { @@ -143,6 +159,11 @@ _mesa_HintPGI( GLenum target, GLint mode ) if (MESA_VERBOSE & VERBOSE_API) fprintf(stderr, "glHintPGI %s %d\n", gl_lookup_enum_by_nr(target), mode); + if (mode != GL_NICEST && mode != GL_FASTEST && mode != GL_DONT_CARE) { + gl_error(ctx, GL_INVALID_ENUM, "glHintPGI(mode)"); + return; + } + switch (target) { case GL_PREFER_DOUBLEBUFFER_HINT_PGI: case GL_STRICT_DEPTHFUNC_HINT_PGI: @@ -157,7 +178,7 @@ _mesa_HintPGI( GLenum target, GLint mode ) case GL_ALWAYS_SOFT_HINT_PGI: case GL_ALLOW_DRAW_OBJ_HINT_PGI: case GL_ALLOW_DRAW_WIN_HINT_PGI: - case GL_ALLOW_DRAW_SPN_HINT_PGI: + case GL_ALLOW_DRAW_FRG_HINT_PGI: case GL_ALLOW_DRAW_MEM_HINT_PGI: case GL_CLIP_NEAR_HINT_PGI: case GL_CLIP_FAR_HINT_PGI: |