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; |