diff options
| author | Yong He <yonghe@outlook.com> | 2022-02-25 20:49:31 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-25 20:49:31 -0800 |
| commit | c31577953d5041c82375c22d847c2eba06106c58 (patch) | |
| tree | bc685a8b63fc13cb85d160ae13df950056ca6e91 /source/slang/slang-emit-glsl.cpp | |
| parent | 8990d270e3a0c01b1f7abbf4f79556c5ef82a096 (diff) | |
Improved SCCP, inlining and resource specialization passes, legalize `ImageSubscript` for GLSL (#2146)
Diffstat (limited to 'source/slang/slang-emit-glsl.cpp')
| -rw-r--r-- | source/slang/slang-emit-glsl.cpp | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp index 441fc94d7..44326a18e 100644 --- a/source/slang/slang-emit-glsl.cpp +++ b/source/slang/slang-emit-glsl.cpp @@ -774,38 +774,38 @@ void GLSLSourceEmitter::emitSimpleValueImpl(IRInst* inst) { emitType(type); m_writer->emit("("); - m_writer->emit(litInst->value.intVal); + m_writer->emit(int8_t(litInst->value.intVal)); m_writer->emit(")"); return; } case BaseType::Int16: { - m_writer->emit(litInst->value.intVal); + m_writer->emit(int16_t(litInst->value.intVal)); m_writer->emit("S"); return; } case BaseType::Int: { - m_writer->emit(litInst->value.intVal); + m_writer->emit(int32_t(litInst->value.intVal)); return; } case BaseType::UInt8: { emitType(type); m_writer->emit("("); - m_writer->emit(UInt(litInst->value.intVal)); + m_writer->emit(UInt(uint8_t(litInst->value.intVal))); m_writer->emit("U)"); return; } case BaseType::UInt16: { - m_writer->emit(UInt(litInst->value.intVal)); + m_writer->emit(UInt(uint16_t(litInst->value.intVal))); m_writer->emit("US"); return; } case BaseType::UInt: { - m_writer->emit(UInt(litInst->value.intVal)); + m_writer->emit(UInt(uint32_t(litInst->value.intVal))); m_writer->emit("U"); return; } @@ -1636,6 +1636,26 @@ bool GLSLSourceEmitter::tryEmitInstExprImpl(IRInst* inst, const EmitOpInfo& inOu emitOperand(inst->getOperand(0), outerPrec); return true; } + case kIROp_ImageLoad: + { + m_writer->emit("imageLoad("); + emitOperand(inst->getOperand(0), getInfo(EmitOp::General)); + m_writer->emit(","); + emitOperand(inst->getOperand(1), getInfo(EmitOp::General)); + m_writer->emit(")"); + return true; + } + case kIROp_ImageStore: + { + m_writer->emit("imageStore("); + emitOperand(inst->getOperand(0), getInfo(EmitOp::General)); + m_writer->emit(","); + emitOperand(inst->getOperand(1), getInfo(EmitOp::General)); + m_writer->emit(","); + emitOperand(inst->getOperand(2), getInfo(EmitOp::General)); + m_writer->emit(")"); + return true; + } case kIROp_StructuredBufferLoad: { auto outerPrec = inOuterPrec; |
