diff --git a/clients/simple-vulkan.c b/clients/simple-vulkan.c index ecc241d03..dd7463ca2 100644 --- a/clients/simple-vulkan.c +++ b/clients/simple-vulkan.c @@ -525,8 +525,11 @@ find_memory_type(struct window *window, uint32_t allowed, VkMemoryPropertyFlags VkPhysicalDeviceMemoryProperties mem_properties; vkGetPhysicalDeviceMemoryProperties(window->vk.phys_dev, &mem_properties); - for (unsigned i = 0; (1u << i) <= allowed && i <= mem_properties.memoryTypeCount; ++i) { - if ((allowed & (1u << i)) && (mem_properties.memoryTypes[i].propertyFlags & properties)) + for (unsigned i = 0; i < mem_properties.memoryTypeCount; ++i) { + bool is_allowed = allowed & (1u << i); + bool has_properties = + (mem_properties.memoryTypes[i].propertyFlags & properties) == properties; + if (is_allowed && has_properties) return i; } return -1;