From: Conor McCarthy cmccarthy@codeweavers.com
--- libs/vkd3d/state.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/libs/vkd3d/state.c b/libs/vkd3d/state.c index de0e04ea1..a51024f4d 100644 --- a/libs/vkd3d/state.c +++ b/libs/vkd3d/state.c @@ -2381,6 +2381,7 @@ static HRESULT d3d12_pipeline_state_init_compute(struct d3d12_pipeline_state *st const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs; struct vkd3d_shader_interface_info shader_interface; struct vkd3d_shader_descriptor_offset_info offset_info; + struct vkd3d_shader_parameter shader_parameters[1]; const struct d3d12_root_signature *root_signature; struct vkd3d_shader_spirv_target_info target_info; VkPipelineLayout vk_pipeline_layout; @@ -2401,11 +2402,18 @@ static HRESULT d3d12_pipeline_state_init_compute(struct d3d12_pipeline_state *st &desc->cs, VK_SHADER_STAGE_COMPUTE_BIT))) return hr;
+ shader_parameters[0].name = VKD3D_SHADER_PARAMETER_NAME_CAPABILITY_INT64; + shader_parameters[0].type = VKD3D_SHADER_PARAMETER_TYPE_IMMEDIATE_CONSTANT; + shader_parameters[0].data_type = VKD3D_SHADER_PARAMETER_DATA_TYPE_BOOL; + shader_parameters[0].u.immediate_constant.u.b = device->feature_options1.Int64ShaderOps; + memset(&target_info, 0, sizeof(target_info)); target_info.type = VKD3D_SHADER_STRUCTURE_TYPE_SPIRV_TARGET_INFO; target_info.environment = VKD3D_SHADER_SPIRV_ENVIRONMENT_VULKAN_1_0; target_info.extensions = device->vk_info.shader_extensions; target_info.extension_count = device->vk_info.shader_extension_count; + target_info.parameters = shader_parameters; + target_info.parameter_count = ARRAY_SIZE(shader_parameters);
if (root_signature->descriptor_offsets) {