summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-emit-glsl.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp
index 9d4f72b07..eb71286a2 100644
--- a/source/slang/slang-emit-glsl.cpp
+++ b/source/slang/slang-emit-glsl.cpp
@@ -2727,6 +2727,23 @@ bool GLSLSourceEmitter::tryEmitInstExprImpl(IRInst* inst, const EmitOpInfo& inOu
}
break;
}
+ case kIROp_CastPtrToInt:
+ case kIROp_CastIntToPtr:
+ case kIROp_PtrCast:
+ {
+ // For GLSL, emit constructor-style casts instead of C-style casts
+ auto prec = getInfo(EmitOp::Postfix);
+ EmitOpInfo outerPrec = inOuterPrec; // Make a mutable copy
+ bool needClose = maybeEmitParens(outerPrec, prec);
+
+ emitType(inst->getDataType());
+ m_writer->emit("(");
+ emitOperand(inst->getOperand(0), getInfo(EmitOp::General));
+ m_writer->emit(")");
+
+ maybeCloseParens(needClose);
+ return true;
+ }
default:
break;
}