Quando dou ponteiros para estruturas de extensão a serem preenchidas quando chamo vkGetPhysicalDeviceFeatures, o sinalizador rayTracingPipeline é 1, o que significa que ele deve ser suportado, e praticamente todos os sinalizadores em VkPhysicalDeviceRayTracingPipelineFeaturesKHR são definidos como 1. No entanto, quando crio o dispositivo lógico, recebo o erro de validação:
pCreateInfo->pNext inclui um ponteiro para um VkPhysicalDeviceRayTracingPipelineFeaturesKHR, mas ao criar o VkDevice, a extensão pai (VK_KHR_ray_tracing_pipeline) não foi incluída em ppEnabledExtensionNames.
Então, justo, parece que eu tenho que habilitar o VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME na lista de extensões habilitadas ao criar o dispositivo lógico. Então eu faço isso, mas então eu recebo:
Retorno de chamada da camada de validação Vulkan: loader_validate_device_extensions: A extensão do dispositivo VK_KHR_ray_tracing_pipeline não é suportada pelo dispositivo físico selecionado ou pelas camadas habilitadas.
Retorno de chamada da camada de validação Vulkan: vkCreateDevice: Falha ao validar extensões na lista
Quando verifico o nome da extensão com vkEnumerateDeviceExtensionProperties, ele não está na lista. Estou usando uma Radeon RX570.
O RX 570 não suporta ray tracing acelerado por hardware. Consultar recursos para extensões não suportadas por uma implementação é um comportamento indefinido. É exatamente isso que o erro de validação está tentando lhe dizer.