diff options
| author | Yong He <yonghe@outlook.com> | 2025-01-24 21:39:13 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-24 21:39:13 -0800 |
| commit | 3ecbeacd3b02e2a8c1b9796df1caced0aa34224f (patch) | |
| tree | 6e8ddd208082ca042a7ebac2f5125337b4216a13 /source/slang/slang-emit-metal.cpp | |
| parent | a7958afa5ace2c92e10e1765a5bc33c891d09079 (diff) | |
Fix depth texture sampling on Metal. (#6168)
Diffstat (limited to 'source/slang/slang-emit-metal.cpp')
| -rw-r--r-- | source/slang/slang-emit-metal.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/source/slang/slang-emit-metal.cpp b/source/slang/slang-emit-metal.cpp index 5e4381d21..166f02535 100644 --- a/source/slang/slang-emit-metal.cpp +++ b/source/slang/slang-emit-metal.cpp @@ -636,6 +636,22 @@ bool MetalSourceEmitter::tryEmitInstStmtImpl(IRInst* inst) m_writer->emit(");\n"); return true; } + case kIROp_MetalCastToDepthTexture: + { + emitType(inst->getDataType(), getName(inst)); + m_writer->emit(";\n{\n"); + m_writer->indent(); + m_writer->emit("auto _slang_ordinary_texture = "); + emitOperand(inst->getOperand(0), getInfo(EmitOp::General)); + m_writer->emit(";\n"); + m_writer->emit(getName(inst)); + m_writer->emit(" = *("); + emitType(inst->getDataType()); + m_writer->emit(" thread*)(&_slang_ordinary_texture);\n"); + m_writer->dedent(); + m_writer->emit("}\n"); + return true; + } } return false; } |
