vertex_shader: Implement MADI instruction.

nihstro: Update submodule to latest upstream/master to support MADI instruction decoding.
This commit is contained in:
bunnei 2015-05-05 22:06:46 -04:00
parent 088f6ae2c6
commit f935130a0f
2 changed files with 8 additions and 5 deletions

2
externals/nihstro vendored

@ -1 +1 @@
Subproject commit 4a78588b308564f7ebae193e0ae00d9a0d5741d5 Subproject commit 81f1804a43f625e3a1a20752c0db70a413410380

View File

@ -366,12 +366,15 @@ static void ProcessShaderCode(VertexShaderState& state) {
case OpCode::Type::MultiplyAdd: case OpCode::Type::MultiplyAdd:
{ {
if (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MAD) { if ((instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MAD) ||
(instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI)) {
const SwizzlePattern& swizzle = *(SwizzlePattern*)&swizzle_data[instr.mad.operand_desc_id]; const SwizzlePattern& swizzle = *(SwizzlePattern*)&swizzle_data[instr.mad.operand_desc_id];
const float24* src1_ = LookupSourceRegister(instr.mad.src1); bool is_inverted = (instr.opcode.Value().EffectiveOpCode() == OpCode::Id::MADI);
const float24* src2_ = LookupSourceRegister(instr.mad.src2);
const float24* src3_ = LookupSourceRegister(instr.mad.src3); const float24* src1_ = LookupSourceRegister(instr.mad.GetSrc1(is_inverted));
const float24* src2_ = LookupSourceRegister(instr.mad.GetSrc2(is_inverted));
const float24* src3_ = LookupSourceRegister(instr.mad.GetSrc3(is_inverted));
const bool negate_src1 = ((bool)swizzle.negate_src1 != false); const bool negate_src1 = ((bool)swizzle.negate_src1 != false);
const bool negate_src2 = ((bool)swizzle.negate_src2 != false); const bool negate_src2 = ((bool)swizzle.negate_src2 != false);