diff options
Diffstat (limited to 'source/slang/slang-type-layout.cpp')
| -rw-r--r-- | source/slang/slang-type-layout.cpp | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/source/slang/slang-type-layout.cpp b/source/slang/slang-type-layout.cpp index 275a178d0..3e2560755 100644 --- a/source/slang/slang-type-layout.cpp +++ b/source/slang/slang-type-layout.cpp @@ -1090,6 +1090,29 @@ struct CPULayoutRulesFamilyImpl : LayoutRulesFamilyImpl LayoutRulesImpl* getStructuredBufferRules(CompilerOptionSet& compilerOptions) override; }; +struct CLayoutRulesFamilyImpl : LayoutRulesFamilyImpl +{ + virtual LayoutRulesImpl* getAnyValueRules() override; + virtual LayoutRulesImpl* getConstantBufferRules( + CompilerOptionSet& compilerOptions, + Type* containerType) override; + virtual LayoutRulesImpl* getPushConstantBufferRules() override; + virtual LayoutRulesImpl* getTextureBufferRules(CompilerOptionSet& compilerOptions) override; + virtual LayoutRulesImpl* getVaryingInputRules() override; + virtual LayoutRulesImpl* getVaryingOutputRules() override; + virtual LayoutRulesImpl* getSpecializationConstantRules() override; + virtual LayoutRulesImpl* getShaderStorageBufferRules( + CompilerOptionSet& compilerOptions) override; + virtual LayoutRulesImpl* getParameterBlockRules(CompilerOptionSet& compilerOptions) override; + + LayoutRulesImpl* getRayPayloadParameterRules() override; + LayoutRulesImpl* getCallablePayloadParameterRules() override; + LayoutRulesImpl* getHitAttributesParameterRules() override; + + LayoutRulesImpl* getShaderRecordConstantBufferRules() override; + LayoutRulesImpl* getStructuredBufferRules(CompilerOptionSet& compilerOptions) override; +}; + struct CUDALayoutRulesFamilyImpl : LayoutRulesFamilyImpl { virtual LayoutRulesImpl* getAnyValueRules() override; @@ -1170,6 +1193,7 @@ struct WGSLLayoutRulesFamilyImpl : LayoutRulesFamilyImpl GLSLLayoutRulesFamilyImpl kGLSLLayoutRulesFamilyImpl; HLSLLayoutRulesFamilyImpl kHLSLLayoutRulesFamilyImpl; CPULayoutRulesFamilyImpl kCPULayoutRulesFamilyImpl; +CLayoutRulesFamilyImpl kCLayoutRulesFamilyImpl; CUDALayoutRulesFamilyImpl kCUDALayoutRulesFamilyImpl; MetalLayoutRulesFamilyImpl kMetalLayoutRulesFamilyImpl; MetalArgumentBufferTier2LayoutRulesFamilyImpl kMetalArgumentBufferTier2LayoutRulesFamilyImpl; @@ -1341,6 +1365,69 @@ LayoutRulesImpl kCPUAnyValueLayoutRulesImpl_ = { &kCPUObjectLayoutRulesImpl, }; +// C layout + +LayoutRulesImpl kCLayoutRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kCPULayoutRulesImpl, + &kGLSLObjectLayoutRulesImpl, +}; + +LayoutRulesImpl kCAnyValueLayoutRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kDefaultLayoutRulesImpl, + &kCPUObjectLayoutRulesImpl, +}; + +LayoutRulesImpl kCPushConstantRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kCPULayoutRulesImpl, + &kGLSLPushConstantBufferObjectLayoutRulesImpl_, +}; + +LayoutRulesImpl kCVaryingInputLayoutRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kGLSLVaryingOutputLayoutRulesImpl, + &kGLSLObjectLayoutRulesImpl, +}; + +LayoutRulesImpl kCVaryingOutputLayoutRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kGLSLVaryingOutputLayoutRulesImpl, + &kGLSLObjectLayoutRulesImpl, +}; + +LayoutRulesImpl kCSpecializationConstantLayoutRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kGLSLSpecializationConstantLayoutRulesImpl, + &kGLSLObjectLayoutRulesImpl, +}; + +LayoutRulesImpl kCShaderRecordLayoutRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kCPULayoutRulesImpl, + &kGLSLShaderRecordConstantBufferObjectLayoutRulesImpl_, +}; + +LayoutRulesImpl kCRayPayloadParameterLayoutRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kGLSLRayPayloadParameterLayoutRulesImpl, + &kGLSLObjectLayoutRulesImpl, +}; + +LayoutRulesImpl kCCallablePayloadParameterLayoutRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kGLSLCallablePayloadParameterLayoutRulesImpl, + &kGLSLObjectLayoutRulesImpl, +}; + +LayoutRulesImpl kCHitAttributesParameterLayoutRulesImpl_ = { + &kCLayoutRulesFamilyImpl, + &kGLSLHitAttributesParameterLayoutRulesImpl, + &kGLSLObjectLayoutRulesImpl, +}; + + // CUDA static CUDAObjectLayoutRulesImpl kCUDAObjectLayoutRulesImpl; @@ -1534,6 +1621,8 @@ LayoutRulesImpl* GLSLLayoutRulesFamilyImpl::getConstantBufferRules( { if (compilerOptions.shouldUseScalarLayout()) return &kScalarLayoutRulesImpl_; + else if (compilerOptions.shouldUseCLayout()) + return &kCLayoutRulesImpl_; else if (compilerOptions.shouldUseDXLayout()) return &kFXCConstantBufferLayoutRulesFamilyImpl; if (auto cbufferType = as<ConstantBufferType>(containerType)) @@ -1548,6 +1637,8 @@ LayoutRulesImpl* GLSLLayoutRulesFamilyImpl::getConstantBufferRules( return &kStd430LayoutRulesImpl_; case ASTNodeType::ScalarDataLayoutType: return &kScalarLayoutRulesImpl_; + case ASTNodeType::CDataLayoutType: + return &kCLayoutRulesImpl_; default: break; } @@ -1560,6 +1651,8 @@ LayoutRulesImpl* GLSLLayoutRulesFamilyImpl::getParameterBlockRules( { if (compilerOptions.shouldUseScalarLayout()) return &kScalarLayoutRulesImpl_; + else if (compilerOptions.shouldUseCLayout()) + return &kCLayoutRulesImpl_; else if (compilerOptions.shouldUseDXLayout()) return &kFXCConstantBufferLayoutRulesFamilyImpl; @@ -1581,6 +1674,8 @@ LayoutRulesImpl* GLSLLayoutRulesFamilyImpl::getTextureBufferRules( { if (compilerOptions.shouldUseScalarLayout()) return &kScalarLayoutRulesImpl_; + else if (compilerOptions.shouldUseCLayout()) + return &kCLayoutRulesImpl_; else if (compilerOptions.shouldUseDXLayout()) return &kFXCConstantBufferLayoutRulesFamilyImpl; @@ -1607,6 +1702,8 @@ LayoutRulesImpl* GLSLLayoutRulesFamilyImpl::getShaderStorageBufferRules( { if (compilerOptions.shouldUseScalarLayout()) return &kScalarLayoutRulesImpl_; + else if (compilerOptions.shouldUseCLayout()) + return &kCLayoutRulesImpl_; else if (compilerOptions.shouldUseDXLayout()) return &kFXCShaderResourceLayoutRulesFamilyImpl; @@ -1633,6 +1730,8 @@ LayoutRulesImpl* GLSLLayoutRulesFamilyImpl::getStructuredBufferRules( { if (compilerOptions.shouldUseScalarLayout()) return &kScalarLayoutRulesImpl_; + else if (compilerOptions.shouldUseCLayout()) + return &kCLayoutRulesImpl_; else if (compilerOptions.shouldUseDXLayout()) return &kFXCShaderResourceLayoutRulesFamilyImpl; @@ -1779,6 +1878,70 @@ LayoutRulesImpl* CPULayoutRulesFamilyImpl::getStructuredBufferRules(CompilerOpti return &kCPULayoutRulesImpl_; } +// C compatible layout family + +LayoutRulesImpl* CLayoutRulesFamilyImpl::getAnyValueRules() +{ + return &kCAnyValueLayoutRulesImpl_; +} + +LayoutRulesImpl* CLayoutRulesFamilyImpl::getConstantBufferRules(CompilerOptionSet&, Type*) +{ + return &kCLayoutRulesImpl_; +} + +LayoutRulesImpl* CLayoutRulesFamilyImpl::getPushConstantBufferRules() +{ + return &kCPushConstantRulesImpl_; +} + +LayoutRulesImpl* CLayoutRulesFamilyImpl::getTextureBufferRules(CompilerOptionSet&) +{ + return &kCLayoutRulesImpl_; +} + +LayoutRulesImpl* CLayoutRulesFamilyImpl::getVaryingInputRules() +{ + return &kCVaryingInputLayoutRulesImpl_; +} +LayoutRulesImpl* CLayoutRulesFamilyImpl::getVaryingOutputRules() +{ + return &kCVaryingOutputLayoutRulesImpl_; +} +LayoutRulesImpl* CLayoutRulesFamilyImpl::getSpecializationConstantRules() +{ + return &kCSpecializationConstantLayoutRulesImpl_; +} +LayoutRulesImpl* CLayoutRulesFamilyImpl::getShaderStorageBufferRules(CompilerOptionSet&) +{ + return &kCLayoutRulesImpl_; +} +LayoutRulesImpl* CLayoutRulesFamilyImpl::getParameterBlockRules(CompilerOptionSet&) +{ + return &kCLayoutRulesImpl_; +} +LayoutRulesImpl* CLayoutRulesFamilyImpl::getRayPayloadParameterRules() +{ + return &kCRayPayloadParameterLayoutRulesImpl_; +} +LayoutRulesImpl* CLayoutRulesFamilyImpl::getCallablePayloadParameterRules() +{ + return &kCCallablePayloadParameterLayoutRulesImpl_; +} +LayoutRulesImpl* CLayoutRulesFamilyImpl::getHitAttributesParameterRules() +{ + return &kCHitAttributesParameterLayoutRulesImpl_; +} +LayoutRulesImpl* CLayoutRulesFamilyImpl::getShaderRecordConstantBufferRules() +{ + return &kCShaderRecordLayoutRulesImpl_; +} + +LayoutRulesImpl* CLayoutRulesFamilyImpl::getStructuredBufferRules(CompilerOptionSet&) +{ + return &kCLayoutRulesImpl_; +} + // CUDA Family LayoutRulesImpl* CUDALayoutRulesFamilyImpl::getAnyValueRules() |
