diff options
Diffstat (limited to 'mesalib/src/mesa/program')
| -rw-r--r-- | mesalib/src/mesa/program/Android.mk | 2 | ||||
| -rw-r--r-- | mesalib/src/mesa/program/prog_execute.c | 10 | ||||
| -rw-r--r-- | mesalib/src/mesa/program/prog_print.c | 10 | ||||
| -rw-r--r-- | mesalib/src/mesa/program/program.c | 18 | ||||
| -rw-r--r-- | mesalib/src/mesa/program/program_parse.y | 7 | ||||
| -rw-r--r-- | mesalib/src/mesa/program/program_parser.h | 2 | 
6 files changed, 19 insertions, 30 deletions
| diff --git a/mesalib/src/mesa/program/Android.mk b/mesalib/src/mesa/program/Android.mk index 29a1b6a63..e85afe672 100644 --- a/mesalib/src/mesa/program/Android.mk +++ b/mesalib/src/mesa/program/Android.mk @@ -47,8 +47,6 @@ LOCAL_MODULE_CLASS := STATIC_LIBRARIES  intermediates := $(call local-intermediates-dir) -MESA_ENABLED_APIS := ES1 ES2 -  # TODO(chadv): In Makefile.sources, move these vars to a different list so we can  # remove this kludge.  generated_sources_basenames := \ diff --git a/mesalib/src/mesa/program/prog_execute.c b/mesalib/src/mesa/program/prog_execute.c index 560332a6e..115525eba 100644 --- a/mesalib/src/mesa/program/prog_execute.c +++ b/mesalib/src/mesa/program/prog_execute.c @@ -118,16 +118,6 @@ get_src_register_pointer(const struct prog_src_register *source,           return ZeroVec;        return machine->Outputs[reg]; -   case PROGRAM_LOCAL_PARAM: -      if (reg >= MAX_PROGRAM_LOCAL_PARAMS) -         return ZeroVec; -      return machine->CurProgram->LocalParams[reg]; - -   case PROGRAM_ENV_PARAM: -      if (reg >= MAX_PROGRAM_ENV_PARAMS) -         return ZeroVec; -      return machine->EnvParams[reg]; -     case PROGRAM_STATE_VAR:        /* Fallthrough */     case PROGRAM_CONSTANT: diff --git a/mesalib/src/mesa/program/prog_print.c b/mesalib/src/mesa/program/prog_print.c index fa9063f5b..fa120cc5e 100644 --- a/mesalib/src/mesa/program/prog_print.c +++ b/mesalib/src/mesa/program/prog_print.c @@ -50,10 +50,6 @@ _mesa_register_file_name(gl_register_file f)     switch (f) {     case PROGRAM_TEMPORARY:        return "TEMP"; -   case PROGRAM_LOCAL_PARAM: -      return "LOCAL"; -   case PROGRAM_ENV_PARAM: -      return "ENV";     case PROGRAM_STATE_VAR:        return "STATE";     case PROGRAM_INPUT: @@ -382,12 +378,6 @@ reg_string(gl_register_file f, GLint index, gl_prog_print_mode mode,        case PROGRAM_TEMPORARY:           sprintf(str, "temp%d", index);           break; -      case PROGRAM_ENV_PARAM: -         sprintf(str, "program.env[%s%d]", addr, index); -         break; -      case PROGRAM_LOCAL_PARAM: -         sprintf(str, "program.local[%s%d]", addr, index); -         break;        case PROGRAM_CONSTANT: /* extension */           sprintf(str, "constant[%s%d]", addr, index);           break; diff --git a/mesalib/src/mesa/program/program.c b/mesalib/src/mesa/program/program.c index a102ec17a..01f8c6f11 100644 --- a/mesalib/src/mesa/program/program.c +++ b/mesalib/src/mesa/program/program.c @@ -349,6 +349,7 @@ _mesa_delete_program(struct gl_context *ctx, struct gl_program *prog)        return;     free(prog->String); +   free(prog->LocalParams);     if (prog->Instructions) {        _mesa_free_instructions(prog->Instructions, prog->NumInstructions); @@ -477,7 +478,16 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog)     if (prog->Parameters)        clone->Parameters = _mesa_clone_parameter_list(prog->Parameters); -   memcpy(clone->LocalParams, prog->LocalParams, sizeof(clone->LocalParams)); +   if (prog->LocalParams) { +      clone->LocalParams = malloc(MAX_PROGRAM_LOCAL_PARAMS * +                                  sizeof(float[4])); +      if (!clone->LocalParams) { +         _mesa_reference_program(ctx, &clone, NULL); +         return NULL; +      } +      memcpy(clone->LocalParams, prog->LocalParams, +             MAX_PROGRAM_LOCAL_PARAMS * sizeof(float[4])); +   }     clone->IndirectRegisterFiles = prog->IndirectRegisterFiles;     clone->NumInstructions = prog->NumInstructions;     clone->NumTemporaries = prog->NumTemporaries; @@ -909,12 +919,6 @@ _mesa_valid_register_index(const struct gl_context *ctx,     case PROGRAM_TEMPORARY:        return index >= 0 && index < (GLint) c->MaxTemps; -   case PROGRAM_ENV_PARAM: -      return index >= 0 && index < (GLint) c->MaxEnvParams; - -   case PROGRAM_LOCAL_PARAM: -      return index >= 0 && index < (GLint) c->MaxLocalParams; -     case PROGRAM_UNIFORM:     case PROGRAM_STATE_VAR:        /* aka constant buffer */ diff --git a/mesalib/src/mesa/program/program_parse.y b/mesalib/src/mesa/program/program_parse.y index a76db4e86..03c0a3dba 100644 --- a/mesalib/src/mesa/program/program_parse.y +++ b/mesalib/src/mesa/program/program_parse.y @@ -25,6 +25,7 @@  #include <stdlib.h>  #include <string.h> +#include "main/macros.h"  #include "main/mtypes.h"  #include "main/imports.h"  #include "program/program.h" @@ -2559,6 +2560,12 @@ initialize_symbol_from_param(struct gl_program *prog,     param_var->type = at_param;     param_var->param_binding_type = PROGRAM_STATE_VAR; +   /* Dynamically allocate LocalParams, since it's a large array to have +    * statically in every gl_program otherwise. +    */ +   if (state_tokens[1] == STATE_LOCAL && !prog->LocalParams) +      prog->LocalParams = calloc(MAX_PROGRAM_LOCAL_PARAMS, sizeof(float[4])); +     /* If we are adding a STATE_ENV or STATE_LOCAL that has multiple elements,      * we need to unroll it and call add_state_reference() for each row      */ diff --git a/mesalib/src/mesa/program/program_parser.h b/mesalib/src/mesa/program/program_parser.h index ca36bb6dc..04c64f446 100644 --- a/mesalib/src/mesa/program/program_parser.h +++ b/mesalib/src/mesa/program/program_parser.h @@ -44,7 +44,7 @@ struct asm_symbol {     unsigned output_binding;   /**< Output / result register number. */     /** -    * One of PROGRAM_STATE_VAR, PROGRAM_LOCAL_PARAM, or PROGRAM_ENV_PARAM. +    * One of PROGRAM_STATE_VAR or PROGRAM_CONSTANT.      */     unsigned param_binding_type; | 
