Skip to content

Commit ad364c8

Browse files
committed
Advertise VK_KHR_shader_relaxed_extended_instruction
1 parent 313b24c commit ad364c8

File tree

4 files changed

+198
-189
lines changed

4 files changed

+198
-189
lines changed

Docs/MoltenVK_Runtime_UserGuide.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ In addition to core *Vulkan* functionality, **MoltenVK** also supports the foll
280280
- `VK_KHR_shader_float16_int8`
281281
- `VK_KHR_shader_integer_dot_product`
282282
- `VK_KHR_shader_non_semantic_info`
283+
- `VK_KHR_shader_relaxed_extended_instruction`
283284
- `VK_KHR_shader_subgroup_extended_types`
284285
- *Requires Metal 2.1 on Mac or Metal 2.2 and Apple family 4 on iOS.*
285286
- `VK_KHR_shader_subgroup_rotate`

MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,11 @@
536536
shaderExpectAssume->shaderExpectAssume = true;
537537
break;
538538
}
539+
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR: {
540+
auto* shaderRelaxedFeatures = (VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR*)next;
541+
shaderRelaxedFeatures->shaderRelaxedExtendedInstruction = true;
542+
break;
543+
}
539544
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR: {
540545
auto* shaderSGRotateFeatures = (VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR*)next;
541546
shaderSGRotateFeatures->shaderSubgroupRotate = _metalFeatures.simdPermute || _metalFeatures.quadPermute;
@@ -3635,6 +3640,7 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope
36353640
}
36363641
if (!_metalFeatures.simdPermute && !_metalFeatures.quadPermute) {
36373642
pWritableExtns->vk_KHR_shader_subgroup_extended_types.enabled = false;
3643+
pWritableExtns->vk_KHR_shader_subgroup_rotate.enabled = false;
36383644
pWritableExtns->vk_EXT_shader_subgroup_ballot.enabled = false;
36393645
pWritableExtns->vk_EXT_shader_subgroup_vote.enabled = false;
36403646
}

MoltenVK/MoltenVK/GPUObjects/MVKDeviceFeatureStructs.def

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -35,61 +35,62 @@
3535
#pragma push_macro("INTEL")
3636
#undef INTEL
3737

38-
MVK_DEVICE_FEATURE(16BitStorage, 16BIT_STORAGE, 4)
39-
MVK_DEVICE_FEATURE(8BitStorage, 8BIT_STORAGE, 3)
40-
MVK_DEVICE_FEATURE(BufferDeviceAddress, BUFFER_DEVICE_ADDRESS, 3)
41-
MVK_DEVICE_FEATURE(DescriptorIndexing, DESCRIPTOR_INDEXING, 20)
42-
MVK_DEVICE_FEATURE(DynamicRendering, DYNAMIC_RENDERING, 1)
43-
MVK_DEVICE_FEATURE(GlobalPriorityQuery, GLOBAL_PRIORITY_QUERY, 1)
44-
MVK_DEVICE_FEATURE(HostQueryReset, HOST_QUERY_RESET, 1)
45-
MVK_DEVICE_FEATURE(ImagelessFramebuffer, IMAGELESS_FRAMEBUFFER, 1)
46-
MVK_DEVICE_FEATURE(ImageRobustness, IMAGE_ROBUSTNESS, 1)
47-
MVK_DEVICE_FEATURE(IndexTypeUint8, INDEX_TYPE_UINT8, 1)
48-
MVK_DEVICE_FEATURE(InlineUniformBlock, INLINE_UNIFORM_BLOCK, 2)
49-
MVK_DEVICE_FEATURE(Maintenance4, MAINTENANCE_4, 1)
50-
MVK_DEVICE_FEATURE(Multiview, MULTIVIEW, 3)
51-
MVK_DEVICE_FEATURE(PipelineCreationCacheControl, PIPELINE_CREATION_CACHE_CONTROL, 1)
52-
MVK_DEVICE_FEATURE(PrivateData, PRIVATE_DATA, 1)
53-
MVK_DEVICE_FEATURE(ProtectedMemory, PROTECTED_MEMORY, 1)
54-
MVK_DEVICE_FEATURE(SamplerYcbcrConversion, SAMPLER_YCBCR_CONVERSION, 1)
55-
MVK_DEVICE_FEATURE(ScalarBlockLayout, SCALAR_BLOCK_LAYOUT, 1)
56-
MVK_DEVICE_FEATURE(SeparateDepthStencilLayouts, SEPARATE_DEPTH_STENCIL_LAYOUTS, 1)
57-
MVK_DEVICE_FEATURE(ShaderDemoteToHelperInvocation, SHADER_DEMOTE_TO_HELPER_INVOCATION, 1)
58-
MVK_DEVICE_FEATURE(ShaderDrawParameters, SHADER_DRAW_PARAMETERS, 1)
59-
MVK_DEVICE_FEATURE(ShaderAtomicInt64, SHADER_ATOMIC_INT64, 2)
60-
MVK_DEVICE_FEATURE(ShaderFloat16Int8, SHADER_FLOAT16_INT8, 2)
61-
MVK_DEVICE_FEATURE(ShaderIntegerDotProduct, SHADER_INTEGER_DOT_PRODUCT, 1)
62-
MVK_DEVICE_FEATURE(ShaderSubgroupExtendedTypes, SHADER_SUBGROUP_EXTENDED_TYPES, 1)
63-
MVK_DEVICE_FEATURE(ShaderTerminateInvocation, SHADER_TERMINATE_INVOCATION, 1)
64-
MVK_DEVICE_FEATURE(SubgroupSizeControl, SUBGROUP_SIZE_CONTROL, 2)
65-
MVK_DEVICE_FEATURE(Synchronization2, SYNCHRONIZATION_2, 1)
66-
MVK_DEVICE_FEATURE(TextureCompressionASTCHDR, TEXTURE_COMPRESSION_ASTC_HDR, 1)
67-
MVK_DEVICE_FEATURE(TimelineSemaphore, TIMELINE_SEMAPHORE, 1)
68-
MVK_DEVICE_FEATURE(UniformBufferStandardLayout, UNIFORM_BUFFER_STANDARD_LAYOUT, 1)
69-
MVK_DEVICE_FEATURE(VariablePointer, VARIABLE_POINTER, 2)
70-
MVK_DEVICE_FEATURE(VulkanMemoryModel, VULKAN_MEMORY_MODEL, 3)
71-
MVK_DEVICE_FEATURE(ZeroInitializeWorkgroupMemory, ZERO_INITIALIZE_WORKGROUP_MEMORY, 1)
72-
MVK_DEVICE_FEATURE_EXTN(FragmentShaderBarycentric, FRAGMENT_SHADER_BARYCENTRIC, KHR, 1)
73-
MVK_DEVICE_FEATURE_EXTN(Maintenance6, MAINTENANCE_6, KHR, 1)
74-
MVK_DEVICE_FEATURE_EXTN(Maintenance7, MAINTENANCE_7, KHR, 1)
75-
MVK_DEVICE_FEATURE_EXTN(PortabilitySubset, PORTABILITY_SUBSET, KHR, 15)
76-
MVK_DEVICE_FEATURE_EXTN(ShaderExpectAssume, SHADER_EXPECT_ASSUME, KHR, 1)
77-
MVK_DEVICE_FEATURE_EXTN(ShaderSubgroupRotate, SHADER_SUBGROUP_ROTATE, KHR, 2)
78-
MVK_DEVICE_FEATURE_EXTN(4444Formats, 4444_FORMATS, EXT, 2)
79-
MVK_DEVICE_FEATURE_EXTN(DepthClipControl, DEPTH_CLIP_CONTROL, EXT, 1)
80-
MVK_DEVICE_FEATURE_EXTN(ExtendedDynamicState, EXTENDED_DYNAMIC_STATE, EXT, 1)
81-
MVK_DEVICE_FEATURE_EXTN(ExtendedDynamicState2, EXTENDED_DYNAMIC_STATE_2, EXT, 3)
82-
MVK_DEVICE_FEATURE_EXTN(ExtendedDynamicState3, EXTENDED_DYNAMIC_STATE_3, EXT, 31)
83-
MVK_DEVICE_FEATURE_EXTN(FragmentShaderInterlock, FRAGMENT_SHADER_INTERLOCK, EXT, 3)
84-
MVK_DEVICE_FEATURE_EXTN(HostImageCopy, HOST_IMAGE_COPY, EXT, 1)
85-
MVK_DEVICE_FEATURE_EXTN(Image2DViewOf3D, IMAGE_2D_VIEW_OF_3D, EXT, 2)
86-
MVK_DEVICE_FEATURE_EXTN(PipelineRobustness, PIPELINE_ROBUSTNESS, EXT, 1)
87-
MVK_DEVICE_FEATURE_EXTN(Robustness2, ROBUSTNESS_2, EXT, 3)
88-
MVK_DEVICE_FEATURE_EXTN(ShaderAtomicFloat, SHADER_ATOMIC_FLOAT, EXT, 12)
89-
MVK_DEVICE_FEATURE_EXTN(SwapchainMaintenance1, SWAPCHAIN_MAINTENANCE_1, EXT, 1)
90-
MVK_DEVICE_FEATURE_EXTN(TexelBufferAlignment, TEXEL_BUFFER_ALIGNMENT, EXT, 1)
91-
MVK_DEVICE_FEATURE_EXTN(VertexAttributeDivisor, VERTEX_ATTRIBUTE_DIVISOR, EXT, 2)
92-
MVK_DEVICE_FEATURE_EXTN(ShaderIntegerFunctions2, SHADER_INTEGER_FUNCTIONS_2, INTEL, 1)
38+
MVK_DEVICE_FEATURE(16BitStorage, 16BIT_STORAGE, 4)
39+
MVK_DEVICE_FEATURE(8BitStorage, 8BIT_STORAGE, 3)
40+
MVK_DEVICE_FEATURE(BufferDeviceAddress, BUFFER_DEVICE_ADDRESS, 3)
41+
MVK_DEVICE_FEATURE(DescriptorIndexing, DESCRIPTOR_INDEXING, 20)
42+
MVK_DEVICE_FEATURE(DynamicRendering, DYNAMIC_RENDERING, 1)
43+
MVK_DEVICE_FEATURE(GlobalPriorityQuery, GLOBAL_PRIORITY_QUERY, 1)
44+
MVK_DEVICE_FEATURE(HostQueryReset, HOST_QUERY_RESET, 1)
45+
MVK_DEVICE_FEATURE(ImagelessFramebuffer, IMAGELESS_FRAMEBUFFER, 1)
46+
MVK_DEVICE_FEATURE(ImageRobustness, IMAGE_ROBUSTNESS, 1)
47+
MVK_DEVICE_FEATURE(IndexTypeUint8, INDEX_TYPE_UINT8, 1)
48+
MVK_DEVICE_FEATURE(InlineUniformBlock, INLINE_UNIFORM_BLOCK, 2)
49+
MVK_DEVICE_FEATURE(Maintenance4, MAINTENANCE_4, 1)
50+
MVK_DEVICE_FEATURE(Multiview, MULTIVIEW, 3)
51+
MVK_DEVICE_FEATURE(PipelineCreationCacheControl, PIPELINE_CREATION_CACHE_CONTROL, 1)
52+
MVK_DEVICE_FEATURE(PrivateData, PRIVATE_DATA, 1)
53+
MVK_DEVICE_FEATURE(ProtectedMemory, PROTECTED_MEMORY, 1)
54+
MVK_DEVICE_FEATURE(SamplerYcbcrConversion, SAMPLER_YCBCR_CONVERSION, 1)
55+
MVK_DEVICE_FEATURE(ScalarBlockLayout, SCALAR_BLOCK_LAYOUT, 1)
56+
MVK_DEVICE_FEATURE(SeparateDepthStencilLayouts, SEPARATE_DEPTH_STENCIL_LAYOUTS, 1)
57+
MVK_DEVICE_FEATURE(ShaderDemoteToHelperInvocation, SHADER_DEMOTE_TO_HELPER_INVOCATION, 1)
58+
MVK_DEVICE_FEATURE(ShaderDrawParameters, SHADER_DRAW_PARAMETERS, 1)
59+
MVK_DEVICE_FEATURE(ShaderAtomicInt64, SHADER_ATOMIC_INT64, 2)
60+
MVK_DEVICE_FEATURE(ShaderFloat16Int8, SHADER_FLOAT16_INT8, 2)
61+
MVK_DEVICE_FEATURE(ShaderIntegerDotProduct, SHADER_INTEGER_DOT_PRODUCT, 1)
62+
MVK_DEVICE_FEATURE(ShaderSubgroupExtendedTypes, SHADER_SUBGROUP_EXTENDED_TYPES, 1)
63+
MVK_DEVICE_FEATURE(ShaderTerminateInvocation, SHADER_TERMINATE_INVOCATION, 1)
64+
MVK_DEVICE_FEATURE(SubgroupSizeControl, SUBGROUP_SIZE_CONTROL, 2)
65+
MVK_DEVICE_FEATURE(Synchronization2, SYNCHRONIZATION_2, 1)
66+
MVK_DEVICE_FEATURE(TextureCompressionASTCHDR, TEXTURE_COMPRESSION_ASTC_HDR, 1)
67+
MVK_DEVICE_FEATURE(TimelineSemaphore, TIMELINE_SEMAPHORE, 1)
68+
MVK_DEVICE_FEATURE(UniformBufferStandardLayout, UNIFORM_BUFFER_STANDARD_LAYOUT, 1)
69+
MVK_DEVICE_FEATURE(VariablePointer, VARIABLE_POINTER, 2)
70+
MVK_DEVICE_FEATURE(VulkanMemoryModel, VULKAN_MEMORY_MODEL, 3)
71+
MVK_DEVICE_FEATURE(ZeroInitializeWorkgroupMemory, ZERO_INITIALIZE_WORKGROUP_MEMORY, 1)
72+
MVK_DEVICE_FEATURE_EXTN(FragmentShaderBarycentric, FRAGMENT_SHADER_BARYCENTRIC, KHR, 1)
73+
MVK_DEVICE_FEATURE_EXTN(Maintenance6, MAINTENANCE_6, KHR, 1)
74+
MVK_DEVICE_FEATURE_EXTN(Maintenance7, MAINTENANCE_7, KHR, 1)
75+
MVK_DEVICE_FEATURE_EXTN(PortabilitySubset, PORTABILITY_SUBSET, KHR, 15)
76+
MVK_DEVICE_FEATURE_EXTN(ShaderExpectAssume, SHADER_EXPECT_ASSUME, KHR, 1)
77+
MVK_DEVICE_FEATURE_EXTN(ShaderRelaxedExtendedInstruction, SHADER_RELAXED_EXTENDED_INSTRUCTION, KHR, 1)
78+
MVK_DEVICE_FEATURE_EXTN(ShaderSubgroupRotate, SHADER_SUBGROUP_ROTATE, KHR, 2)
79+
MVK_DEVICE_FEATURE_EXTN(4444Formats, 4444_FORMATS, EXT, 2)
80+
MVK_DEVICE_FEATURE_EXTN(DepthClipControl, DEPTH_CLIP_CONTROL, EXT, 1)
81+
MVK_DEVICE_FEATURE_EXTN(ExtendedDynamicState, EXTENDED_DYNAMIC_STATE, EXT, 1)
82+
MVK_DEVICE_FEATURE_EXTN(ExtendedDynamicState2, EXTENDED_DYNAMIC_STATE_2, EXT, 3)
83+
MVK_DEVICE_FEATURE_EXTN(ExtendedDynamicState3, EXTENDED_DYNAMIC_STATE_3, EXT, 31)
84+
MVK_DEVICE_FEATURE_EXTN(FragmentShaderInterlock, FRAGMENT_SHADER_INTERLOCK, EXT, 3)
85+
MVK_DEVICE_FEATURE_EXTN(HostImageCopy, HOST_IMAGE_COPY, EXT, 1)
86+
MVK_DEVICE_FEATURE_EXTN(Image2DViewOf3D, IMAGE_2D_VIEW_OF_3D, EXT, 2)
87+
MVK_DEVICE_FEATURE_EXTN(PipelineRobustness, PIPELINE_ROBUSTNESS, EXT, 1)
88+
MVK_DEVICE_FEATURE_EXTN(Robustness2, ROBUSTNESS_2, EXT, 3)
89+
MVK_DEVICE_FEATURE_EXTN(ShaderAtomicFloat, SHADER_ATOMIC_FLOAT, EXT, 12)
90+
MVK_DEVICE_FEATURE_EXTN(SwapchainMaintenance1, SWAPCHAIN_MAINTENANCE_1, EXT, 1)
91+
MVK_DEVICE_FEATURE_EXTN(TexelBufferAlignment, TEXEL_BUFFER_ALIGNMENT, EXT, 1)
92+
MVK_DEVICE_FEATURE_EXTN(VertexAttributeDivisor, VERTEX_ATTRIBUTE_DIVISOR, EXT, 2)
93+
MVK_DEVICE_FEATURE_EXTN(ShaderIntegerFunctions2, SHADER_INTEGER_FUNCTIONS_2, INTEL, 1)
9394

9495
#pragma pop_macro("INTEL")
9596
#undef MVK_DEVICE_FEATURE_EXTN

0 commit comments

Comments
 (0)