Add Vulkan 1.2 entry points

Vulkan 1.2 added several entry points, and even if SwiftShader doesn't support the features that introduced them, dEQP requires they be implemented regardless. Test: dEQP-VK.api.version_check.entry_points Bug: b/182287812 Change-Id: I0d90532e8e1508b71abc39c723167d9586d2cb84 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/53468 Commit-Queue: Sean Risser <srisser@google.com> Tested-by: 's avatarSean Risser <srisser@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 023914a2
......@@ -319,6 +319,13 @@ static const std::unordered_map<std::string, PFN_vkVoidFunction> deviceFunctionP
MAKE_VULKAN_DEVICE_ENTRY(vkGetSemaphoreCounterValue),
MAKE_VULKAN_DEVICE_ENTRY(vkSignalSemaphore),
MAKE_VULKAN_DEVICE_ENTRY(vkWaitSemaphores),
// VK_KHR_buffer_device_address
MAKE_VULKAN_DEVICE_ENTRY(vkGetBufferDeviceAddress),
MAKE_VULKAN_DEVICE_ENTRY(vkGetBufferOpaqueCaptureAddress),
MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceMemoryOpaqueCaptureAddress),
// VK_KHR_draw_indirect_count
MAKE_VULKAN_DEVICE_ENTRY(vkCmdDrawIndirectCount),
MAKE_VULKAN_DEVICE_ENTRY(vkCmdDrawIndexedIndirectCount),
};
static const std::vector<std::pair<const char *, std::unordered_map<std::string, PFN_vkVoidFunction>>> deviceExtensionFunctionPointers = {
......@@ -389,6 +396,23 @@ static const std::vector<std::pair<const char *, std::unordered_map<std::string,
MAKE_VULKAN_DEVICE_ENTRY(vkSignalSemaphoreKHR),
MAKE_VULKAN_DEVICE_ENTRY(vkWaitSemaphoresKHR),
} },
// VK_KHR_buffer_device_address
{
VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME,
{
MAKE_VULKAN_DEVICE_ENTRY(vkGetBufferDeviceAddressKHR),
MAKE_VULKAN_DEVICE_ENTRY(vkGetBufferOpaqueCaptureAddressKHR),
MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceMemoryOpaqueCaptureAddressKHR),
} },
// VK_KHR_draw_indirect_count
{
VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME,
{
MAKE_VULKAN_DEVICE_ENTRY(vkCmdDrawIndirectCountKHR),
MAKE_VULKAN_DEVICE_ENTRY(vkCmdDrawIndexedIndirectCountKHR),
} },
// VK_EXT_line_rasterization
{
VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME,
......
......@@ -231,4 +231,29 @@ VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR(VkDevice device, const VkSema
{
return vkWaitSemaphores(device, pWaitInfo, timeout);
}
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride)
{
vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
}
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride)
{
vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
}
VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferDeviceAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo *pInfo)
{
return vkGetBufferDeviceAddress(device, pInfo);
}
VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(VkDevice device, const VkBufferDeviceAddressInfo *pInfo)
{
return vkGetBufferOpaqueCaptureAddress(device, pInfo);
}
VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo *pInfo)
{
return vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo);
}
}
......@@ -1693,6 +1693,30 @@ VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(VkDevice device, VkBuffer buffer, con
vk::destroy(buffer, pAllocator);
}
VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferDeviceAddress(VkDevice device, const VkBufferDeviceAddressInfo *pInfo)
{
TRACE("(VkDevice device = %p, const VkBufferDeviceAddressInfo* pInfo = %p)",
device, pInfo);
UNSUPPORTED("VK_KHR_buffer_device_address");
return 0;
}
VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress(VkDevice device, const VkBufferDeviceAddressInfo *pInfo)
{
TRACE("(VkDevice device = %p, const VkBufferDeviceAddressInfo* pInfo = %p)",
device, pInfo);
UNSUPPORTED("VK_KHR_buffer_device_address");
return 0;
}
VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo *pInfo)
{
TRACE("(VkDevice device = %p, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo = %p)",
device, pInfo);
UNSUPPORTED("VK_KHR_buffer_device_address");
return 0;
}
VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkBufferView *pView)
{
TRACE("(VkDevice device = %p, const VkBufferViewCreateInfo* pCreateInfo = %p, const VkAllocationCallbacks* pAllocator = %p, VkBufferView* pView = %p)",
......@@ -2534,6 +2558,20 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffe
vk::Cast(commandBuffer)->drawIndexedIndirect(vk::Cast(buffer), offset, drawCount, stride);
}
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride)
{
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d, VkBuffer countBuffer = %p, VkDeviceSize countBufferOffset = %d, uint32_t maxDrawCount = %d, uint32_t stride = %d",
commandBuffer, static_cast<void *>(buffer), int(offset), static_cast<void *>(countBuffer), int(countBufferOffset), int(maxDrawCount), int(stride));
UNSUPPORTED("VK_KHR_draw_indirect_count");
}
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride)
{
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d, VkBuffer countBuffer = %p, VkDeviceSize countBufferOffset = %d, uint32_t maxDrawCount = %d, uint32_t stride = %d",
commandBuffer, static_cast<void *>(buffer), int(offset), static_cast<void *>(countBuffer), int(countBufferOffset), int(maxDrawCount), int(stride));
UNSUPPORTED("VK_KHR_draw_indirect_count");
}
VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ)
{
TRACE("(VkCommandBuffer commandBuffer = %p, uint32_t groupCountX = %d, uint32_t groupCountY = %d, uint32_t groupCountZ = %d)",
......
......@@ -240,3 +240,10 @@ EXPORTS
vkResetQueryPool
; VK_EXT_headless_surface
vkCreateHeadlessSurfaceEXT
; VK_KHR_buffer_device_address
vkGetBufferDeviceAddress
vkGetBufferOpaqueCaptureAddress
vkGetDeviceMemoryOpaqueCaptureAddress
; VK_KHR_draw_indirect_count
vkCmdDrawIndirectCount
vkCmdDrawIndexedIndirectCount
......@@ -237,6 +237,13 @@ global:
vkGetSemaphoreCounterValueKHR;
vkSignalSemaphoreKHR;
vkWaitSemaphoresKHR;
# VK_KHR_buffer_device_address
vkGetBufferDeviceAddress;
vkGetBufferOpaqueCaptureAddress;
vkGetDeviceMemoryOpaqueCaptureAddress;
# VK_KHR_draw_indirect_count
vkCmdDrawIndirectCount;
vkCmdDrawIndexedIndirectCount;
# Android HAL module info object
HMI;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment