Browse Source

Merge pull request #1216 from ogniK5377/ffma-assert

Added FFMA asserts and missing fields
nce_cpp
bunnei 7 years ago
committed by GitHub
parent
commit
cb3726426f
  1. 3
      src/video_core/engines/shader_bytecode.h
  2. 6
      src/video_core/renderer_opengl/gl_shader_decompiler.cpp

3
src/video_core/engines/shader_bytecode.h

@ -403,8 +403,11 @@ union Instruction {
} flow;
union {
BitField<47, 1, u64> cc;
BitField<48, 1, u64> negate_b;
BitField<49, 1, u64> negate_c;
BitField<51, 2, u64> tab5980_1;
BitField<53, 2, u64> tab5980_0;
} ffma;
union {

6
src/video_core/renderer_opengl/gl_shader_decompiler.cpp

@ -1445,6 +1445,12 @@ private:
std::string op_b = instr.ffma.negate_b ? "-" : "";
std::string op_c = instr.ffma.negate_c ? "-" : "";
ASSERT_MSG(instr.ffma.cc == 0, "FFMA cc not implemented");
ASSERT_MSG(instr.ffma.tab5980_0 == 1, "FFMA tab5980_0({}) not implemented",
instr.ffma.tab5980_0.Value()); // Seems to be 1 by default based on SMO
ASSERT_MSG(instr.ffma.tab5980_1 == 0, "FFMA tab5980_1({}) not implemented",
instr.ffma.tab5980_1.Value());
switch (opcode->GetId()) {
case OpCode::Id::FFMA_CR: {
op_b += regs.GetUniform(instr.cbuf34.index, instr.cbuf34.offset,

Loading…
Cancel
Save