summaryrefslogtreecommitdiff
path: root/xc/extras/Mesa/src/hint.c
diff options
context:
space:
mode:
Diffstat (limited to 'xc/extras/Mesa/src/hint.c')
-rw-r--r--xc/extras/Mesa/src/hint.c157
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: