Commit c4bd9df2 by Alexis Hetu Committed by Alexis Hétu

Implement waiting for fences as noop

For the purpose of running dEQP tests, for now, fences can be implemented as noop. Once more complex rendering tests exercise this, we'll be able to implement and test fences. Bug b/117835459 Change-Id: I2b54be816c83f7a626108f61bd14eb9c969a2b0f Reviewed-on: https://swiftshader-review.googlesource.com/c/23068Reviewed-by: 's avatarChris Forbes <chrisforbes@google.com> Tested-by: 's avatarAlexis Hétu <sugoi@google.com>
parent 9a6c28bc
...@@ -79,6 +79,11 @@ VkQueue Device::getQueue(uint32_t queueFamilyIndex, uint32_t queueIndex) const ...@@ -79,6 +79,11 @@ VkQueue Device::getQueue(uint32_t queueFamilyIndex, uint32_t queueIndex) const
return queues[queueIndex]; return queues[queueIndex];
} }
void Device::waitForFences(uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
{
// FIXME(b/117835459) : noop
}
void Device::getDescriptorSetLayoutSupport(const VkDescriptorSetLayoutCreateInfo* pCreateInfo, void Device::getDescriptorSetLayoutSupport(const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
VkDescriptorSetLayoutSupport* pSupport) const VkDescriptorSetLayoutSupport* pSupport) const
{ {
......
...@@ -39,6 +39,7 @@ public: ...@@ -39,6 +39,7 @@ public:
static size_t ComputeRequiredAllocationSize(const CreateInfo* info); static size_t ComputeRequiredAllocationSize(const CreateInfo* info);
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 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; }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
// limitations under the License. // limitations under the License.
#include "VkCommandBuffer.hpp" #include "VkCommandBuffer.hpp"
#include "VkFence.hpp"
#include "VkQueue.hpp" #include "VkQueue.hpp"
#include "VkSemaphore.hpp" #include "VkSemaphore.hpp"
...@@ -25,11 +26,6 @@ Queue::Queue(uint32_t pFamilyIndex, float pPriority) : familyIndex(pFamilyIndex) ...@@ -25,11 +26,6 @@ Queue::Queue(uint32_t pFamilyIndex, float pPriority) : familyIndex(pFamilyIndex)
void Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) void Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence)
{ {
if(fence != VK_NULL_HANDLE)
{
UNIMPLEMENTED();
}
for(uint32_t i = 0; i < submitCount; i++) for(uint32_t i = 0; i < submitCount; i++)
{ {
auto& submitInfo = pSubmits[i]; auto& submitInfo = pSubmits[i];
...@@ -48,6 +44,12 @@ void Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence f ...@@ -48,6 +44,12 @@ void Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence f
vk::Cast(submitInfo.pSignalSemaphores[j])->signal(); vk::Cast(submitInfo.pSignalSemaphores[j])->signal();
} }
} }
// FIXME (b\117835459): signal the fence only once the work is completed
if(fence != VK_NULL_HANDLE)
{
vk::Cast(fence)->signal();
}
} }
} // namespace vk } // namespace vk
\ No newline at end of file
...@@ -639,8 +639,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(VkDevice device, VkFence fence) ...@@ -639,8 +639,11 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(VkDevice device, VkFence fence)
VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout) VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
{ {
TRACE("()"); TRACE("(VkDevice device = 0x%X, uint32_t fenceCount = %d, const VkFence* pFences = 0x%X, VkBool32 waitAll = %d, uint64_t timeout = %d)",
UNIMPLEMENTED(); device, fenceCount, pFences, waitAll, timeout);
vk::Cast(device)->waitForFences(fenceCount, pFences, waitAll, timeout);
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