Commit cda0cf9d by Alexis Hetu Committed by Alexis Hétu

vkQueueWaitIdle and vkDeviceWaitIdle as noops

Added the implementation for vkDeviceWaitIdle, which calls into a noop vkQueueWaitIdle for now, until we have a non noop implementation of Fence objects. This allows many tests to run properly. Bug b/117835459 Change-Id: I39be52f9462d87591bbb0bccee1e9e41b5a744b9 Reviewed-on: https://swiftshader-review.googlesource.com/c/24048Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 9d307138
...@@ -89,6 +89,14 @@ void Device::waitForFences(uint32_t fenceCount, const VkFence* pFences, VkBool32 ...@@ -89,6 +89,14 @@ void Device::waitForFences(uint32_t fenceCount, const VkFence* pFences, VkBool32
// FIXME(b/117835459) : noop // FIXME(b/117835459) : noop
} }
void Device::waitIdle()
{
for(uint32_t i = 0; i < queueCount; i++)
{
queues[i].waitIdle();
}
}
void Device::getDescriptorSetLayoutSupport(const VkDescriptorSetLayoutCreateInfo* pCreateInfo, void Device::getDescriptorSetLayoutSupport(const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
VkDescriptorSetLayoutSupport* pSupport) const VkDescriptorSetLayoutSupport* pSupport) const
{ {
......
...@@ -40,6 +40,7 @@ public: ...@@ -40,6 +40,7 @@ public:
VkQueue getQueue(uint32_t queueFamilyIndex, uint32_t queueIndex) const; VkQueue getQueue(uint32_t queueFamilyIndex, uint32_t queueIndex) const;
void waitForFences(uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout); void waitForFences(uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
void waitIdle();
void getDescriptorSetLayoutSupport(const VkDescriptorSetLayoutCreateInfo* pCreateInfo, void getDescriptorSetLayoutSupport(const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
VkDescriptorSetLayoutSupport* pSupport) const; VkDescriptorSetLayoutSupport* pSupport) const;
VkPhysicalDevice getPhysicalDevice() const { return physicalDevice; } VkPhysicalDevice getPhysicalDevice() const { return physicalDevice; }
......
...@@ -58,11 +58,19 @@ void Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence f ...@@ -58,11 +58,19 @@ void Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence f
} }
} }
// FIXME (b\117835459): signal the fence only once the work is completed // FIXME (b/117835459): signal the fence only once the work is completed
if(fence != VK_NULL_HANDLE) if(fence != VK_NULL_HANDLE)
{ {
vk::Cast(fence)->signal(); vk::Cast(fence)->signal();
} }
} }
void Queue::waitIdle()
{
// equivalent to submitting a fence to a queue and waiting
// with an infinite timeout for that fence to signal
// FIXME (b/117835459): implement once we have working fences
}
} // namespace vk } // namespace vk
\ No newline at end of file
...@@ -42,6 +42,7 @@ public: ...@@ -42,6 +42,7 @@ public:
void destroy(); void destroy();
void submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence); void submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
void waitIdle();
private: private:
sw::Context* context = nullptr; sw::Context* context = nullptr;
......
...@@ -456,15 +456,19 @@ VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(VkQueue queue, uint32_t submitCount ...@@ -456,15 +456,19 @@ VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(VkQueue queue, uint32_t submitCount
VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(VkQueue queue) VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(VkQueue queue)
{ {
TRACE("()"); TRACE("(VkQueue queue = 0x%X)", queue);
UNIMPLEMENTED();
vk::Cast(queue)->waitIdle();
return VK_SUCCESS; return VK_SUCCESS;
} }
VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(VkDevice device) VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(VkDevice device)
{ {
TRACE("()"); TRACE("(VkDevice device = 0x%X)", device);
UNIMPLEMENTED();
vk::Cast(device)->waitIdle();
return VK_SUCCESS; return VK_SUCCESS;
} }
......
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