On Thu, Jan 9, 2014 at 8:21 PM, Brian Paul <bri...@vmware.com> wrote: > Make use of the new gl_constants::Program[] array. > --- > src/mesa/state_tracker/st_extensions.c | 31 > ++++++++-------------------- > src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 20 +----------------- > src/mesa/state_tracker/st_program.h | 18 ++++++++++++++++ > 3 files changed, 28 insertions(+), 41 deletions(-) > > diff --git a/src/mesa/state_tracker/st_extensions.c > b/src/mesa/state_tracker/st_extensions.c > index c17601a..cc63b36 100644 > --- a/src/mesa/state_tracker/st_extensions.c > +++ b/src/mesa/state_tracker/st_extensions.c > @@ -38,6 +38,8 @@ > #include "st_context.h" > #include "st_extensions.h" > #include "st_format.h" > +#include "st_program.h" > + > > static unsigned _min(unsigned a, unsigned b) > { > @@ -68,8 +70,8 @@ void st_init_limits(struct st_context *st) > { > struct pipe_screen *screen = st->pipe->screen; > struct gl_constants *c = &st->ctx->Const; > - unsigned sh; > boolean can_ubo = TRUE; > + int i; > > c->MaxTextureLevels > = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS), > @@ -149,27 +151,12 @@ void st_init_limits(struct st_context *st) > can_ubo = FALSE; > } > > - for (sh = 0; sh < PIPE_SHADER_TYPES; ++sh) { > - struct gl_shader_compiler_options *options; > - struct gl_program_constants *pc; > - > - switch (sh) { > - case PIPE_SHADER_FRAGMENT: > - pc = &c->Program[MESA_SHADER_FRAGMENT]; > - options = &st->ctx->ShaderCompilerOptions[MESA_SHADER_FRAGMENT]; > - break; > - case PIPE_SHADER_VERTEX: > - pc = &c->Program[MESA_SHADER_VERTEX]; > - options = &st->ctx->ShaderCompilerOptions[MESA_SHADER_VERTEX]; > - break; > - case PIPE_SHADER_GEOMETRY: > - pc = &c->Program[MESA_SHADER_GEOMETRY]; > - options = &st->ctx->ShaderCompilerOptions[MESA_SHADER_GEOMETRY]; > - break; > - default: > - /* compute shader, etc. */ > - continue; > - } > + /* Note: we only loop over the currently supported gallium shader types */ > + for (i = MESA_SHADER_VERTEX; i <= MESA_SHADER_FRAGMENT; i++) {
The MESA_SHADER_xxx numbers are ordered in the same way they appear in the pipeline, so tessellation shaders will be before MESA_SHADER_FRAGMENT. In other words, the comment in the code is not true and st_shader_stage_to_ptarget should be more robust to handle unsupported shader types. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev