diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2024-03-15 08:48:41 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-14 17:48:41 -0700 |
| commit | d40931cc8bde13520ea45769cf94e7cc6cc9065f (patch) | |
| tree | ecde6ebbfbc1445c587b0339332814837ff43229 /source/slang/slang-emit-c-like.cpp | |
| parent | c7d7a965c14318c07bd5b8ec60b960c2e95dfebd (diff) | |
Mesh shader refactoring and bugfixes (#3702)
Diffstat (limited to 'source/slang/slang-emit-c-like.cpp')
| -rw-r--r-- | source/slang/slang-emit-c-like.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source/slang/slang-emit-c-like.cpp b/source/slang/slang-emit-c-like.cpp index 44d74f219..2019bfa8c 100644 --- a/source/slang/slang-emit-c-like.cpp +++ b/source/slang/slang-emit-c-like.cpp @@ -2409,6 +2409,7 @@ void CLikeSourceEmitter::defaultEmitInstExpr(IRInst* inst, const EmitOpInfo& inO break; } case kIROp_GetElement: + case kIROp_MeshOutputRef: case kIROp_GetElementPtr: case kIROp_ImageSubscript: // HACK: deal with translation of GLSL geometry shader input arrays. @@ -2904,6 +2905,20 @@ void CLikeSourceEmitter::_emitInst(IRInst* inst) m_writer->emit(";\n"); } break; + case kIROp_MeshOutputSet: + { + auto ii = (IRMeshOutputSet*)inst; + auto subscriptOuter = getInfo(EmitOp::General); + auto subscriptPrec = getInfo(EmitOp::Postfix); + emitOperand(ii->getBase(), leftSide(subscriptOuter, subscriptPrec)); + m_writer->emit("["); + emitOperand(ii->getIndex(), getInfo(EmitOp::General)); + m_writer->emit("]"); + m_writer->emit(" = "); + emitOperand(ii->getElementValue(), getInfo(EmitOp::General)); + m_writer->emit(";\n"); + } + break; } } |
