vkd3d: Use ALLOW_VARYING_SUBGROUP_SIZE flag as appropriate.
Signed-off-by: Hans-Kristian Arntzen <post@arntzen-software.no>
This commit is contained in:
parent
12e0aa2a46
commit
7c80c92304
|
@ -1057,7 +1057,9 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i
|
|||
if (vulkan_info->EXT_subgroup_size_control)
|
||||
{
|
||||
info->subgroup_size_control_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT;
|
||||
info->subgroup_size_control_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT;
|
||||
vk_prepend_struct(&info->properties2, &info->subgroup_size_control_properties);
|
||||
vk_prepend_struct(&info->features2, &info->subgroup_size_control_features);
|
||||
}
|
||||
|
||||
if (vulkan_info->EXT_texel_buffer_alignment)
|
||||
|
|
|
@ -976,6 +976,13 @@ static HRESULT d3d12_state_object_compile_pipeline(struct d3d12_state_object *ob
|
|||
}
|
||||
|
||||
stage->module = create_shader_module(object->device, spirv.code, spirv.size);
|
||||
|
||||
if (spirv.meta.uses_subgroup_size &&
|
||||
object->device->device_info.subgroup_size_control_features.subgroupSizeControl)
|
||||
{
|
||||
stage->flags |= VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT;
|
||||
}
|
||||
|
||||
vkd3d_shader_free_shader_code(&spirv);
|
||||
if (!stage->module)
|
||||
return E_OUTOFMEMORY;
|
||||
|
|
|
@ -2094,6 +2094,9 @@ static HRESULT create_shader_stage(struct d3d12_device *device,
|
|||
shader_desc.pCode = spirv.code;
|
||||
*meta = spirv.meta;
|
||||
|
||||
if (spirv.meta.uses_subgroup_size && device->device_info.subgroup_size_control_features.subgroupSizeControl)
|
||||
stage_desc->flags |= VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT;
|
||||
|
||||
vr = VK_CALL(vkCreateShaderModule(device->vk_device, &shader_desc, NULL, &stage_desc->module));
|
||||
vkd3d_shader_free_shader_code(&spirv);
|
||||
if (vr < 0)
|
||||
|
|
|
@ -2515,6 +2515,7 @@ struct vkd3d_physical_device_info
|
|||
VkPhysicalDeviceAccelerationStructureFeaturesKHR acceleration_structure_features;
|
||||
VkPhysicalDeviceFragmentShadingRateFeaturesKHR fragment_shading_rate_features;
|
||||
VkPhysicalDeviceShaderDrawParametersFeatures shader_draw_parameters_features;
|
||||
VkPhysicalDeviceSubgroupSizeControlFeaturesEXT subgroup_size_control_features;
|
||||
|
||||
VkPhysicalDeviceFeatures2 features2;
|
||||
|
||||
|
|
Loading…
Reference in New Issue