Should there be a rule mandating than when you're compiling with this flag you should also specify `VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_1` as the target environment?
I don't think we need to explicitly enforce this in libvkd3d-shader, but it's probably worth pointing out in the documentation.
I don't think the MR does a great job explaining the issue it addresses, so I spent a bunch of time read through the various specs, but for reference: - Vulkan 1.0 supports SPIR-V 1.0. - Vulkan 1.1 supports SPIR-V 1.0, 1.1, 1.2, and 1.3. - GL_ARB_gl_spirv supports SPIR-V 1.0. - SPIR-V 1.3 doesn't incorporate any of the existing vkd3d_shader_spirv_extension extensions. - There exist extensions like SPV_KHR_shader_ballot that bring some subgroup/wave operations to SPIR-V 1.0, but (AFAIK) not for all of the operations required for D3D shader model 6 wave operations. That requires SPIR-V 1.3 along with the corresponding VkPhysicalDeviceSubgroupProperties features, and by implication Vulkan 1.1.
The implication is that in theory you could set VKD3D_SHADER_COMPILE_OPTION_FEATURE_WAVE_OPS with VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0, but that wouldn't allow translation of sm6 waveops because we wouldn't be able to use SPIR-V 1.3.