As suggested by @abadams , we should dynamically load the Vulkan loader library methods, and then use those to create an instance, rather than requiring a link-time dependency.
Detect if VK_LAYER_KHRONOS_validation is enabled, and bypass the module destructor which calls halide_vulkan_device_release() to avoid a segfault (at the cost of leaking!). See: https://github.com/halide/Halide/issues/8290.
Add vk_validate_shader_for_device() method to check shader bindings against device limits prior to compiling to verify shader compatibility. See: #8297 #8296 #8295 #8294 #8288
As suggested by @abadams , we should dynamically load the Vulkan loader library methods, and then use those to create an instance, rather than requiring a link-time dependency.
Also added runtime checks to verify the amount of shared memory required by the compiled pipeline is supported by the device. See https://github.com/halide/Halide/issues/8288
Detect if VK_LAYER_KHRONOS_validation is enabled, and bypass the module destructor which calls halide_vulkan_device_release() to avoid a segfault (at the cost of leaking!). See: https://github.com/halide/Halide/issues/8290.
Add vk_validate_shader_for_device() method to check shader bindings against device limits prior to compiling to verify shader compatibility. See: #8297 #8296 #8295 #8294 #8288