diff options
| author | Yong He <yonghe@outlook.com> | 2023-08-25 08:49:02 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-25 23:49:02 +0800 |
| commit | 036abc85ba1db9c8c06289f0a0492e9a95a228b9 (patch) | |
| tree | e497168c36e95190a6d8b4dae9f483f27e5aa2cd /source/slang/slang-lookup-spvcapability.cpp | |
| parent | 0470ea05a42d6c3f35d81a433fefdd440500cdbd (diff) | |
Support SPIRV Capability declaration on intrinsic functions. (#3150)
* Spirv Capability lookup.
* Fix.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-lookup-spvcapability.cpp')
| -rw-r--r-- | source/slang/slang-lookup-spvcapability.cpp | 303 |
1 files changed, 303 insertions, 0 deletions
diff --git a/source/slang/slang-lookup-spvcapability.cpp b/source/slang/slang-lookup-spvcapability.cpp new file mode 100644 index 000000000..5e7e18037 --- /dev/null +++ b/source/slang/slang-lookup-spvcapability.cpp @@ -0,0 +1,303 @@ +// Hash function for SpvCapability +// +// This file was thoughtfully generated by a machine, +// don't even think about modifying it yourself! +// + +#include "../core/slang-common.h" +#include "../core/slang-string.h" +#include "spirv/unified1/spirv.h" + + +namespace Slang +{ + +static const unsigned tableSalt[238] ={ + 4, 1, 0, 0, 0, 5, 1, 1, 1, 1, 0, 3, 4, 1, 0, 0, + 1, 6, 0, 1, 4, 0, 0, 1, 5, 0, 0, 1, 2, 0, 2, 2, + 0, 0, 0, 2, 3, 3, 7, 3, 0, 4, 0, 4, 5, 3, 1, 2, + 0, 6, 1, 4, 2, 1, 0, 1, 7, 3, 0, 0, 0, 1, 2, 2, + 0, 4, 1, 1, 5, 2, 0, 0, 1, 6, 4, 1, 0, 5, 1, 0, + 7, 1, 1, 2, 2, 1, 1, 0, 4, 0, 0, 2, 0, 4, 10, 0, + 0, 0, 1, 0, 4, 3, 1, 0, 0, 1, 4, 6, 2, 5, 1, 1, + 0, 3, 1, 4, 3, 1, 0, 2, 1, 0, 0, 0, 1, 1, 3, 3, + 9, 0, 0, 0, 0, 2, 5, 0, 0, 8, 0, 12, 0, 0, 0, 5, + 5, 4, 2, 1, 6, 1, 0, 0, 20, 3, 7, 1, 13, 0, 4, 14, + 5, 2, 0, 5, 0, 8, 3, 0, 1, 2, 1, 0, 3, 0, 18, 5, + 8, 0, 10, 0, 14, 0, 3, 0, 0, 0, 13, 0, 0, 2, 24, 6, + 4, 0, 3, 0, 1, 0, 0, 7, 4, 0, 0, 5, 2, 0, 35, 6, + 0, 0, 2, 5, 6, 34, 32, 29, 0, 10, 7, 0, 90, 0, 3, 36, + 73, 39, 193, 0, 1, 1, 0, 83, 8, 0, 0, 712, 2, 0 +}; + +struct KV +{ + const char* name; + SpvCapability value; +}; + +static const KV words[238] = +{ + {"ShaderViewportIndex", SpvCapabilityShaderViewportIndex}, + {"FragmentBarycentricNV", SpvCapabilityFragmentBarycentricNV}, + {"StorageImageWriteWithoutFormat", SpvCapabilityStorageImageWriteWithoutFormat}, + {"RayTracingMotionBlurNV", SpvCapabilityRayTracingMotionBlurNV}, + {"StorageImageArrayNonUniformIndexingEXT", SpvCapabilityStorageImageArrayNonUniformIndexingEXT}, + {"UnstructuredLoopControlsINTEL", SpvCapabilityUnstructuredLoopControlsINTEL}, + {"BlockingPipesINTEL", SpvCapabilityBlockingPipesINTEL}, + {"Image1D", SpvCapabilityImage1D}, + {"LiteralSampler", SpvCapabilityLiteralSampler}, + {"SubgroupAvcMotionEstimationINTEL", SpvCapabilitySubgroupAvcMotionEstimationINTEL}, + {"GroupNonUniformQuad", SpvCapabilityGroupNonUniformQuad}, + {"FunctionPointersINTEL", SpvCapabilityFunctionPointersINTEL}, + {"UniformTexelBufferArrayNonUniformIndexing", SpvCapabilityUniformTexelBufferArrayNonUniformIndexing}, + {"RayCullMaskKHR", SpvCapabilityRayCullMaskKHR}, + {"CoreBuiltinsARM", SpvCapabilityCoreBuiltinsARM}, + {"USMStorageClassesINTEL", SpvCapabilityUSMStorageClassesINTEL}, + {"ArbitraryPrecisionIntegersINTEL", SpvCapabilityArbitraryPrecisionIntegersINTEL}, + {"IOPipesINTEL", SpvCapabilityIOPipesINTEL}, + {"MultiView", SpvCapabilityMultiView}, + {"RayTracingNV", SpvCapabilityRayTracingNV}, + {"OptNoneINTEL", SpvCapabilityOptNoneINTEL}, + {"SubgroupBufferBlockIOINTEL", SpvCapabilitySubgroupBufferBlockIOINTEL}, + {"TessellationPointSize", SpvCapabilityTessellationPointSize}, + {"Vector16", SpvCapabilityVector16}, + {"RayQueryPositionFetchKHR", SpvCapabilityRayQueryPositionFetchKHR}, + {"GenericPointer", SpvCapabilityGenericPointer}, + {"UniformBufferArrayDynamicIndexing", SpvCapabilityUniformBufferArrayDynamicIndexing}, + {"ImageMSArray", SpvCapabilityImageMSArray}, + {"AtomicStorageOps", SpvCapabilityAtomicStorageOps}, + {"DotProductInputAll", SpvCapabilityDotProductInputAll}, + {"InputAttachmentArrayNonUniformIndexing", SpvCapabilityInputAttachmentArrayNonUniformIndexing}, + {"AsmINTEL", SpvCapabilityAsmINTEL}, + {"DotProductInput4x8BitPackedKHR", SpvCapabilityDotProductInput4x8BitPackedKHR}, + {"StorageTexelBufferArrayNonUniformIndexing", SpvCapabilityStorageTexelBufferArrayNonUniformIndexing}, + {"FPGADSPControlINTEL", SpvCapabilityFPGADSPControlINTEL}, + {"DotProduct", SpvCapabilityDotProduct}, + {"StorageImageMultisample", SpvCapabilityStorageImageMultisample}, + {"StorageTexelBufferArrayDynamicIndexingEXT", SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT}, + {"SampledImageArrayDynamicIndexing", SpvCapabilitySampledImageArrayDynamicIndexing}, + {"VulkanMemoryModelDeviceScopeKHR", SpvCapabilityVulkanMemoryModelDeviceScopeKHR}, + {"ShadingRateNV", SpvCapabilityShadingRateNV}, + {"DotProductInput4x8BitKHR", SpvCapabilityDotProductInput4x8BitKHR}, + {"ShaderNonUniformEXT", SpvCapabilityShaderNonUniformEXT}, + {"ShaderStereoViewNV", SpvCapabilityShaderStereoViewNV}, + {"UniformAndStorageBuffer16BitAccess", SpvCapabilityUniformAndStorageBuffer16BitAccess}, + {"RoundingModeRTE", SpvCapabilityRoundingModeRTE}, + {"TileImageColorReadAccessEXT", SpvCapabilityTileImageColorReadAccessEXT}, + {"TileImageDepthReadAccessEXT", SpvCapabilityTileImageDepthReadAccessEXT}, + {"PerViewAttributesNV", SpvCapabilityPerViewAttributesNV}, + {"DemoteToHelperInvocationEXT", SpvCapabilityDemoteToHelperInvocationEXT}, + {"AtomicFloat16MinMaxEXT", SpvCapabilityAtomicFloat16MinMaxEXT}, + {"GroupNonUniformArithmetic", SpvCapabilityGroupNonUniformArithmetic}, + {"ShaderLayer", SpvCapabilityShaderLayer}, + {"VariableLengthArrayINTEL", SpvCapabilityVariableLengthArrayINTEL}, + {"ImageReadWriteLodAMD", SpvCapabilityImageReadWriteLodAMD}, + {"ImageCubeArray", SpvCapabilityImageCubeArray}, + {"Float16Buffer", SpvCapabilityFloat16Buffer}, + {"VulkanMemoryModelDeviceScope", SpvCapabilityVulkanMemoryModelDeviceScope}, + {"ImageRect", SpvCapabilityImageRect}, + {"UniformDecoration", SpvCapabilityUniformDecoration}, + {"AtomicFloat64AddEXT", SpvCapabilityAtomicFloat64AddEXT}, + {"VectorComputeINTEL", SpvCapabilityVectorComputeINTEL}, + {"Float16", SpvCapabilityFloat16}, + {"DeviceEnqueue", SpvCapabilityDeviceEnqueue}, + {"MinLod", SpvCapabilityMinLod}, + {"Float16ImageAMD", SpvCapabilityFloat16ImageAMD}, + {"SubgroupImageMediaBlockIOINTEL", SpvCapabilitySubgroupImageMediaBlockIOINTEL}, + {"SparseResidency", SpvCapabilitySparseResidency}, + {"UniformTexelBufferArrayDynamicIndexing", SpvCapabilityUniformTexelBufferArrayDynamicIndexing}, + {"Pipes", SpvCapabilityPipes}, + {"InputAttachment", SpvCapabilityInputAttachment}, + {"FPGAMemoryAttributesINTEL", SpvCapabilityFPGAMemoryAttributesINTEL}, + {"RuntimeDescriptorArrayEXT", SpvCapabilityRuntimeDescriptorArrayEXT}, + {"GeometryPointSize", SpvCapabilityGeometryPointSize}, + {"Shader", SpvCapabilityShader}, + {"IntegerFunctions2INTEL", SpvCapabilityIntegerFunctions2INTEL}, + {"StorageImageArrayDynamicIndexing", SpvCapabilityStorageImageArrayDynamicIndexing}, + {"Int64Atomics", SpvCapabilityInt64Atomics}, + {"ImageFootprintNV", SpvCapabilityImageFootprintNV}, + {"IndirectReferencesINTEL", SpvCapabilityIndirectReferencesINTEL}, + {"ShaderSMBuiltinsNV", SpvCapabilityShaderSMBuiltinsNV}, + {"StoragePushConstant8", SpvCapabilityStoragePushConstant8}, + {"FPGAKernelAttributesINTEL", SpvCapabilityFPGAKernelAttributesINTEL}, + {"ImageBuffer", SpvCapabilityImageBuffer}, + {"ImageReadWrite", SpvCapabilityImageReadWrite}, + {"AtomicStorage", SpvCapabilityAtomicStorage}, + {"SignedZeroInfNanPreserve", SpvCapabilitySignedZeroInfNanPreserve}, + {"Groups", SpvCapabilityGroups}, + {"DebugInfoModuleINTEL", SpvCapabilityDebugInfoModuleINTEL}, + {"GroupUniformArithmeticKHR", SpvCapabilityGroupUniformArithmeticKHR}, + {"Int16", SpvCapabilityInt16}, + {"DenormFlushToZero", SpvCapabilityDenormFlushToZero}, + {"TransformFeedback", SpvCapabilityTransformFeedback}, + {"StencilExportEXT", SpvCapabilityStencilExportEXT}, + {"InputAttachmentArrayNonUniformIndexingEXT", SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT}, + {"DotProductKHR", SpvCapabilityDotProductKHR}, + {"FPGABufferLocationINTEL", SpvCapabilityFPGABufferLocationINTEL}, + {"DotProductInput4x8Bit", SpvCapabilityDotProductInput4x8Bit}, + {"ShaderInvocationReorderNV", SpvCapabilityShaderInvocationReorderNV}, + {"ImageMipmap", SpvCapabilityImageMipmap}, + {"FunctionFloatControlINTEL", SpvCapabilityFunctionFloatControlINTEL}, + {"AtomicFloat16AddEXT", SpvCapabilityAtomicFloat16AddEXT}, + {"RayQueryProvisionalKHR", SpvCapabilityRayQueryProvisionalKHR}, + {"GroupNonUniformVote", SpvCapabilityGroupNonUniformVote}, + {"StorageTexelBufferArrayNonUniformIndexingEXT", SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT}, + {"ArbitraryPrecisionFloatingPointINTEL", SpvCapabilityArbitraryPrecisionFloatingPointINTEL}, + {"StorageInputOutput16", SpvCapabilityStorageInputOutput16}, + {"SampledImageArrayNonUniformIndexing", SpvCapabilitySampledImageArrayNonUniformIndexing}, + {"SubgroupVoteKHR", SpvCapabilitySubgroupVoteKHR}, + {"Tessellation", SpvCapabilityTessellation}, + {"Geometry", SpvCapabilityGeometry}, + {"SubgroupAvcMotionEstimationChromaINTEL", SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL}, + {"StorageImageReadWithoutFormat", SpvCapabilityStorageImageReadWithoutFormat}, + {"Int64", SpvCapabilityInt64}, + {"DemoteToHelperInvocation", SpvCapabilityDemoteToHelperInvocation}, + {"MeshShadingEXT", SpvCapabilityMeshShadingEXT}, + {"UniformAndStorageBuffer8BitAccess", SpvCapabilityUniformAndStorageBuffer8BitAccess}, + {"RayTracingProvisionalKHR", SpvCapabilityRayTracingProvisionalKHR}, + {"UniformBufferArrayNonUniformIndexing", SpvCapabilityUniformBufferArrayNonUniformIndexing}, + {"VulkanMemoryModelKHR", SpvCapabilityVulkanMemoryModelKHR}, + {"SubgroupShuffleINTEL", SpvCapabilitySubgroupShuffleINTEL}, + {"SubgroupDispatch", SpvCapabilitySubgroupDispatch}, + {"MemoryAccessAliasingINTEL", SpvCapabilityMemoryAccessAliasingINTEL}, + {"StorageBuffer16BitAccess", SpvCapabilityStorageBuffer16BitAccess}, + {"RuntimeDescriptorArray", SpvCapabilityRuntimeDescriptorArray}, + {"StorageImageArrayNonUniformIndexing", SpvCapabilityStorageImageArrayNonUniformIndexing}, + {"Kernel", SpvCapabilityKernel}, + {"BitInstructions", SpvCapabilityBitInstructions}, + {"WorkgroupMemoryExplicitLayout8BitAccessKHR", SpvCapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR}, + {"Sampled1D", SpvCapabilitySampled1D}, + {"StorageTexelBufferArrayDynamicIndexing", SpvCapabilityStorageTexelBufferArrayDynamicIndexing}, + {"ImageQuery", SpvCapabilityImageQuery}, + {"MultiViewport", SpvCapabilityMultiViewport}, + {"UniformTexelBufferArrayDynamicIndexingEXT", SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT}, + {"StorageUniform16", SpvCapabilityStorageUniform16}, + {"SubgroupImageBlockIOINTEL", SpvCapabilitySubgroupImageBlockIOINTEL}, + {"WorkgroupMemoryExplicitLayout16BitAccessKHR", SpvCapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR}, + {"KernelAttributesINTEL", SpvCapabilityKernelAttributesINTEL}, + {"PipeStorage", SpvCapabilityPipeStorage}, + {"ShaderViewportMaskNV", SpvCapabilityShaderViewportMaskNV}, + {"Matrix", SpvCapabilityMatrix}, + {"GroupNonUniformShuffleRelative", SpvCapabilityGroupNonUniformShuffleRelative}, + {"RuntimeAlignedAttributeINTEL", SpvCapabilityRuntimeAlignedAttributeINTEL}, + {"CullDistance", SpvCapabilityCullDistance}, + {"Int8", SpvCapabilityInt8}, + {"RayTraversalPrimitiveCullingKHR", SpvCapabilityRayTraversalPrimitiveCullingKHR}, + {"SampleMaskPostDepthCoverage", SpvCapabilitySampleMaskPostDepthCoverage}, + {"GroupNonUniformShuffle", SpvCapabilityGroupNonUniformShuffle}, + {"ImageBasic", SpvCapabilityImageBasic}, + {"WorkgroupMemoryExplicitLayoutKHR", SpvCapabilityWorkgroupMemoryExplicitLayoutKHR}, + {"FPGAClusterAttributesINTEL", SpvCapabilityFPGAClusterAttributesINTEL}, + {"PhysicalStorageBufferAddresses", SpvCapabilityPhysicalStorageBufferAddresses}, + {"UniformTexelBufferArrayNonUniformIndexingEXT", SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT}, + {"StorageBufferArrayNonUniformIndexingEXT", SpvCapabilityStorageBufferArrayNonUniformIndexingEXT}, + {"FragmentShaderSampleInterlockEXT", SpvCapabilityFragmentShaderSampleInterlockEXT}, + {"SampledImageArrayNonUniformIndexingEXT", SpvCapabilitySampledImageArrayNonUniformIndexingEXT}, + {"InterpolationFunction", SpvCapabilityInterpolationFunction}, + {"AtomicFloat32AddEXT", SpvCapabilityAtomicFloat32AddEXT}, + {"Int64ImageEXT", SpvCapabilityInt64ImageEXT}, + {"SubgroupBallotKHR", SpvCapabilitySubgroupBallotKHR}, + {"RoundToInfinityINTEL", SpvCapabilityRoundToInfinityINTEL}, + {"DrawParameters", SpvCapabilityDrawParameters}, + {"VariablePointers", SpvCapabilityVariablePointers}, + {"FragmentShaderShadingRateInterlockEXT", SpvCapabilityFragmentShaderShadingRateInterlockEXT}, + {"NamedBarrier", SpvCapabilityNamedBarrier}, + {"ComputeDerivativeGroupQuadsNV", SpvCapabilityComputeDerivativeGroupQuadsNV}, + {"SampledCubeArray", SpvCapabilitySampledCubeArray}, + {"Addresses", SpvCapabilityAddresses}, + {"LongConstantCompositeINTEL", SpvCapabilityLongConstantCompositeINTEL}, + {"ArbitraryPrecisionFixedPointINTEL", SpvCapabilityArbitraryPrecisionFixedPointINTEL}, + {"RayTracingKHR", SpvCapabilityRayTracingKHR}, + {"RayQueryKHR", SpvCapabilityRayQueryKHR}, + {"FragmentDensityEXT", SpvCapabilityFragmentDensityEXT}, + {"InputAttachmentArrayDynamicIndexingEXT", SpvCapabilityInputAttachmentArrayDynamicIndexingEXT}, + {"FPGAInvocationPipeliningAttributesINTEL", SpvCapabilityFPGAInvocationPipeliningAttributesINTEL}, + {"ShaderViewportIndexLayerEXT", SpvCapabilityShaderViewportIndexLayerEXT}, + {"PhysicalStorageBufferAddressesEXT", SpvCapabilityPhysicalStorageBufferAddressesEXT}, + {"SplitBarrierINTEL", SpvCapabilitySplitBarrierINTEL}, + {"ImageGatherExtended", SpvCapabilityImageGatherExtended}, + {"CooperativeMatrixNV", SpvCapabilityCooperativeMatrixNV}, + {"FloatingPointModeINTEL", SpvCapabilityFloatingPointModeINTEL}, + {"SubgroupAvcMotionEstimationIntraINTEL", SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL}, + {"DotProductInputAllKHR", SpvCapabilityDotProductInputAllKHR}, + {"AtomicFloat64MinMaxEXT", SpvCapabilityAtomicFloat64MinMaxEXT}, + {"DeviceGroup", SpvCapabilityDeviceGroup}, + {"RayTracingOpacityMicromapEXT", SpvCapabilityRayTracingOpacityMicromapEXT}, + {"GroupNonUniform", SpvCapabilityGroupNonUniform}, + {"BindlessTextureNV", SpvCapabilityBindlessTextureNV}, + {"GeometryShaderPassthroughNV", SpvCapabilityGeometryShaderPassthroughNV}, + {"FragmentFullyCoveredEXT", SpvCapabilityFragmentFullyCoveredEXT}, + {"ShaderNonUniform", SpvCapabilityShaderNonUniform}, + {"DotProductInput4x8BitPacked", SpvCapabilityDotProductInput4x8BitPacked}, + {"ShaderViewportIndexLayerNV", SpvCapabilityShaderViewportIndexLayerNV}, + {"RayTracingPositionFetchKHR", SpvCapabilityRayTracingPositionFetchKHR}, + {"VectorAnyINTEL", SpvCapabilityVectorAnyINTEL}, + {"FPFastMathModeINTEL", SpvCapabilityFPFastMathModeINTEL}, + {"AtomicFloat32MinMaxEXT", SpvCapabilityAtomicFloat32MinMaxEXT}, + {"SampleMaskOverrideCoverageNV", SpvCapabilitySampleMaskOverrideCoverageNV}, + {"FragmentShadingRateKHR", SpvCapabilityFragmentShadingRateKHR}, + {"GroupNonUniformPartitionedNV", SpvCapabilityGroupNonUniformPartitionedNV}, + {"StorageBufferArrayNonUniformIndexing", SpvCapabilityStorageBufferArrayNonUniformIndexing}, + {"ExpectAssumeKHR", SpvCapabilityExpectAssumeKHR}, + {"FPGAMemoryAccessesINTEL", SpvCapabilityFPGAMemoryAccessesINTEL}, + {"StorageImageExtendedFormats", SpvCapabilityStorageImageExtendedFormats}, + {"FPGAArgumentInterfacesINTEL", SpvCapabilityFPGAArgumentInterfacesINTEL}, + {"SampleRateShading", SpvCapabilitySampleRateShading}, + {"VariablePointersStorageBuffer", SpvCapabilityVariablePointersStorageBuffer}, + {"StoragePushConstant16", SpvCapabilityStoragePushConstant16}, + {"GeometryStreams", SpvCapabilityGeometryStreams}, + {"FPGARegINTEL", SpvCapabilityFPGARegINTEL}, + {"LoopFuseINTEL", SpvCapabilityLoopFuseINTEL}, + {"Linkage", SpvCapabilityLinkage}, + {"ComputeDerivativeGroupLinearNV", SpvCapabilityComputeDerivativeGroupLinearNV}, + {"DerivativeControl", SpvCapabilityDerivativeControl}, + {"StorageBufferArrayDynamicIndexing", SpvCapabilityStorageBufferArrayDynamicIndexing}, + {"SampledBuffer", SpvCapabilitySampledBuffer}, + {"StorageBuffer8BitAccess", SpvCapabilityStorageBuffer8BitAccess}, + {"FragmentBarycentricKHR", SpvCapabilityFragmentBarycentricKHR}, + {"GroupNonUniformClustered", SpvCapabilityGroupNonUniformClustered}, + {"MeshShadingNV", SpvCapabilityMeshShadingNV}, + {"RoundingModeRTZ", SpvCapabilityRoundingModeRTZ}, + {"StorageUniformBufferBlock16", SpvCapabilityStorageUniformBufferBlock16}, + {"DenormPreserve", SpvCapabilityDenormPreserve}, + {"FragmentShaderPixelInterlockEXT", SpvCapabilityFragmentShaderPixelInterlockEXT}, + {"Max", SpvCapabilityMax}, + {"GroupNonUniformBallot", SpvCapabilityGroupNonUniformBallot}, + {"InputAttachmentArrayDynamicIndexing", SpvCapabilityInputAttachmentArrayDynamicIndexing}, + {"GroupNonUniformRotateKHR", SpvCapabilityGroupNonUniformRotateKHR}, + {"ClipDistance", SpvCapabilityClipDistance}, + {"ShaderClockKHR", SpvCapabilityShaderClockKHR}, + {"FragmentMaskAMD", SpvCapabilityFragmentMaskAMD}, + {"FPGALoopControlsINTEL", SpvCapabilityFPGALoopControlsINTEL}, + {"Float64", SpvCapabilityFloat64}, + {"TileImageStencilReadAccessEXT", SpvCapabilityTileImageStencilReadAccessEXT}, + {"UniformBufferArrayNonUniformIndexingEXT", SpvCapabilityUniformBufferArrayNonUniformIndexingEXT}, + {"ImageGatherBiasLodAMD", SpvCapabilityImageGatherBiasLodAMD}, + {"SampledRect", SpvCapabilitySampledRect}, + {"VulkanMemoryModel", SpvCapabilityVulkanMemoryModel}, +}; + +static UInt32 hash(const UnownedStringSlice& str, UInt32 salt) +{ + UInt64 h = salt; + for(const char c : str) + h = ((h * 0x00000100000001B3) ^ c); + return h % (sizeof(tableSalt)/sizeof(tableSalt[0])); +} + +bool lookupSpvCapability(const UnownedStringSlice& str, SpvCapability& value) +{ + const auto i = hash(str, tableSalt[hash(str, 0)]); + if(str == words[i].name) + { + value = words[i].value; + return true; + } + else + { + return false; + } +} + +} |
