summaryrefslogtreecommitdiff
path: root/source/slang/slang-emit-c-like.cpp
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2024-03-15 08:48:41 +0800
committerGitHub <noreply@github.com>2024-03-14 17:48:41 -0700
commitd40931cc8bde13520ea45769cf94e7cc6cc9065f (patch)
treeecde6ebbfbc1445c587b0339332814837ff43229 /source/slang/slang-emit-c-like.cpp
parentc7d7a965c14318c07bd5b8ec60b960c2e95dfebd (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.cpp15
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;
}
}