ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

Commit: 16b4d5b86204480396b7a73460af66a02e2ec2c8
Parent: b1b052ba6dc42e1bd32a6f18fabbd542251b6b67
Author: Randy Palamar
Date:   Wed, 10 Jun 2026 13:15:43 -0600

vulkan: remove assert for HOST_VISIBLE when memory is not DEVICE_LOCAL

Apparently some drivers (nVidia) can report memory which is
neither HOST_VISIBLE or device local.

fixes: #64

Diffstat:
Mvulkan.c | 13++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/vulkan.c b/vulkan.c @@ -1339,14 +1339,21 @@ vk_load_physical_device(Arena arena, Stream *err) vk->memory_info.memory_type_indices[VulkanMemoryKind_BAR] = bar_index; + vk->memory_info.memory_type_indices[VulkanMemoryKind_Host] = -1; for (u32 i = 0; i < bmp->memoryTypeCount; i++) { if ((bmp->memoryTypes[i].propertyFlags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) == 0) { - assert(bmp->memoryTypes[i].propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT); - vk->memory_info.memory_type_indices[VulkanMemoryKind_Host] = i; - break; + if (bmp->memoryTypes[i].propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) { + vk->memory_info.memory_type_indices[VulkanMemoryKind_Host] = (i8)i; + break; + } } } + if (vk->memory_info.memory_type_indices[VulkanMemoryKind_Host] == -1) { + stream_append_s8(err, vulkan_info("fatal error: vulkan driver does not provide host visible memory\n")); + fatal(stream_to_s8(err)); + } + for EachElement(vk->memory_info.memory_type_indices, it) { u32 ti = vk->memory_info.memory_type_indices[it]; u32 flags = bmp->memoryTypes[ti].propertyFlags;