From c19b08b079da566d5c377c1ff4fe0ae6ac980003 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 9 Jun 2017 21:27:18 +0200 Subject: [PATCH] mesa: replace ctx->VertexProgram._TwoSideEnabled with a helper function MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Nicolai Hähnle Reviewed-by: Brian Paul Reviewed-by: Timothy Arceri --- src/mesa/drivers/dri/i965/brw_sf.c | 4 ++-- src/mesa/drivers/dri/i965/genX_state_upload.c | 3 ++- src/mesa/main/mtypes.h | 2 -- src/mesa/main/state.c | 19 ------------------- src/mesa/main/state.h | 11 +++++++++++ src/mesa/state_tracker/st_atom_rasterizer.c | 3 ++- 6 files changed, 17 insertions(+), 25 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_sf.c b/src/mesa/drivers/dri/i965/brw_sf.c index 0739306f30b..d92b5197fdd 100644 --- a/src/mesa/drivers/dri/i965/brw_sf.c +++ b/src/mesa/drivers/dri/i965/brw_sf.c @@ -34,6 +34,7 @@ #include "main/mtypes.h" #include "main/enums.h" #include "main/fbobject.h" +#include "main/state.h" #include "intel_batchbuffer.h" @@ -152,8 +153,7 @@ brw_upload_sf_prog(struct brw_context *brw) } /* _NEW_LIGHT | _NEW_PROGRAM */ - key.do_twoside_color = ((ctx->Light.Enabled && ctx->Light.Model.TwoSide) || - ctx->VertexProgram._TwoSideEnabled); + key.do_twoside_color = _mesa_vertex_program_two_side_enabled(ctx); /* _NEW_POLYGON */ if (key.do_twoside_color) { diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c b/src/mesa/drivers/dri/i965/genX_state_upload.c index 8c6d3ff012e..b0e423f2f4d 100644 --- a/src/mesa/drivers/dri/i965/genX_state_upload.c +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c @@ -31,6 +31,7 @@ #include "main/context.h" #include "main/enums.h" #include "main/macros.h" +#include "main/state.h" #include "brw_context.h" #if GEN_GEN == 6 @@ -1117,7 +1118,7 @@ genX(calculate_attr_overrides)(const struct brw_context *brw, genX(get_attr_override)(&attribute, &brw->vue_map_geom_out, *urb_entry_read_offset, attr, - brw->ctx.VertexProgram._TwoSideEnabled, + _mesa_vertex_program_two_side_enabled(ctx), &max_source_attr); } diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 4e7011bb701..e36bb919964 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -2255,8 +2255,6 @@ struct gl_vertex_program_state GLboolean _Enabled; /**< Enabled and _valid_ user program? */ GLboolean PointSizeEnabled; /**< GL_VERTEX_PROGRAM_POINT_SIZE_ARB/NV */ GLboolean TwoSideEnabled; /**< GL_VERTEX_PROGRAM_TWO_SIDE_ARB/NV */ - /** Computed two sided lighting for fixed function/programs. */ - GLboolean _TwoSideEnabled; struct gl_program *Current; /**< User-bound vertex program */ /** Currently enabled and valid vertex program (including internal diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index d1d0c2cd998..0772e6b82a1 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -289,22 +289,6 @@ update_frontbit(struct gl_context *ctx) } -/** - * Update the ctx->VertexProgram._TwoSideEnabled flag. - */ -static void -update_twoside(struct gl_context *ctx) -{ - if (ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX] || - ctx->VertexProgram._Enabled) { - ctx->VertexProgram._TwoSideEnabled = ctx->VertexProgram.TwoSideEnabled; - } else { - ctx->VertexProgram._TwoSideEnabled = (ctx->Light.Enabled && - ctx->Light.Model.TwoSide); - } -} - - /** * Compute derived GL state. * If __struct gl_contextRec::NewState is non-zero then this function \b must @@ -376,9 +360,6 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (new_state & _NEW_LIGHT) _mesa_update_lighting( ctx ); - if (new_state & (_NEW_LIGHT | _NEW_PROGRAM)) - update_twoside( ctx ); - if (new_state & _NEW_PIXEL) _mesa_update_pixel( ctx ); diff --git a/src/mesa/main/state.h b/src/mesa/main/state.h index 7a6cdacf471..8817a4776d1 100644 --- a/src/mesa/main/state.h +++ b/src/mesa/main/state.h @@ -72,4 +72,15 @@ _mesa_need_secondary_color(const struct gl_context *ctx) return GL_FALSE; } +/** Compute two sided lighting state for fixed function or programs. */ +static inline bool +_mesa_vertex_program_two_side_enabled(const struct gl_context *ctx) +{ + if (ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX] || + ctx->VertexProgram._Enabled) + return ctx->VertexProgram.TwoSideEnabled; + + return ctx->Light.Enabled && ctx->Light.Model.TwoSide; +} + #endif diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c b/src/mesa/state_tracker/st_atom_rasterizer.c index 42696b10a36..6e17562d5aa 100644 --- a/src/mesa/state_tracker/st_atom_rasterizer.c +++ b/src/mesa/state_tracker/st_atom_rasterizer.c @@ -32,6 +32,7 @@ #include "main/macros.h" #include "main/framebuffer.h" +#include "main/state.h" #include "st_context.h" #include "st_atom.h" #include "st_debug.h" @@ -99,7 +100,7 @@ void st_update_rasterizer( struct st_context *st ) GL_FIRST_VERTEX_CONVENTION_EXT; /* _NEW_LIGHT | _NEW_PROGRAM */ - raster->light_twoside = ctx->VertexProgram._TwoSideEnabled; + raster->light_twoside = _mesa_vertex_program_two_side_enabled(ctx); /*_NEW_LIGHT | _NEW_BUFFERS */ raster->clamp_vertex_color = !st->clamp_vert_color_in_shader && -- 2.30.2