Vulkan/Queue: Fix const and move

Former-commit-id: 503accc10d97b206bb0493b429327f1b739d0953 [formerly f87f3476138fd34f8e3dbaa3683eb5b9b70c60b8]
Former-commit-id: 566e7f0d1140b2437036f324baaededbbd3d198a
This commit is contained in:
Lynix 2016-07-04 18:16:45 +02:00
parent 92a9662137
commit f6b683eae2
2 changed files with 27 additions and 13 deletions

View File

@ -18,6 +18,7 @@ namespace Nz
class Queue class Queue
{ {
public: public:
inline Queue();
inline Queue(const DeviceHandle& device, VkQueue queue); inline Queue(const DeviceHandle& device, VkQueue queue);
inline Queue(const Queue& queue); inline Queue(const Queue& queue);
inline Queue(Queue&& queue); inline Queue(Queue&& queue);
@ -26,23 +27,23 @@ namespace Nz
inline const DeviceHandle& GetDevice() const; inline const DeviceHandle& GetDevice() const;
inline VkResult GetLastErrorCode() const; inline VkResult GetLastErrorCode() const;
inline bool Present(const VkPresentInfoKHR& presentInfo); inline bool Present(const VkPresentInfoKHR& presentInfo) const;
inline bool Present(VkSwapchainKHR swapchain, UInt32 imageIndex, VkSemaphore waitSemaphore = VK_NULL_HANDLE); inline bool Present(VkSwapchainKHR swapchain, UInt32 imageIndex, VkSemaphore waitSemaphore = VK_NULL_HANDLE) const;
inline bool Submit(const VkSubmitInfo& submit, VkFence fence = VK_NULL_HANDLE); inline bool Submit(const VkSubmitInfo& submit, VkFence fence = VK_NULL_HANDLE) const;
inline bool Submit(UInt32 submitCount, const VkSubmitInfo* submits, VkFence fence = VK_NULL_HANDLE); inline bool Submit(UInt32 submitCount, const VkSubmitInfo* submits, VkFence fence = VK_NULL_HANDLE) const;
inline bool WaitIdle(); inline bool WaitIdle() const;
Queue& operator=(const Queue& queue) = delete; Queue& operator=(const Queue& queue) = delete;
Queue& operator=(Queue&&) = delete; inline Queue& operator=(Queue&&);
inline operator VkQueue(); inline operator VkQueue();
protected: protected:
DeviceHandle m_device; DeviceHandle m_device;
VkQueue m_handle; VkQueue m_handle;
VkResult m_lastErrorCode; mutable VkResult m_lastErrorCode;
}; };
} }
} }

View File

@ -11,6 +11,11 @@ namespace Nz
{ {
namespace Vk namespace Vk
{ {
inline Queue::Queue() :
Queue(DeviceHandle(), VK_NULL_HANDLE)
{
}
inline Queue::Queue(const DeviceHandle& device, VkQueue queue) : inline Queue::Queue(const DeviceHandle& device, VkQueue queue) :
m_device(device), m_device(device),
m_handle(queue), m_handle(queue),
@ -42,7 +47,7 @@ namespace Nz
return m_lastErrorCode; return m_lastErrorCode;
} }
inline bool Queue::Present(const VkPresentInfoKHR& presentInfo) inline bool Queue::Present(const VkPresentInfoKHR& presentInfo) const
{ {
m_lastErrorCode = m_device->vkQueuePresentKHR(m_handle, &presentInfo); m_lastErrorCode = m_device->vkQueuePresentKHR(m_handle, &presentInfo);
if (m_lastErrorCode != VkResult::VK_SUCCESS) if (m_lastErrorCode != VkResult::VK_SUCCESS)
@ -51,7 +56,7 @@ namespace Nz
return true; return true;
} }
inline bool Queue::Present(VkSwapchainKHR swapchain, UInt32 imageIndex, VkSemaphore waitSemaphore) inline bool Queue::Present(VkSwapchainKHR swapchain, UInt32 imageIndex, VkSemaphore waitSemaphore) const
{ {
VkPresentInfoKHR presentInfo = VkPresentInfoKHR presentInfo =
{ {
@ -68,12 +73,12 @@ namespace Nz
return Present(presentInfo); return Present(presentInfo);
} }
inline bool Queue::Submit(const VkSubmitInfo& submit, VkFence fence) inline bool Queue::Submit(const VkSubmitInfo& submit, VkFence fence) const
{ {
return Submit(1, &submit, fence); return Submit(1, &submit, fence);
} }
inline bool Queue::Submit(UInt32 submitCount, const VkSubmitInfo* submits, VkFence fence) inline bool Queue::Submit(UInt32 submitCount, const VkSubmitInfo* submits, VkFence fence) const
{ {
m_lastErrorCode = m_device->vkQueueSubmit(m_handle, submitCount, submits, fence); m_lastErrorCode = m_device->vkQueueSubmit(m_handle, submitCount, submits, fence);
if (m_lastErrorCode != VkResult::VK_SUCCESS) if (m_lastErrorCode != VkResult::VK_SUCCESS)
@ -82,7 +87,7 @@ namespace Nz
return true; return true;
} }
inline bool Queue::WaitIdle() inline bool Queue::WaitIdle() const
{ {
m_lastErrorCode = m_device->vkQueueWaitIdle(m_handle); m_lastErrorCode = m_device->vkQueueWaitIdle(m_handle);
if (m_lastErrorCode != VkResult::VK_SUCCESS) if (m_lastErrorCode != VkResult::VK_SUCCESS)
@ -91,11 +96,19 @@ namespace Nz
return true; return true;
} }
inline Queue& Queue::operator=(Queue&& queue)
{
m_device = std::move(queue.m_device);
m_handle = queue.m_handle;
m_lastErrorCode = queue.m_lastErrorCode;
return *this;
}
inline Queue::operator VkQueue() inline Queue::operator VkQueue()
{ {
return m_handle; return m_handle;
} }
} }
} }