gl_shader_decompiler: Declare predicates on use.

- Used by Super Mario Odyssey (when going in game).
This commit is contained in:
bunnei 2018-08-08 21:51:09 -04:00
parent 25ba4d1b68
commit 4283019aa0

View File

@ -657,16 +657,17 @@ private:
* @param instr Instruction to generate the if condition for. * @param instr Instruction to generate the if condition for.
* @returns string containing the predicate condition. * @returns string containing the predicate condition.
*/ */
std::string GetPredicateCondition(u64 index, bool negate) const { std::string GetPredicateCondition(u64 index, bool negate) {
using Tegra::Shader::Pred; using Tegra::Shader::Pred;
std::string variable; std::string variable;
// Index 7 is used as an 'Always True' condition. // Index 7 is used as an 'Always True' condition.
if (index == static_cast<u64>(Pred::UnusedIndex)) if (index == static_cast<u64>(Pred::UnusedIndex)) {
variable = "true"; variable = "true";
else } else {
variable = 'p' + std::to_string(index) + '_' + suffix; variable = 'p' + std::to_string(index) + '_' + suffix;
declr_predicates.insert(variable);
}
if (negate) { if (negate) {
return "!(" + variable + ')'; return "!(" + variable + ')';
} }