From 3141033ac21500d328c43ec864d219dbf091058d Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Tue, 21 Jan 2025 23:31:15 -0500 Subject: [PATCH] vk/bvh: Add default stubs for unsupported entrypoints We don't currently support building acceleration structures on the CPU or indirect building in the common framework, and drivers using it don't either, but drivers have to return non-NULL entrypoints for CPU building functions if they claim to support VK_KHR_acceleration_structure. Add stub entrypoints here so that drivers don't have to have this boilerplate. Fixes dEQP-VK.api.version_check.entry_points on turnip. Fixes: 671e3a65a66 ("tu: Support VK_KHR_acceleration_structure") Reviewed-by: Samuel Pitoiset Reviewed-by: Lionel Landwerlin Part-of: --- .../runtime/vk_acceleration_structure.c | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/src/vulkan/runtime/vk_acceleration_structure.c b/src/vulkan/runtime/vk_acceleration_structure.c index cce1617962e..75fcffd67e3 100644 --- a/src/vulkan/runtime/vk_acceleration_structure.c +++ b/src/vulkan/runtime/vk_acceleration_structure.c @@ -1281,3 +1281,72 @@ vk_acceleration_struct_vtx_format_supported(VkFormat format) return false; } } + +/* Stubs of optional functions for drivers that don't implment them. */ + +VKAPI_ATTR void VKAPI_CALL +vk_common_CmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR *pInfos, + const VkDeviceAddress *pIndirectDeviceAddresses, + const uint32_t *pIndirectStrides, + const uint32_t *const *ppMaxPrimitiveCounts) +{ + unreachable("Unimplemented"); +} + +VKAPI_ATTR VkResult VKAPI_CALL +vk_common_WriteAccelerationStructuresPropertiesKHR(VkDevice _device, uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR *pAccelerationStructures, + VkQueryType queryType, + size_t dataSize, + void *pData, + size_t stride) +{ + VK_FROM_HANDLE(vk_device, device, _device); + unreachable("Unimplemented"); + return vk_error(device, VK_ERROR_FEATURE_NOT_PRESENT); +} + +VKAPI_ATTR VkResult VKAPI_CALL +vk_common_BuildAccelerationStructuresKHR(VkDevice _device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR *pInfos, + const VkAccelerationStructureBuildRangeInfoKHR *const *ppBuildRangeInfos) +{ + VK_FROM_HANDLE(vk_device, device, _device); + unreachable("Unimplemented"); + return vk_error(device, VK_ERROR_FEATURE_NOT_PRESENT); +} + +VKAPI_ATTR VkResult VKAPI_CALL +vk_common_CopyAccelerationStructureKHR(VkDevice _device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureInfoKHR *pInfo) +{ + VK_FROM_HANDLE(vk_device, device, _device); + unreachable("Unimplemented"); + return vk_error(device, VK_ERROR_FEATURE_NOT_PRESENT); +} + +VKAPI_ATTR VkResult VKAPI_CALL +vk_common_CopyMemoryToAccelerationStructureKHR(VkDevice _device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMemoryToAccelerationStructureInfoKHR *pInfo) +{ + VK_FROM_HANDLE(vk_device, device, _device); + unreachable("Unimplemented"); + return vk_error(device, VK_ERROR_FEATURE_NOT_PRESENT); +} + +VKAPI_ATTR VkResult VKAPI_CALL +vk_common_CopyAccelerationStructureToMemoryKHR(VkDevice _device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureToMemoryInfoKHR *pInfo) +{ + VK_FROM_HANDLE(vk_device, device, _device); + unreachable("Unimplemented"); + return vk_error(device, VK_ERROR_FEATURE_NOT_PRESENT); +} +