summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-emit-metal.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-01-24 21:39:13 -0800
committerGitHub <noreply@github.com>2025-01-24 21:39:13 -0800
commit3ecbeacd3b02e2a8c1b9796df1caced0aa34224f (patch)
tree6e8ddd208082ca042a7ebac2f5125337b4216a13 /source/slang/slang-emit-metal.cpp
parenta7958afa5ace2c92e10e1765a5bc33c891d09079 (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.cpp16
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;
}