diff options
| author | 2021-03-19 19:28:31 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:23 -0400 | |
| commit | 260743f371236f7c57b01334b1c3474b15a47c39 (patch) | |
| tree | 312d89fa8215199ef5f7ec1fc84b025df526e107 /src/shader_recompiler/frontend/ir/ir_emitter.cpp | |
| parent | shader: Implement DADD (diff) | |
| download | yuzu-260743f371236f7c57b01334b1c3474b15a47c39.tar.gz yuzu-260743f371236f7c57b01334b1c3474b15a47c39.tar.xz yuzu-260743f371236f7c57b01334b1c3474b15a47c39.zip | |
shader: Add partial rasterizer integration
Diffstat (limited to 'src/shader_recompiler/frontend/ir/ir_emitter.cpp')
| -rw-r--r-- | src/shader_recompiler/frontend/ir/ir_emitter.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp index 958282160..672836c0b 100644 --- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp +++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp | |||
| @@ -82,6 +82,12 @@ void IREmitter::Return() { | |||
| 82 | Inst(Opcode::Return); | 82 | Inst(Opcode::Return); |
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | void IREmitter::DemoteToHelperInvocation(Block* continue_label) { | ||
| 86 | block->SetBranch(continue_label); | ||
| 87 | continue_label->AddImmediatePredecessor(block); | ||
| 88 | Inst(Opcode::DemoteToHelperInvocation, continue_label); | ||
| 89 | } | ||
| 90 | |||
| 85 | U32 IREmitter::GetReg(IR::Reg reg) { | 91 | U32 IREmitter::GetReg(IR::Reg reg) { |
| 86 | return Inst<U32>(Opcode::GetRegister, reg); | 92 | return Inst<U32>(Opcode::GetRegister, reg); |
| 87 | } | 93 | } |
| @@ -248,6 +254,14 @@ void IREmitter::SetAttribute(IR::Attribute attribute, const F32& value) { | |||
| 248 | Inst(Opcode::SetAttribute, attribute, value); | 254 | Inst(Opcode::SetAttribute, attribute, value); |
| 249 | } | 255 | } |
| 250 | 256 | ||
| 257 | void IREmitter::SetFragColor(u32 index, u32 component, const F32& value) { | ||
| 258 | Inst(Opcode::SetFragColor, Imm32(index), Imm32(component), value); | ||
| 259 | } | ||
| 260 | |||
| 261 | void IREmitter::SetFragDepth(const F32& value) { | ||
| 262 | Inst(Opcode::SetFragDepth, value); | ||
| 263 | } | ||
| 264 | |||
| 251 | U32 IREmitter::WorkgroupIdX() { | 265 | U32 IREmitter::WorkgroupIdX() { |
| 252 | return U32{CompositeExtract(Inst(Opcode::WorkgroupId), 0)}; | 266 | return U32{CompositeExtract(Inst(Opcode::WorkgroupId), 0)}; |
| 253 | } | 267 | } |