Я пробую Vulkan API через Silk.NET.
На этапе проверки уровня проверки он возвращает следующие слои:

но он не содержит VK_LAYER_KHRONOS_validation, и это вызывает исключение.
private readonly bool enableValidationLayers;
private readonly string[] validationLayers =
[
"VK_LAYER_KHRONOS_validation"
];
...
if (enableValidationLayers && !CheckValidationLayerSupport())
{
throw new Exception("Validation layers requested, but not available!");
}
...
private bool CheckValidationLayerSupport()
{
// get all available layers ...
uint layerCount = 0;
vk!.EnumerateInstanceLayerProperties(ref layerCount, null);
LayerProperties[] availableLayers = new LayerProperties[layerCount];
fixed (LayerProperties* availableLayersPtr = availableLayers)
{
vk!.EnumerateInstanceLayerProperties(ref layerCount, availableLayersPtr);
}
HashSet<string?> availableLayerNames = availableLayers.Select(layer => Marshal.PtrToStringAnsi((IntPtr)layer.LayerName)).ToHashSet();
// ... and check that required are in there
return validationLayers.All(availableLayerNames.Contains);
}
Если я не использую слои проверки, это работает, но тогда какой смысл





Наиболее вероятное объяснение заключается в том, что у вас не установлен уровень проверки. Он не устанавливается по умолчанию в вашей ОС или при установке драйверов Vulkan. Вы можете получить уровень проверки из Vulkan SDK (https://vulkan.lunarg.com).
В чем здесь вопрос?