diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index ecea8fe98..dc8465432 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -3522,8 +3522,12 @@ static struct vkd3d_shader_descriptor_binding spirv_compiler_get_descriptor_bind goto done; } - resource_type_flag = resource_type == VKD3D_SHADER_RESOURCE_BUFFER - ? VKD3D_SHADER_BINDING_FLAG_BUFFER : VKD3D_SHADER_BINDING_FLAG_IMAGE; + if (resource_type == VKD3D_SHADER_RESOURCE_NONE) + resource_type_flag = 0; + else if (resource_type == VKD3D_SHADER_RESOURCE_BUFFER) + resource_type_flag = VKD3D_SHADER_BINDING_FLAG_BUFFER; + else + resource_type_flag = VKD3D_SHADER_BINDING_FLAG_IMAGE; if (is_uav_counter) { @@ -3567,7 +3571,7 @@ static struct vkd3d_shader_descriptor_binding spirv_compiler_get_descriptor_bind { const struct vkd3d_shader_resource_binding *current = &shader_interface->bindings[i]; - if (!(current->flags & resource_type_flag)) + if ((current->flags & resource_type_flag) != resource_type_flag) continue; if (!spirv_compiler_check_shader_visibility(compiler, current->shader_visibility)) diff --git a/tests/shader_runner_vulkan.c b/tests/shader_runner_vulkan.c index 864e4a4b1..922cb017d 100644 --- a/tests/shader_runner_vulkan.c +++ b/tests/shader_runner_vulkan.c @@ -438,7 +438,7 @@ static bool compile_d3d_code(struct vulkan_shader_runner *runner, binding->register_space = 0; binding->register_index = runner->r.samplers[i].slot; binding->shader_visibility = VKD3D_SHADER_VISIBILITY_ALL; - binding->flags = VKD3D_SHADER_BINDING_FLAG_IMAGE; + binding->flags = 0; binding->binding.set = 0; binding->binding.binding = runner->samplers[i].binding; binding->binding.count = 1;