- const GLfloat *src;
-
- switch (source->File) {
- case PROGRAM_TEMPORARY:
- ASSERT(source->Index < MAX_NV_FRAGMENT_PROGRAM_TEMPS);
- src = machine->Temporaries[source->Index];
- break;
- case PROGRAM_INPUT:
- ASSERT(source->Index < MAX_NV_FRAGMENT_PROGRAM_INPUTS);
- src = machine->Inputs[source->Index];
- break;
- case PROGRAM_LOCAL_PARAM:
- ASSERT(source->Index < MAX_PROGRAM_LOCAL_PARAMS);
- src = program->Base.LocalParams[source->Index];
- break;
- case PROGRAM_ENV_PARAM:
- ASSERT(source->Index < MAX_NV_FRAGMENT_PROGRAM_PARAMS);
- src = ctx->FragmentProgram.Parameters[source->Index];
- break;
- case PROGRAM_NAMED_PARAM:
- ASSERT(source->Index < program->Parameters->NumParameters);
- src = program->Parameters->Parameters[source->Index].Values;
- break;
- case PROGRAM_STATE_VAR:
- abort();
- default:
- _mesa_problem(ctx, "Invalid input register file in fetch_vector1");
- return;
- }
+ const GLfloat *src = get_register_pointer(ctx, source, machine, program);
+ ASSERT(src);