mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 03:08:05 +02:00
Accomodate ARB_fp XPD opcode separately from NV_fp's X2D.
This commit is contained in:
parent
292fa335d6
commit
eeb5eeb2a6
5 changed files with 18 additions and 4 deletions
|
|
@ -112,7 +112,8 @@ enum fp_opcode {
|
|||
FP_OPCODE_UP2US, /* NV_f_p only */
|
||||
FP_OPCODE_UP4B, /* NV_f_p only */
|
||||
FP_OPCODE_UP4UB, /* NV_f_p only */
|
||||
FP_OPCODE_X2D, /* XPD in ARB_f_p */
|
||||
FP_OPCODE_XPD, /* ARB_f_p only - cross product */
|
||||
FP_OPCODE_X2D, /* NV_f_p only - 2D matrix multiply */
|
||||
FP_OPCODE_END /* private opcode */
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ _mesa_debug_fp_inst(GLint num, struct fp_instruction *fp)
|
|||
case FP_OPCODE_TXP:
|
||||
fprintf(stderr, "FP_OPCODE_TXP"); break;
|
||||
|
||||
case FP_OPCODE_X2D:
|
||||
case FP_OPCODE_XPD:
|
||||
fprintf(stderr, "FP_OPCODE_XPD"); break;
|
||||
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -2903,7 +2903,7 @@ parse_fp_instruction (GLcontext * ctx, GLubyte ** inst,
|
|||
case OP_XPD_SAT:
|
||||
fp->Saturate = 1;
|
||||
case OP_XPD:
|
||||
fp->Opcode = FP_OPCODE_X2D;
|
||||
fp->Opcode = FP_OPCODE_XPD;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -112,7 +112,8 @@ enum fp_opcode {
|
|||
FP_OPCODE_UP2US, /* NV_f_p only */
|
||||
FP_OPCODE_UP4B, /* NV_f_p only */
|
||||
FP_OPCODE_UP4UB, /* NV_f_p only */
|
||||
FP_OPCODE_X2D, /* XPD in ARB_f_p */
|
||||
FP_OPCODE_X2D, /* NV_f_p only - 2d mat mul */
|
||||
FP_OPCODE_XPD, /* ARB_f_p only - cross product */
|
||||
FP_OPCODE_END /* private opcode */
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1233,6 +1233,18 @@ execute_program( GLcontext *ctx,
|
|||
store_vector4( inst, machine, result );
|
||||
}
|
||||
break;
|
||||
case FP_OPCODE_XPD: /* cross product */
|
||||
{
|
||||
GLfloat a[4], b[4], result[4];
|
||||
fetch_vector4( ctx, &inst->SrcReg[0], machine, program, a );
|
||||
fetch_vector4( ctx, &inst->SrcReg[1], machine, program, b );
|
||||
result[0] = a[1] * b[2] - a[2] * b[1];
|
||||
result[1] = a[2] * b[0] - a[0] * b[2];
|
||||
result[2] = a[0] * b[1] - a[1] * b[0];
|
||||
result[3] = 1.0;
|
||||
store_vector4( inst, machine, result );
|
||||
}
|
||||
break;
|
||||
case FP_OPCODE_X2D: /* 2-D matrix transform */
|
||||
{
|
||||
GLfloat a[4], b[4], c[4], result[4];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue