From f8294202ce8d5658f6308eeaed634058db9bbb4b Mon Sep 17 00:00:00 2001 From: Anders Leino Date: Wed, 6 Nov 2024 13:14:35 +0200 Subject: Make various parameters and return types require specialization when targeting WGSL (#5483) Structured buffer types translate to array types in the WGSL emitter. WGSL doesn't allow passing runtime-sized arrays to functions. Similarly for pointers to texture handles. Also, structured buffers (runtime-sized arrays) cannot be returned in WGSL. This closes issue #5228, issue #5278 and issue #5288 by enabling specialized functions to be generated in these cases, in order to work around these constraints. --- source/slang/slang-type-layout.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'source/slang/slang-type-layout.cpp') diff --git a/source/slang/slang-type-layout.cpp b/source/slang/slang-type-layout.cpp index a63d6401e..e36e54531 100644 --- a/source/slang/slang-type-layout.cpp +++ b/source/slang/slang-type-layout.cpp @@ -2397,6 +2397,20 @@ bool isCUDATarget(TargetRequest* targetReq) } } +bool isWGPUTarget(TargetRequest* targetReq) +{ + switch (targetReq->getTarget()) + { + default: + return false; + + case CodeGenTarget::WGSL: + case CodeGenTarget::WGSLSPIRV: + case CodeGenTarget::WGSLSPIRVAssembly: + return true; + } +} + SourceLanguage getIntermediateSourceLanguageForTarget(TargetProgram* targetProgram) { // If we are emitting directly, there is no intermediate source language -- cgit v1.2.3