ShaderGen: Implemented the KIL instruction, which is equivalent to 'discard'.
This commit is contained in:
parent
c3a8ea76f1
commit
17a0ef1e1e
|
@ -566,10 +566,16 @@ private:
|
||||||
default: {
|
default: {
|
||||||
switch (instr.opcode.EffectiveOpCode()) {
|
switch (instr.opcode.EffectiveOpCode()) {
|
||||||
case OpCode::Id::EXIT: {
|
case OpCode::Id::EXIT: {
|
||||||
|
ASSERT_MSG(instr.pred.pred_index == static_cast<u64>(Pred::UnusedIndex),
|
||||||
|
"Predicated exits not implemented");
|
||||||
shader.AddLine("return true;");
|
shader.AddLine("return true;");
|
||||||
offset = PROGRAM_END - 1;
|
offset = PROGRAM_END - 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case OpCode::Id::KIL: {
|
||||||
|
shader.AddLine("discard;");
|
||||||
|
break;
|
||||||
|
}
|
||||||
case OpCode::Id::IPA: {
|
case OpCode::Id::IPA: {
|
||||||
const auto& attribute = instr.attribute.fmt28;
|
const auto& attribute = instr.attribute.fmt28;
|
||||||
std::string dest = GetRegister(instr.gpr0);
|
std::string dest = GetRegister(instr.gpr0);
|
||||||
|
@ -589,7 +595,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close the predicate condition scope.
|
// Close the predicate condition scope.
|
||||||
if (instr.pred != Pred::UnusedIndex) {
|
if (instr.pred.pred_index != static_cast<u64>(Pred::UnusedIndex)) {
|
||||||
--shader.scope;
|
--shader.scope;
|
||||||
shader.AddLine('}');
|
shader.AddLine('}');
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue