From 6fa34de8308fd4abc2fb23aa9071a35cb08552c9 Mon Sep 17 00:00:00 2001 From: Gustaw Smolarczyk Date: Thu, 30 Mar 2017 20:09:29 +0200 Subject: mesa/main: Maintain compressed fog mode. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Gustaw Smolarczyk Signed-off-by: Marek Olšák --- src/mesa/main/enable.c | 1 + src/mesa/main/fog.c | 9 +++++++++ src/mesa/main/mtypes.h | 14 ++++++++++++++ 3 files changed, 24 insertions(+) (limited to 'src/mesa/main') diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index d9d63a6b4ba..ef278a318a1 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -385,6 +385,7 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) return; FLUSH_VERTICES(ctx, _NEW_FOG); ctx->Fog.Enabled = state; + ctx->Fog._PackedEnabledMode = state ? ctx->Fog._PackedMode : FOG_NONE; break; case GL_LIGHT0: case GL_LIGHT1: diff --git a/src/mesa/main/fog.c b/src/mesa/main/fog.c index 1ad939cfde6..76e65080b74 100644 --- a/src/mesa/main/fog.c +++ b/src/mesa/main/fog.c @@ -102,8 +102,13 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) m = (GLenum) (GLint) *params; switch (m) { case GL_LINEAR: + ctx->Fog._PackedMode = FOG_LINEAR; + break; case GL_EXP: + ctx->Fog._PackedMode = FOG_EXP; + break; case GL_EXP2: + ctx->Fog._PackedMode = FOG_EXP2; break; default: _mesa_error( ctx, GL_INVALID_ENUM, "glFog" ); @@ -113,6 +118,8 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) return; FLUSH_VERTICES(ctx, _NEW_FOG); ctx->Fog.Mode = m; + ctx->Fog._PackedEnabledMode = ctx->Fog.Enabled ? + ctx->Fog._PackedMode : FOG_NONE; break; case GL_FOG_DENSITY: if (*params<0.0F) { @@ -210,6 +217,8 @@ void _mesa_init_fog( struct gl_context * ctx ) /* Fog group */ ctx->Fog.Enabled = GL_FALSE; ctx->Fog.Mode = GL_EXP; + ctx->Fog._PackedMode = FOG_EXP; + ctx->Fog._PackedEnabledMode = FOG_NONE; ASSIGN_4V( ctx->Fog.Color, 0.0, 0.0, 0.0, 0.0 ); ASSIGN_4V( ctx->Fog.ColorUnclamped, 0.0, 0.0, 0.0, 0.0 ); ctx->Fog.Index = 0.0; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index d0fb6c7c26c..4986e42d1b3 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -574,6 +574,18 @@ struct gl_eval_attrib }; +/** + * Compressed fog mode. + */ +enum gl_fog_mode +{ + FOG_NONE, + FOG_LINEAR, + FOG_EXP, + FOG_EXP2, +}; + + /** * Fog attribute group (GL_FOG_BIT). */ @@ -581,6 +593,8 @@ struct gl_fog_attrib { GLboolean Enabled; /**< Fog enabled flag */ GLboolean ColorSumEnabled; + uint8_t _PackedMode; /**< Fog mode as 2 bits */ + uint8_t _PackedEnabledMode; /**< Masked CompressedMode */ GLfloat ColorUnclamped[4]; /**< Fog color */ GLfloat Color[4]; /**< Fog color */ GLfloat Density; /**< Density >= 0.0 */ -- cgit v1.2.3