From b2e563151ddeeaafa1a48cd3309ede29475629be Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 4 Jun 2020 09:03:42 +0200 Subject: [PATCH] v3dv: add stubs for missing API implementations Asserting on them makes it easier to identify applications and tests that try to use unimplemented features. Also, there are some APIs that relate to optional features we don't (or can't) support, such as sparse, so for these we just provide the trivial implementation. Part-of: --- src/broadcom/vulkan/v3dv_cmd_buffer.c | 38 +++++++++++++++++++++++ src/broadcom/vulkan/v3dv_device.c | 26 ++++++++++++++++ src/broadcom/vulkan/v3dv_pipeline_cache.c | 19 ++++++++++++ src/broadcom/vulkan/v3dv_queue.c | 10 ++++++ 4 files changed, 93 insertions(+) diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c index e56fb9edae5..18527fa8797 100644 --- a/src/broadcom/vulkan/v3dv_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c @@ -4296,3 +4296,41 @@ v3dv_CmdWaitEvents(VkCommandBuffer commandBuffer, assert(cmd_buffer->state.pass || !cmd_buffer->state.job); list_addtail(&job->list_link, &cmd_buffer->jobs); } + +void +v3dv_CmdWriteTimestamp(VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkQueryPool queryPool, + uint32_t query) +{ + unreachable("Timestamp queries are not supported."); +} + +void +v3dv_CmdDispatch(VkCommandBuffer commandBuffer, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ) +{ + unreachable("vkCmdDispatch not implemented."); +} + +void +v3dv_CmdDispatchIndirect(VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset) +{ + unreachable("vkCmdDispatchIndirect not implemented."); +} + +void +v3dv_CmdResolveImage(VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageResolve *pRegions) +{ + unreachable("vkCmdResolveImage not implemented"); +} diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index 3f8c6da842c..2df46e8d3df 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -2094,4 +2094,30 @@ v3dv_DestroySampler(VkDevice _device, vk_free2(&device->alloc, pAllocator, sampler); } +void +v3dv_GetDeviceMemoryCommitment(VkDevice device, + VkDeviceMemory memory, + VkDeviceSize *pCommittedMemoryInBytes) +{ + *pCommittedMemoryInBytes = 0; +} +void +v3dv_GetImageSparseMemoryRequirements( + VkDevice device, + VkImage image, + uint32_t *pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements *pSparseMemoryRequirements) +{ + *pSparseMemoryRequirementCount = 0; +} + +void +v3dv_GetImageSparseMemoryRequirements2( + VkDevice device, + const VkImageSparseMemoryRequirementsInfo2 *pInfo, + uint32_t *pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 *pSparseMemoryRequirements) +{ + *pSparseMemoryRequirementCount = 0; +} diff --git a/src/broadcom/vulkan/v3dv_pipeline_cache.c b/src/broadcom/vulkan/v3dv_pipeline_cache.c index 198cbb3516c..f9e2ce06bc8 100644 --- a/src/broadcom/vulkan/v3dv_pipeline_cache.c +++ b/src/broadcom/vulkan/v3dv_pipeline_cache.c @@ -40,3 +40,22 @@ v3dv_DestroyPipelineCache(VkDevice _device, { /* FIXME: stub */ } + +VkResult +v3dv_MergePipelineCaches(VkDevice device, + VkPipelineCache dstCache, + uint32_t srcCacheCount, + const VkPipelineCache *pSrcCaches) +{ + unreachable("vkMergePipelineCaches not implemented."); + return VK_ERROR_UNKNOWN; +} + +VkResult +v3dv_GetPipelineCacheData(VkDevice device, + VkPipelineCache pipelineCache, + size_t *pDataSize, void *pData) +{ + unreachable("vkGetPipelineCacheData not implemented."); + return VK_ERROR_UNKNOWN; +} diff --git a/src/broadcom/vulkan/v3dv_queue.c b/src/broadcom/vulkan/v3dv_queue.c index f77f9f17e4f..a668f56570e 100644 --- a/src/broadcom/vulkan/v3dv_queue.c +++ b/src/broadcom/vulkan/v3dv_queue.c @@ -1109,3 +1109,13 @@ v3dv_WaitForFences(VkDevice _device, return vk_error(device->instance, VK_ERROR_DEVICE_LOST); return VK_SUCCESS; } + +VkResult +v3dv_QueueBindSparse(VkQueue _queue, + uint32_t bindInfoCount, + const VkBindSparseInfo *pBindInfo, + VkFence fence) +{ + V3DV_FROM_HANDLE(v3dv_queue, queue, _queue); + return vk_error(queue->device->instance, VK_ERROR_FEATURE_NOT_PRESENT); +}