From ccf2611c024ab12dcccd978f3f501d4ee9fc52bc Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 2 Oct 2023 03:33:58 -0700 Subject: Add SPIRV intrinsics for ShaderExecutionReordering and RW/Buffer. (#3252) * Add SPIRV intrinsics for ShaderExecutionReordering. * Add intrinsics for `Buffer` and `RWBuffer`. * Various spirv fixes. * Marshal bool vector type. * Inline global constants + OpFOrdNotEqual->OpFUnordNotEqual. * Fix. --------- Co-authored-by: Yong He --- source/slang/slang-compiler.h | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'source/slang/slang-compiler.h') diff --git a/source/slang/slang-compiler.h b/source/slang/slang-compiler.h index aae18d08f..c5bd3348c 100755 --- a/source/slang/slang-compiler.h +++ b/source/slang/slang-compiler.h @@ -1564,6 +1564,18 @@ namespace Slang Binary = SLANG_WRITER_MODE_BINARY, }; + class TargetRequest; + + /// Are we generating code for a D3D API? + bool isD3DTarget(TargetRequest* targetReq); + + /// Are we generating code for a Khronos API (OpenGL or Vulkan)? + bool isKhronosTarget(TargetRequest* targetReq); + + /// Are we generating code for a CUDA API (CUDA / OptiX)? + bool isCUDATarget(TargetRequest* targetReq); + + /// A request to generate output in some target format. class TargetRequest : public RefObject { @@ -1601,7 +1613,7 @@ namespace Slang bool shouldEmitSPIRVDirectly() { - return targetFlags & SLANG_TARGET_FLAG_GENERATE_SPIRV_DIRECTLY; + return isKhronosTarget(this) && ((targetFlags & SLANG_TARGET_FLAG_GENERATE_SPIRV_DIRECTLY) != 0); } bool isWholeProgramRequest() @@ -1653,15 +1665,6 @@ namespace Slang RefPtr hlslToVulkanLayoutOptions; ///< Optional vulkan layout options }; - /// Are we generating code for a D3D API? - bool isD3DTarget(TargetRequest* targetReq); - - /// Are we generating code for a Khronos API (OpenGL or Vulkan)? - bool isKhronosTarget(TargetRequest* targetReq); - - /// Are we generating code for a CUDA API (CUDA / OptiX)? - bool isCUDATarget(TargetRequest* targetReq); - /// Given a target request returns which (if any) intermediate source language is required /// to produce it. /// -- cgit v1.2.3