Shader_IR: add the ability to amend code in the shader ir.

This commit introduces a mechanism by which shader IR code can be
amended and extended. This useful for track algorithms where certain
information can derived from before the track such as indexes to array
samplers.
This commit is contained in:
Fernando Sahmkow
2019-12-30 13:54:53 -04:00
committed by FernandoS27
parent f846e3d6d0
commit b3371ed09e
5 changed files with 72 additions and 3 deletions

View File

@ -176,6 +176,10 @@ public:
/// Returns a condition code evaluated from internal flags
Node GetConditionCode(Tegra::Shader::ConditionCode cc) const;
const Node& GetAmendNode(u32 index) const {
return amend_code[index];
}
private:
friend class ASTDecoder;
@ -392,6 +396,9 @@ private:
Tegra::Shader::Instruction instr,
bool is_write);
/// Amends
u32 DeclareAmend(Node new_amend);
const ProgramCode& program_code;
const u32 main_offset;
const CompilerSettings settings;
@ -406,6 +413,7 @@ private:
std::map<u32, NodeBlock> basic_blocks;
NodeBlock global_code;
ASTManager program_manager{true, true};
NodeBlock amend_code;
std::set<u32> used_registers;
std::set<Tegra::Shader::Pred> used_predicates;