diff options
Diffstat (limited to 'src/mesa/shader')
| -rw-r--r-- | src/mesa/shader/arbprogparse.c | 68 | ||||
| -rw-r--r-- | src/mesa/shader/atifragshader.h | 2 | ||||
| -rw-r--r-- | src/mesa/shader/grammar/descrip.mms | 42 | ||||
| -rw-r--r-- | src/mesa/shader/prog_cache.c | 29 | ||||
| -rw-r--r-- | src/mesa/shader/prog_cache.h | 2 | ||||
| -rw-r--r-- | src/mesa/shader/prog_instruction.h | 2 | ||||
| -rw-r--r-- | src/mesa/shader/prog_parameter.c | 4 | ||||
| -rw-r--r-- | src/mesa/shader/prog_print.c | 17 | ||||
| -rw-r--r-- | src/mesa/shader/prog_print.h | 3 | ||||
| -rw-r--r-- | src/mesa/shader/prog_statevars.c | 29 | ||||
| -rw-r--r-- | src/mesa/shader/prog_statevars.h | 3 | ||||
| -rw-r--r-- | src/mesa/shader/prog_uniform.c | 4 | ||||
| -rw-r--r-- | src/mesa/shader/program.c | 42 | ||||
| -rw-r--r-- | src/mesa/shader/shader_api.c | 25 | ||||
| -rw-r--r-- | src/mesa/shader/slang/library/slang_version_syn.h | 64 | ||||
| -rw-r--r-- | src/mesa/shader/slang/slang_link.c | 1 | 
16 files changed, 186 insertions, 151 deletions
| diff --git a/src/mesa/shader/arbprogparse.c b/src/mesa/shader/arbprogparse.c index 39988b5fca..536404bf97 100644 --- a/src/mesa/shader/arbprogparse.c +++ b/src/mesa/shader/arbprogparse.c @@ -30,6 +30,27 @@   * \author Karl Rasche   */ +/** +Notes on program parameters, etc. + +The instructions we emit will use six kinds of source registers: + +  PROGRAM_INPUT      - input registers +  PROGRAM_TEMPORARY  - temp registers +  PROGRAM_ADDRESS    - address/indirect register +  PROGRAM_SAMPLER    - texture sampler +  PROGRAM_CONSTANT   - indexes into program->Parameters, a known constant/literal +  PROGRAM_STATE_VAR  - indexes into program->Parameters, and may actually be: +                       + a state variable, like "state.fog.color", or +                       + a pointer to a "program.local[k]" parameter, or +                       + a pointer to a "program.env[k]" parameter + +Basically, all the program.local[] and program.env[] values will get mapped +into the unified gl_program->Parameters array.  This solves the problem of +having three separate program parameter arrays. +*/ + +  #include "main/glheader.h"  #include "main/imports.h"  #include "main/context.h" @@ -38,16 +59,11 @@  #include "shader/grammar/grammar_mesa.h"  #include "arbprogparse.h"  #include "program.h" +#include "programopt.h"  #include "prog_parameter.h"  #include "prog_statevars.h"  #include "prog_instruction.h" - -/* For ARB programs, use the NV instruction limits */ -#define MAX_INSTRUCTIONS MAX2(MAX_NV_FRAGMENT_PROGRAM_INSTRUCTIONS, \ -                              MAX_NV_VERTEX_PROGRAM_INSTRUCTIONS) - -  /**   * This is basically a union of the vertex_program and fragment_program   * structs that we can use to parse the program into @@ -1870,7 +1886,11 @@ parse_param_elements (GLcontext * ctx, const GLubyte ** inst,                                          const_values, 4);           if (param_var->param_binding_begin == ~0U)              param_var->param_binding_begin = idx; -         param_var->param_binding_type = PROGRAM_CONSTANT; +         param_var->param_binding_type = PROGRAM_STATE_VAR; +         /* Note: when we reference this parameter in an instruction later, +          * we'll check if it's really a constant/immediate and set the +          * instruction register type appropriately. +          */           param_var->param_binding_length++;           Program->Base.NumParameters++;           break; @@ -2577,6 +2597,18 @@ parse_src_reg (GLcontext * ctx, const GLubyte ** inst,           return 1;     } +   if (*File == PROGRAM_STATE_VAR) { +      enum register_file file; + +      /* If we're referencing the Program->Parameters[] array, check if the +       * parameter is really a constant/literal.  If so, set File to CONSTANT. +       */ +      assert(*Index < (GLint) Program->Base.Parameters->NumParameters); +      file = Program->Base.Parameters->Parameters[*Index].Type; +      if (file == PROGRAM_CONSTANT) +         *File = PROGRAM_CONSTANT; +   } +     /* Add attributes to InputsRead only if they are used the program.      * This avoids the handling of unused ATTRIB declarations in the drivers. */     if (*File == PROGRAM_INPUT) @@ -3353,11 +3385,11 @@ debug_variables (GLcontext * ctx, struct var_cache *vc_head,                 fprintf (stderr, "%s\n",                          Program->Base.Parameters->Parameters[a + b].Name);                 if (Program->Base.Parameters->Parameters[a + b].Type == PROGRAM_STATE_VAR) { -                  const char *s; +                  char *s;                    s = _mesa_program_state_string(Program->Base.Parameters->Parameters                                                   [a + b].StateIndexes);                    fprintf(stderr, "%s\n", s); -                  _mesa_free((char *) s); +                  _mesa_free(s);                 }                 else                    fprintf (stderr, "%f %f %f %f\n", @@ -3405,7 +3437,7 @@ parse_instructions(GLcontext * ctx, const GLubyte * inst,        : ctx->Const.VertexProgram.MaxInstructions;     GLint err = 0; -   ASSERT(MAX_INSTRUCTIONS >= maxInst); +   ASSERT(MAX_PROGRAM_INSTRUCTIONS >= maxInst);     Program->MajorVersion = (GLuint) * inst++;     Program->MinorVersion = (GLuint) * inst++; @@ -3760,7 +3792,7 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target,     /* Initialize the arb_program struct */     program->Base.String = strz; -   program->Base.Instructions = _mesa_alloc_instructions(MAX_INSTRUCTIONS); +   program->Base.Instructions = _mesa_alloc_instructions(MAX_PROGRAM_INSTRUCTIONS);     program->Base.NumInstructions =     program->Base.NumTemporaries =     program->Base.NumParameters = @@ -3805,12 +3837,12 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target,     _mesa_free (parsed); -   /* Reallocate the instruction array from size [MAX_INSTRUCTIONS] +   /* Reallocate the instruction array from size [MAX_PROGRAM_INSTRUCTIONS]      * to size [ap.Base.NumInstructions].      */     program->Base.Instructions        = _mesa_realloc_instructions(program->Base.Instructions, -                                   MAX_INSTRUCTIONS, +                                   MAX_PROGRAM_INSTRUCTIONS,                                     program->Base.NumInstructions);     return !err; @@ -3874,6 +3906,16 @@ _mesa_parse_arb_fragment_program(GLcontext* ctx, GLenum target,        _mesa_free_parameter_list(program->Base.Parameters);     program->Base.Parameters    = ap.Base.Parameters; +   /* Append fog instructions now if the program has "OPTION ARB_fog_exp" +    * or similar.  We used to leave this up to drivers, but it appears +    * there's no hardware that wants to do fog in a discrete stage separate +    * from the fragment shader. +    */ +   if (program->FogOption != GL_NONE) { +      _mesa_append_fog_code(ctx, program); +      program->FogOption = GL_NONE; +   } +  #if DEBUG_FP     _mesa_printf("____________Fragment program %u ________\n", program->Base.Id);     _mesa_print_program(&program->Base); diff --git a/src/mesa/shader/atifragshader.h b/src/mesa/shader/atifragshader.h index 32fb3a8019..e1dc20e606 100644 --- a/src/mesa/shader/atifragshader.h +++ b/src/mesa/shader/atifragshader.h @@ -8,6 +8,8 @@  #ifndef ATIFRAGSHADER_H  #define ATIFRAGSHADER_H +#include "main/mtypes.h" +  #define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8  #define MAX_NUM_PASSES_ATI                2  #define MAX_NUM_FRAGMENT_REGISTERS_ATI    6 diff --git a/src/mesa/shader/grammar/descrip.mms b/src/mesa/shader/grammar/descrip.mms deleted file mode 100644 index 6976b70d6a..0000000000 --- a/src/mesa/shader/grammar/descrip.mms +++ /dev/null @@ -1,42 +0,0 @@ -# Makefile for core library for VMS -# contributed by Jouk Jansen  joukj@hrem.nano.tudelft.nl -# Last revision : 29 September 2008 - -.first -	define gl [----.include.gl] -	define math [--.math] -	define swrast [--.swrast] -	define array_cache [--.array_cache] -	define main [--.main] - -.include [----]mms-config. - -##### MACROS ##### - -VPATH = RCS - -INCDIR = [----.include],[],[--.main],[--.glapi],[-.slang] -LIBDIR = [----.lib] -CFLAGS = /include=($(INCDIR),[])/define=(PTHREADS=1)/name=(as_is,short)/float=ieee/ieee=denorm - -SOURCES = grammar_mesa.c - -OBJECTS = grammar_mesa.obj - -##### RULES ##### - -VERSION=Mesa V3.4 - -##### TARGETS ##### -all :  -	$(MMS)$(MMSQUALIFIERS) $(LIBDIR)$(GL_LIB) - -# Make the library -$(LIBDIR)$(GL_LIB) : $(OBJECTS) -  @ library $(LIBDIR)$(GL_LIB) $(OBJECTS) - -clean : -	purge -	delete *.obj;* - -grammar_mesa.obj : grammar_mesa.c grammar.c diff --git a/src/mesa/shader/prog_cache.c b/src/mesa/shader/prog_cache.c index 36a25377c5..9437e59613 100644 --- a/src/mesa/shader/prog_cache.c +++ b/src/mesa/shader/prog_cache.c @@ -44,6 +44,7 @@ struct cache_item  struct gl_program_cache  {     struct cache_item **items; +   struct cache_item *last;     GLuint size, n_items;  }; @@ -83,6 +84,8 @@ rehash(struct gl_program_cache *cache)     struct cache_item *c, *next;     GLuint size, i; +   cache->last = NULL; +     size = cache->size * 3;     items = (struct cache_item**) _mesa_malloc(size * sizeof(*items));     _mesa_memset(items, 0, size * sizeof(*items)); @@ -105,6 +108,8 @@ clear_cache(GLcontext *ctx, struct gl_program_cache *cache)  {     struct cache_item *c, *next;     GLuint i; +    +   cache->last = NULL;     for (i = 0; i < cache->size; i++) {        for (c = cache->items[i]; c; c = next) { @@ -149,18 +154,26 @@ _mesa_delete_program_cache(GLcontext *ctx, struct gl_program_cache *cache)  struct gl_program * -_mesa_search_program_cache(const struct gl_program_cache *cache, +_mesa_search_program_cache(struct gl_program_cache *cache,                             const void *key, GLuint keysize)  { -   const GLuint hash = hash_key(key, keysize); -   struct cache_item *c; - -   for (c = cache->items[hash % cache->size]; c; c = c->next) { -      if (c->hash == hash && memcmp(c->key, key, keysize) == 0) -	 return c->program; +   if (cache->last &&  +       memcmp(cache->last->key, key, keysize) == 0) { +      return cache->last->program;     } +   else { +      const GLuint hash = hash_key(key, keysize); +      struct cache_item *c; -   return NULL; +      for (c = cache->items[hash % cache->size]; c; c = c->next) { +         if (c->hash == hash && memcmp(c->key, key, keysize) == 0) { +            cache->last = c; +            return c->program; +         } +      } + +      return NULL; +   }  } diff --git a/src/mesa/shader/prog_cache.h b/src/mesa/shader/prog_cache.h index a8c91fba01..4e1ccac03f 100644 --- a/src/mesa/shader/prog_cache.h +++ b/src/mesa/shader/prog_cache.h @@ -42,7 +42,7 @@ _mesa_delete_program_cache(GLcontext *ctx, struct gl_program_cache *pc);  extern struct gl_program * -_mesa_search_program_cache(const struct gl_program_cache *cache, +_mesa_search_program_cache(struct gl_program_cache *cache,                             const void *key, GLuint keysize);  extern void diff --git a/src/mesa/shader/prog_instruction.h b/src/mesa/shader/prog_instruction.h index 268afc528c..f978334ab2 100644 --- a/src/mesa/shader/prog_instruction.h +++ b/src/mesa/shader/prog_instruction.h @@ -418,11 +418,13 @@ struct prog_instruction      */     GLint BranchTarget; +#if 0     /**      * For TEX instructions in shaders, the sampler to use for the      * texture lookup.      */     GLint Sampler; +#endif     const char *Comment;  }; diff --git a/src/mesa/shader/prog_parameter.c b/src/mesa/shader/prog_parameter.c index 32f8860a14..6744ad93b8 100644 --- a/src/mesa/shader/prog_parameter.c +++ b/src/mesa/shader/prog_parameter.c @@ -424,7 +424,7 @@ _mesa_add_state_reference(struct gl_program_parameter_list *paramList,                            const gl_state_index stateTokens[STATE_LENGTH])  {     const GLuint size = 4; /* XXX fix */ -   const char *name; +   char *name;     GLint index;     /* Check if the state reference is already in the list */ @@ -451,7 +451,7 @@ _mesa_add_state_reference(struct gl_program_parameter_list *paramList,     paramList->StateFlags |= _mesa_program_state_flags(stateTokens);     /* free name string here since we duplicated it in add_parameter() */ -   _mesa_free((void *) name); +   _mesa_free(name);     return index;  } diff --git a/src/mesa/shader/prog_print.c b/src/mesa/shader/prog_print.c index 9215ed7abf..29b4d90a3e 100644 --- a/src/mesa/shader/prog_print.c +++ b/src/mesa/shader/prog_print.c @@ -250,7 +250,9 @@ reg_string(enum register_file f, GLint index, gl_prog_print_mode mode,           {              struct gl_program_parameter *param                 = prog->Parameters->Parameters + index; -            sprintf(str, _mesa_program_state_string(param->StateIndexes)); +            char *state = _mesa_program_state_string(param->StateIndexes); +            sprintf(str, state); +            _mesa_free(state);           }           break;        case PROGRAM_ADDRESS: @@ -356,6 +358,19 @@ _mesa_swizzle_string(GLuint swizzle, GLuint negateBase, GLboolean extended)  } +void +_mesa_print_swizzle(GLuint swizzle) +{ +   if (swizzle == SWIZZLE_XYZW) { +      _mesa_printf(".xyzw\n"); +   } +   else { +      const char *s = _mesa_swizzle_string(swizzle, 0, 0); +      _mesa_printf("%s\n", s); +   } +} + +  const char *  _mesa_writemask_string(GLuint writeMask)  { diff --git a/src/mesa/shader/prog_print.h b/src/mesa/shader/prog_print.h index cd9e388e82..3966909aed 100644 --- a/src/mesa/shader/prog_print.h +++ b/src/mesa/shader/prog_print.h @@ -47,6 +47,9 @@ const char *  _mesa_writemask_string(GLuint writeMask);  extern void +_mesa_print_swizzle(GLuint swizzle); + +extern void  _mesa_print_alu_instruction(const struct prog_instruction *inst,                              const char *opcode_string, GLuint numRegs); diff --git a/src/mesa/shader/prog_statevars.c b/src/mesa/shader/prog_statevars.c index 615826b210..8d29acac8b 100644 --- a/src/mesa/shader/prog_statevars.c +++ b/src/mesa/shader/prog_statevars.c @@ -395,6 +395,12 @@ _mesa_fetch_state(GLcontext *ctx, const gl_state_index state[],     case STATE_INTERNAL:        switch (state[1]) { +      case STATE_CURRENT_ATTRIB: { +         const GLuint idx = (GLuint) state[2]; +         COPY_4V(value, ctx->Current.Attrib[idx]); +         return; +      }						   +        case STATE_NORMAL_SCALE:           ASSIGN_4V(value,                      ctx->_ModelViewInvScale,  @@ -501,6 +507,9 @@ _mesa_fetch_state(GLcontext *ctx, const gl_state_index state[],           }           return; +         /* XXX: make sure new tokens added here are also handled in the  +          * _mesa_program_state_flags() switch, below. +          */        default:           /* unknown state indexes are silently ignored            *  should be handled by the driver. @@ -574,11 +583,29 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH])     case STATE_INTERNAL:        switch (state[1]) { +      case STATE_CURRENT_ATTRIB: +         return _NEW_CURRENT_ATTRIB; + +      case STATE_NORMAL_SCALE: +         return _NEW_MODELVIEW; +        case STATE_TEXRECT_SCALE:        case STATE_SHADOW_AMBIENT:  	 return _NEW_TEXTURE;        case STATE_FOG_PARAMS_OPTIMIZED:  	 return _NEW_FOG; +      case STATE_LIGHT_SPOT_DIR_NORMALIZED: +      case STATE_LIGHT_POSITION: +      case STATE_LIGHT_POSITION_NORMALIZED: +      case STATE_LIGHT_HALF_VECTOR: +         return _NEW_LIGHT; + +      case STATE_PT_SCALE: +      case STATE_PT_BIAS: +      case STATE_PCM_SCALE: +      case STATE_PCM_BIAS: +         return _NEW_PIXEL; +        default:           /* unknown state indexes are silently ignored and           *  no flag set, since it is handled by the driver. @@ -807,7 +834,7 @@ append_index(char *dst, GLint index)   * For example, return "state.matrix.texture[2].inverse".   * Use _mesa_free() to deallocate the string.   */ -const char * +char *  _mesa_program_state_string(const gl_state_index state[STATE_LENGTH])  {     char str[1000] = ""; diff --git a/src/mesa/shader/prog_statevars.h b/src/mesa/shader/prog_statevars.h index d3091147f8..72e51f4031 100644 --- a/src/mesa/shader/prog_statevars.h +++ b/src/mesa/shader/prog_statevars.h @@ -104,6 +104,7 @@ typedef enum gl_state_index_ {     STATE_LOCAL,     STATE_INTERNAL,		/* Mesa additions */ +   STATE_CURRENT_ATTRIB,        /* ctx->Current vertex attrib value */     STATE_NORMAL_SCALE,     STATE_TEXRECT_SCALE,     STATE_FOG_PARAMS_OPTIMIZED,  /* for faster fog calc */ @@ -130,7 +131,7 @@ extern GLbitfield  _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH]); -extern const char * +extern char *  _mesa_program_state_string(const gl_state_index state[STATE_LENGTH]); diff --git a/src/mesa/shader/prog_uniform.c b/src/mesa/shader/prog_uniform.c index dc76be8e46..0642713148 100644 --- a/src/mesa/shader/prog_uniform.c +++ b/src/mesa/shader/prog_uniform.c @@ -142,8 +142,8 @@ _mesa_longest_uniform_name(const struct gl_uniform_list *list)     GLint max = 0;     GLuint i;     for (i = 0; list && i < list->NumUniforms; i++) { -      GLuint len = _mesa_strlen(list->Uniforms[i].Name); -      if (len > (GLuint)max) +      GLint len = (GLint)_mesa_strlen(list->Uniforms[i].Name); +      if (len > max)           max = len;     }     return max; diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c index 738891a029..37962f0e9b 100644 --- a/src/mesa/shader/program.c +++ b/src/mesa/shader/program.c @@ -554,7 +554,6 @@ _mesa_insert_instructions(struct gl_program *prog, GLuint start, GLuint count)     return GL_TRUE;  } -  /**   * Delete 'count' instructions at 'start' in the given program.   * Adjust branch targets accordingly. @@ -691,17 +690,47 @@ _mesa_combine_programs(GLcontext *ctx,     if (newProg->Target == GL_FRAGMENT_PROGRAM_ARB) {        struct gl_fragment_program *fprogA, *fprogB, *newFprog; +      GLbitfield progB_inputsRead = progB->InputsRead; +      GLint progB_colorFile, progB_colorIndex; +        fprogA = (struct gl_fragment_program *) progA;        fprogB = (struct gl_fragment_program *) progB;        newFprog = (struct gl_fragment_program *) newProg;        newFprog->UsesKill = fprogA->UsesKill || fprogB->UsesKill; +      /* We'll do a search and replace for instances +       * of progB_colorFile/progB_colorIndex below... +       */ +      progB_colorFile = PROGRAM_INPUT; +      progB_colorIndex = FRAG_ATTRIB_COL0; + +      /* +       * The fragment program may get color from a state var rather than +       * a fragment input (vertex output) if it's constant. +       * See the texenvprogram.c code. +       * So, search the program's parameter list now to see if the program +       * gets color from a state var instead of a conventional fragment +       * input register. +       */ +      for (i = 0; i < progB->Parameters->NumParameters; i++) { +         struct gl_program_parameter *p = &progB->Parameters->Parameters[i]; +         if (p->Type == PROGRAM_STATE_VAR && +             p->StateIndexes[0] == STATE_INTERNAL && +             p->StateIndexes[1] == STATE_CURRENT_ATTRIB && +             p->StateIndexes[2] == VERT_ATTRIB_COLOR0) { +            progB_inputsRead |= FRAG_BIT_COL0; +            progB_colorFile = PROGRAM_STATE_VAR; +            progB_colorIndex = i; +            break; +         } +      } +        /* Connect color outputs of fprogA to color inputs of fprogB, via a         * new temporary register.         */        if ((progA->OutputsWritten & (1 << FRAG_RESULT_COLR)) && -          (progB->InputsRead & (1 << FRAG_ATTRIB_COL0))) { +          (progB_inputsRead & FRAG_BIT_COL0)) {           GLint tempReg = _mesa_find_free_register(newProg, PROGRAM_TEMPORARY);           if (tempReg < 0) {              _mesa_problem(ctx, "No free temp regs found in " @@ -712,13 +741,14 @@ _mesa_combine_programs(GLcontext *ctx,           replace_registers(newInst, lenA,                             PROGRAM_OUTPUT, FRAG_RESULT_COLR,                             PROGRAM_TEMPORARY, tempReg); -         /* replace reads from input.color[0] with tempReg */ +         /* replace reads from the input color with tempReg */           replace_registers(newInst + lenA, lenB, -                           PROGRAM_INPUT, FRAG_ATTRIB_COL0, -                           PROGRAM_TEMPORARY, tempReg); +                           progB_colorFile, progB_colorIndex, /* search for */ +                           PROGRAM_TEMPORARY, tempReg  /* replace with */ );        } -      inputsB = progB->InputsRead; +      /* compute combined program's InputsRead */ +      inputsB = progB_inputsRead;        if (progA->OutputsWritten & (1 << FRAG_RESULT_COLR)) {           inputsB &= ~(1 << FRAG_ATTRIB_COL0);        } diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index b3d66c5bab..122688826c 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -381,7 +381,7 @@ _mesa_init_shader_state(GLcontext * ctx)      * are generated by the GLSL compiler.      */     ctx->Shader.EmitHighLevelInstructions = GL_TRUE; -   ctx->Shader.EmitCondCodes = GL_TRUE; /* XXX probably want GL_FALSE... */ +   ctx->Shader.EmitCondCodes = GL_FALSE;/*GL_TRUE;*/ /* XXX probably want GL_FALSE... */     ctx->Shader.EmitComments = GL_FALSE;  } @@ -1117,7 +1117,8 @@ get_matrix_dims(GLenum type, GLint *rows, GLint *cols)  /**   * Determine the number of rows and columns occupied by a uniform - * according to its datatype. + * according to its datatype.  For non-matrix types (such as GL_FLOAT_VEC4), + * the number of rows = 1 and cols = number of elements in the vector.   */  static void  get_uniform_rows_cols(const struct gl_program_parameter *p, @@ -1126,11 +1127,17 @@ get_uniform_rows_cols(const struct gl_program_parameter *p,     get_matrix_dims(p->DataType, rows, cols);     if (*rows == 0 && *cols == 0) {        /* not a matrix type, probably a float or vector */ -      *rows = p->Size / 4 + 1; -      if (p->Size % 4 == 0) -         *cols = 4; -      else -         *cols = p->Size % 4; +      if (p->Size <= 4) { +         *rows = 1; +         *cols = p->Size; +      } +      else { +         *rows = p->Size / 4 + 1; +         if (p->Size % 4 == 0) +            *cols = 4; +         else +            *cols = p->Size % 4; +      }     }  } @@ -1527,7 +1534,7 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program,        return;     } -   if (index + offset > program->Parameters->Size) { +   if (index + offset > (GLint) program->Parameters->Size) {        /* out of bounds! */        return;     } @@ -1592,7 +1599,7 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program,           /* if the uniform is bool-valued, convert to 1.0 or 0.0 */           if (is_boolean_type(param->DataType)) {              for (i = 0; i < elems; i++) { -               uniformVal[i] = uniformVal[i] ? 1.0 : 0.0; +               uniformVal[i] = uniformVal[i] ? 1.0f : 0.0f;              }           }        } diff --git a/src/mesa/shader/slang/library/slang_version_syn.h b/src/mesa/shader/slang/library/slang_version_syn.h deleted file mode 100644 index 3b94d85927..0000000000 --- a/src/mesa/shader/slang/library/slang_version_syn.h +++ /dev/null @@ -1,64 +0,0 @@ -".syntax version_directive;\n" -"version_directive\n" -"	version_directive_1 .and .loop version_directive_2;\n" -"version_directive_1\n" -"	prior_optional_spaces .and optional_version_directive .and .true .emit $;\n" -"version_directive_2\n" -"	prior_optional_spaces .and version_directive_body .and .true .emit $;\n" -"optional_version_directive\n" -"	version_directive_body .or .true .emit 10 .emit 1;\n" -"version_directive_body\n" -"	'#' .and optional_space .and \"version\" .and space .and version_number .and optional_space .and\n" -"	new_line;\n" -"version_number\n" -"	version_number_110;\n" -"version_number_110\n" -"	leading_zeroes .and \"110\" .emit 10 .emit 1;\n" -"leading_zeroes\n" -"	.loop zero;\n" -"zero\n" -"	'0';\n" -"space\n" -" single_space .and .loop single_space;\n" -"optional_space\n" -" .loop single_space;\n" -"single_space\n" -" ' ' .or '\\t';\n" -"prior_optional_spaces\n" -"	.loop prior_space;\n" -"prior_space\n" -"	c_style_comment_block .or cpp_style_comment_block .or space .or new_line;\n" -"c_style_comment_block\n" -" '/' .and '*' .and c_style_comment_rest;\n" -"c_style_comment_rest\n" -" .loop c_style_comment_char_no_star .and c_style_comment_rest_1;\n" -"c_style_comment_rest_1\n" -" c_style_comment_end .or c_style_comment_rest_2;\n" -"c_style_comment_rest_2\n" -" '*' .and c_style_comment_rest;\n" -"c_style_comment_char_no_star\n" -" '\\x2B'-'\\xFF' .or '\\x01'-'\\x29';\n" -"c_style_comment_end\n" -" '*' .and '/';\n" -"cpp_style_comment_block\n" -" '/' .and '/' .and cpp_style_comment_block_1;\n" -"cpp_style_comment_block_1\n" -" cpp_style_comment_block_2 .or cpp_style_comment_block_3;\n" -"cpp_style_comment_block_2\n" -" .loop cpp_style_comment_char .and new_line;\n" -"cpp_style_comment_block_3\n" -" .loop cpp_style_comment_char;\n" -"cpp_style_comment_char\n" -" '\\x0E'-'\\xFF' .or '\\x01'-'\\x09' .or '\\x0B'-'\\x0C';\n" -"new_line\n" -" cr_lf .or lf_cr .or '\\n' .or '\\r';\n" -"cr_lf\n" -" '\\r' .and '\\n';\n" -"lf_cr\n" -"	'\\n' .and '\\r';\n" -".string __string_filter;\n" -"__string_filter\n" -" .loop __identifier_char;\n" -"__identifier_char\n" -" 'a'-'z' .or 'A'-'Z' .or '_' .or '0'-'9';\n" -"" diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c index 08d7540372..2cd02d7214 100644 --- a/src/mesa/shader/slang/slang_link.c +++ b/src/mesa/shader/slang/slang_link.c @@ -458,7 +458,6 @@ _slang_update_inputs_outputs(struct gl_program *prog)           maxAddrReg = MAX2(maxAddrReg, inst->DstReg.Index + 1);        }     } -     prog->NumAddressRegs = maxAddrReg;  } | 
