summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-ast-stmt.h2
-rw-r--r--source/slang/slang-check-stmt.cpp2
-rw-r--r--source/slang/slang-emit-cpp.cpp20
-rw-r--r--source/slang/slang-ir-legalize-types.cpp3
-rw-r--r--source/slang/slang-lower-to-ir.cpp4
-rw-r--r--source/slang/slang-parser.cpp2
6 files changed, 17 insertions, 16 deletions
diff --git a/source/slang/slang-ast-stmt.h b/source/slang/slang-ast-stmt.h
index 20f9e270e..2edc844c6 100644
--- a/source/slang/slang-ast-stmt.h
+++ b/source/slang/slang-ast-stmt.h
@@ -125,7 +125,7 @@ class GpuForeachStmt : public ScopeStmt
{
SLANG_AST_CLASS(GpuForeachStmt)
- Expr* renderer = nullptr;
+ Expr* device = nullptr;
Expr* gridDims = nullptr;
VarDecl* dispatchThreadID = nullptr;
Expr* kernelCall = nullptr;
diff --git a/source/slang/slang-check-stmt.cpp b/source/slang/slang-check-stmt.cpp
index 9a5aee15c..6f8ed9ff5 100644
--- a/source/slang/slang-check-stmt.cpp
+++ b/source/slang/slang-check-stmt.cpp
@@ -290,7 +290,7 @@ namespace Slang
void SemanticsStmtVisitor::visitGpuForeachStmt(GpuForeachStmt*stmt)
{
- stmt->renderer = CheckExpr(stmt->renderer);
+ stmt->device = CheckExpr(stmt->device);
stmt->gridDims = CheckExpr(stmt->gridDims);
ensureDeclBase(stmt->dispatchThreadID, DeclCheckState::Checked);
WithOuterStmt subContext(this, stmt);
diff --git a/source/slang/slang-emit-cpp.cpp b/source/slang/slang-emit-cpp.cpp
index 60b86b827..f71406261 100644
--- a/source/slang/slang-emit-cpp.cpp
+++ b/source/slang/slang-emit-cpp.cpp
@@ -2710,22 +2710,20 @@ void CPPSourceEmitter::emitModuleImpl(IRModule* module, DiagnosticSink* sink)
// Emit a wrapper function for calling the shader blob
m_writer->emit("void ");
m_writer->emit(entryPointName);
- m_writer->emit("_wrapper(gfx_Renderer_0* renderer, Vector<uint32_t, 3> gridDims, \n");
+ m_writer->emit("_wrapper(gfx_Device_0* device, Vector<uint32_t, 3> gridDims, \n");
m_writer->emit("\tRWStructuredBuffer<float> buffer)\n{");
- m_writer->emit("\n\tgfx_ShaderProgram_0* shaderProgram = loadShaderProgram_0(renderer, __");
+ /* m_writer->emit("\n\tgfx_ShaderProgram_0* shaderProgram = loadShaderProgram_0(device, __");
m_writer->emit(entryPointName);
m_writer->emit(", __");
m_writer->emit(entryPointName);
- m_writer->emit("Size);");
- m_writer->emit("\n\tgfx_DescriptorSetLayout_0* setLayout = buildDescriptorSetLayout_0(renderer);");
- m_writer->emit("\n\tgfx_PipelineLayout_0* pipelineLayout = buildPipeline_0(renderer, setLayout);");
- m_writer->emit("\n\tgfx_DescriptorSet_0* descriptorSet = ");
- m_writer->emit("buildDescriptorSet_0(renderer, setLayout, unconvertBuffer_0(buffer));");
+ m_writer->emit("Size);");*/
+ m_writer->emit("\n\tgfx_ShaderProgram_0* shaderProgram = loadShaderProgram_0(device);");
+ m_writer->emit("\n\tgfx_TransientResourceHeap_0* transientHeap = buildTransientHeap_0(device);");
m_writer->emit("\n\tgfx_PipelineState_0* pipelineState = ");
- m_writer->emit("buildPipelineState_0(shaderProgram, renderer, pipelineLayout);");
-
- m_writer->emit("\n\tdispatchComputation_0(renderer, pipelineState, pipelineLayout, ");
- m_writer->emit("descriptorSet, gridDims.x, gridDims.y, gridDims.z);");
+ m_writer->emit("buildPipelineState_0(device, shaderProgram);");
+ m_writer->emit("\n\tgfx_ResourceView_0* bufferView = createBufferView_0(device, unconvertBuffer_0(buffer));");
+ m_writer->emit("\n\tdispatchComputation_0(device, transientHeap, pipelineState, ");
+ m_writer->emit("bufferView, gridDims.x, gridDims.y, gridDims.z);");
m_writer->emit("\n}\n");
}
}
diff --git a/source/slang/slang-ir-legalize-types.cpp b/source/slang/slang-ir-legalize-types.cpp
index d88166f83..416df6c77 100644
--- a/source/slang/slang-ir-legalize-types.cpp
+++ b/source/slang/slang-ir-legalize-types.cpp
@@ -1668,6 +1668,9 @@ static LegalVal legalizeInst(
return legalizeConstruct(context, type);
case kIROp_undefined:
return LegalVal();
+ case kIROp_GpuForeach:
+ // This case should only happen when compiling for a target that does not support GpuForeach
+ return LegalVal();
default:
// TODO: produce a user-visible diagnostic here
SLANG_UNEXPECTED("non-simple operand(s)!");
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp
index c1738887d..cde9fcc70 100644
--- a/source/slang/slang-lower-to-ir.cpp
+++ b/source/slang/slang-lower-to-ir.cpp
@@ -4345,13 +4345,13 @@ struct StmtLoweringVisitor : StmtVisitor<StmtLoweringVisitor>
auto builder = getBuilder();
startBlockIfNeeded(stmt);
- auto renderer = getSimpleVal(context, lowerRValueExpr(context, stmt->renderer));
+ auto device = getSimpleVal(context, lowerRValueExpr(context, stmt->device));
auto gridDims = getSimpleVal(context, lowerRValueExpr(context, stmt->gridDims));
List<IRInst*> irArgs;
if (auto callExpr = as<InvokeExpr>(stmt->kernelCall))
{
- irArgs.add(renderer);
+ irArgs.add(device);
irArgs.add(gridDims);
auto fref = getSimpleVal(context, lowerRValueExpr(context, callExpr->functionExpr));
irArgs.add(fref);
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp
index 7bb933b39..d9bbaaace 100644
--- a/source/slang/slang-parser.cpp
+++ b/source/slang/slang-parser.cpp
@@ -3745,7 +3745,7 @@ namespace Slang
parser->FillPosition(stmt);
parser->ReadToken("__GPU_FOREACH");
parser->ReadToken(TokenType::LParent);
- stmt->renderer = parser->ParseArgExpr();
+ stmt->device = parser->ParseArgExpr();
parser->ReadToken(TokenType::Comma);
stmt->gridDims = parser->ParseArgExpr();