Lines Matching refs:vp

103 static GLboolean r200VertexProgUpdateParams(struct gl_context *ctx, struct r200_vertex_program *vp)
108 struct gl_vertex_program *mesa_vp = &vp->mesa_program;
127 //fprintf(stderr, "%s", vp->Parameters->Parameters[pi].Name);
239 static void vp_dump_inputs(struct r200_vertex_program *vp, char *caller)
243 if(vp == NULL){
244 fprintf(stderr, "vp null in call to %s from %s\n", __FUNCTION__, caller);
250 fprintf(stderr, "%d ", vp->inputs[i]);
256 static unsigned long t_src_index(struct r200_vertex_program *vp, struct prog_src_register *src)
263 /* if(vp->inputs[src->Index] != -1)
264 return vp->inputs[src->Index];
267 if(vp->inputs[i] > max_reg)
268 max_reg = vp->inputs[i];
270 vp->inputs[src->Index] = max_reg+1;*/
272 //vp_dump_inputs(vp, __FUNCTION__);
273 assert(vp->inputs[src->Index] != -1);
274 return vp->inputs[src->Index];
284 static unsigned long t_src(struct r200_vertex_program *vp, struct prog_src_register *src)
287 return MAKE_VSF_SOURCE(t_src_index(vp, src),
296 static unsigned long t_src_scalar(struct r200_vertex_program *vp, struct prog_src_register *src)
299 return MAKE_VSF_SOURCE(t_src_index(vp, src),
399 static GLboolean r200_translate_vertex_program(struct gl_context *ctx, struct r200_vertex_program *vp)
401 struct gl_vertex_program *mesa_vp = &vp->mesa_program;
414 vp->native = GL_FALSE;
415 vp->translated = GL_TRUE;
416 vp->fogmode = ctx->Fog.Mode;
467 if ((mesa_vp->Base.OutputsWritten & (1 << VERT_RESULT_FOGC)) && !vp->fogpidx) {
471 vp->fogpidx = _mesa_add_state_reference(paramList, tokens);
474 vp->pos_end = 0;
482 vp->inputs[i] = -1;
484 vp->inputmap_rev[i] = 255;
506 vp->inputs[VERT_ATTRIB_POS] = 0;
507 vp->inputmap_rev[0] = VERT_ATTRIB_POS;
512 vp->inputs[VERT_ATTRIB_WEIGHT] = 12;
513 vp->inputmap_rev[1] = VERT_ATTRIB_WEIGHT;
517 vp->inputs[VERT_ATTRIB_NORMAL] = 1;
518 vp->inputmap_rev[2] = VERT_ATTRIB_NORMAL;
522 vp->inputs[VERT_ATTRIB_COLOR0] = 2;
523 vp->inputmap_rev[4] = VERT_ATTRIB_COLOR0;
528 vp->inputs[VERT_ATTRIB_COLOR1] = 3;
529 vp->inputmap_rev[5] = VERT_ATTRIB_COLOR1;
534 vp->inputs[VERT_ATTRIB_FOG] = 15; array_count++;
535 vp->inputmap_rev[3] = VERT_ATTRIB_FOG;
541 vp->inputs[VERT_ATTRIB_TEX(i)] = i + 6;
542 vp->inputmap_rev[8 + i] = VERT_ATTRIB_TEX(i);
572 vp->inputs[VERT_ATTRIB_GENERIC(i)] = j;
575 vp->inputmap_rev[j] = VERT_ATTRIB_GENERIC(i);
578 vp->inputmap_rev[j + 2] = VERT_ATTRIB_GENERIC(i);
581 vp->inputmap_rev[j + 1] = VERT_ATTRIB_GENERIC(i);
602 o_inst = vp->instr;
655 o_inst->src0 = MAKE_VSF_SOURCE(t_src_index(vp, &src[2]),
677 o_inst->src0 = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]),
713 o_inst->src0 = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]),
727 o_inst->src0 = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]),
732 o_inst->src1 = MAKE_VSF_SOURCE(t_src_index(vp, &src[1]),
759 o_inst->src0 = t_src(vp, &src[0]);
778 o_inst->src0 = t_src(vp, &src[0]);
780 if ((o_inst - vp->instr) == 31) {
782 o_inst->src1 = MAKE_VSF_SOURCE(t_src_index(vp, &src[1]),
786 o_inst->src2 = MAKE_VSF_SOURCE(t_src_index(vp, &src[1]),
792 o_inst->src1 = t_src(vp, &src[1]);
793 o_inst->src2 = t_src(vp, &src[2]);
796 o_inst->src1 = t_src(vp, &src[1]);
797 o_inst->src2 = t_src(vp, &src[2]);
805 o_inst->src0 = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]),
813 o_inst->src1 = MAKE_VSF_SOURCE(t_src_index(vp, &src[1]),
828 o_inst->src0 = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]),
835 o_inst->src1 = t_src(vp, &src[1]);
843 o_inst->src0 = t_src(vp, &src[0]);
844 o_inst->src1 = MAKE_VSF_SOURCE(t_src_index(vp, &src[1]),
858 o_inst->src0=t_src(vp, &src[0]);
859 o_inst->src1=MAKE_VSF_SOURCE(t_src_index(vp, &src[0]),
877 o_inst->src0 = t_src(vp, &src[0]);
885 o_inst->src0 = t_src(vp, &src[0]);
912 o_inst->src0 = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]),
920 o_inst->src1 = MAKE_VSF_SOURCE(t_src_index(vp, &src[1]),
935 o_inst->src0 = MAKE_VSF_SOURCE(t_src_index(vp, &src[1]),
943 o_inst->src1 = MAKE_VSF_SOURCE(t_src_index(vp, &src[0]),
972 o_inst->src0 = t_src_scalar(vp, &src[0]);
978 o_inst->src0 = t_src_scalar(vp, &src[0]);
979 o_inst->src1 = t_src_scalar(vp, &src[1]);
984 o_inst->src0 = t_src_scalar(vp, &src[0]);
985 o_inst->src1 = t_src_scalar(vp, &src[1]);
986 o_inst->src2 = t_src_scalar(vp, &src[2]);
997 o_inst->src0 = t_src(vp, &src[0]);
1003 o_inst->src0 = t_src(vp, &src[0]);
1004 o_inst->src1 = t_src(vp, &src[1]);
1009 o_inst->src0 = t_src(vp, &src[0]);
1010 o_inst->src1 = t_src(vp, &src[1]);
1011 o_inst->src2 = t_src(vp, &src[2]);
1024 if (vp->fogmode == GL_EXP) {
1029 o_inst->src1 = EASY_VSF_SOURCE(vp->fogpidx, X, X, X, X, PARAM, NONE);
1039 else if (vp->fogmode == GL_EXP2) {
1044 o_inst->src1 = EASY_VSF_SOURCE(vp->fogpidx, X, X, X, X, PARAM, NONE);
1068 o_inst->src1 = EASY_VSF_SOURCE(vp->fogpidx, Z, Z, Z, Z, PARAM, NONE);
1075 o_inst->src1 = EASY_VSF_SOURCE(vp->fogpidx, W, W, W, W, PARAM, NONE);
1095 if(o_inst - vp->instr >= R200_VSF_MAX_INST) {
1103 vp->pos_end = (o_inst - vp->instr);
1107 vp->native = GL_TRUE;
1108 mesa_vp->Base.NumNativeInstructions = (o_inst - vp->instr);
1111 for(i=0; i < vp->program.length; i++)
1112 fprintf(stderr, "%08x\n", vp->instr[i]);
1119 struct r200_vertex_program *vp = (struct r200_vertex_program *)ctx->VertexProgram.Current;
1123 if (!vp->translated || (ctx->Fog.Enabled && ctx->Fog.Mode != vp->fogmode)) {
1125 r200_translate_vertex_program(ctx, vp);
1128 fallback = !(vp->native && r200VertexProgUpdateParams(ctx, vp));
1140 ((vp->mesa_program.Base.NumNativeInstructions - 1) << R200_PVS_CNTL_1_PROGRAM_END_SHIFT) |
1141 (vp->pos_end << R200_PVS_CNTL_1_POS_END_SHIFT);
1143 (vp->mesa_program.Base.NumNativeParameters << R200_PVS_CNTL_2_PARAM_COUNT_SHIFT);
1148 if (vp->mesa_program.IsPositionInvariant) {
1156 if (vp != rmesa->curr_vp_hw) {
1157 GLuint count = vp->mesa_program.Base.NumNativeInstructions;
1165 rmesa->hw.vpi[0].cmd[VPI_OPDST_0 + 4 * i] = vp->instr[i].op;
1166 rmesa->hw.vpi[0].cmd[VPI_SRC0_0 + 4 * i] = vp->instr[i].src0;
1167 rmesa->hw.vpi[0].cmd[VPI_SRC1_0 + 4 * i] = vp->instr[i].src1;
1168 rmesa->hw.vpi[0].cmd[VPI_SRC2_0 + 4 * i] = vp->instr[i].src2;
1181 rmesa->hw.vpi[1].cmd[VPI_OPDST_0 + 4 * i] = vp->instr[i + 64].op;
1182 rmesa->hw.vpi[1].cmd[VPI_SRC0_0 + 4 * i] = vp->instr[i + 64].src0;
1183 rmesa->hw.vpi[1].cmd[VPI_SRC1_0 + 4 * i] = vp->instr[i + 64].src1;
1184 rmesa->hw.vpi[1].cmd[VPI_SRC2_0 + 4 * i] = vp->instr[i + 64].src2;
1191 rmesa->curr_vp_hw = vp;
1214 struct r200_vertex_program *vp;
1218 vp = CALLOC_STRUCT(r200_vertex_program);
1219 return _mesa_init_vertex_program(ctx, &vp->mesa_program, target, id);
1239 struct r200_vertex_program *vp = (void *)prog;
1244 vp->translated = GL_FALSE;
1245 vp->fogpidx = 0;
1246 /* memset(&vp->translated, 0, sizeof(struct r200_vertex_program) - sizeof(struct gl_vertex_program));*/
1247 r200_translate_vertex_program(ctx, vp);
1264 struct r200_vertex_program *vp = (void *)prog;
1269 if (!vp->translated) {
1270 r200_translate_vertex_program(ctx, vp);
1273 return vp->native;