X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbackends%2Fvulkan%2Fvulkan.h;h=c41813fa8a588f4f822942b92eba72c859f913b9;hb=9d00429567a54023228edfa340cd2a4d1e877d1e;hp=60de01d18ba103006275f0605793dc2b2851306a;hpb=d2a23243b7f25e56ef098196b2962c103989143f;p=libs%2Fgl.git diff --git a/source/backends/vulkan/vulkan.h b/source/backends/vulkan/vulkan.h index 60de01d1..c41813fa 100644 --- a/source/backends/vulkan/vulkan.h +++ b/source/backends/vulkan/vulkan.h @@ -85,7 +85,7 @@ public: Result(Result &&r): result(r.result), function(r.function) { r.result = VK_SUCCESS; } ~Result() noexcept(false) { if(!checked) check(); } - bool operator==(VkResult r) { checked = true; return result==r; } + bool operator==(VkResult r) { bool m = (result==r); checked |= m; return m; } void check() { if(result!=VK_SUCCESS) throw Graphics::vulkan_error(result, function); } }; @@ -106,6 +106,7 @@ private: PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0; // 6.4 PFN_vkEndCommandBuffer vkEndCommandBuffer = 0; // 6.4 PFN_vkQueueSubmit vkQueueSubmit = 0; // 6.5 + PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0; // 6.7 PFN_vkCreateFence vkCreateFence = 0; // 7.3 PFN_vkDestroyFence vkDestroyFence = 0; // 7.3 PFN_vkGetFenceStatus vkGetFenceStatus = 0; // 7.3 @@ -201,6 +202,9 @@ public: Result QueueSubmit(std::uint32_t submitCount, const VkSubmitInfo *pSubmits, VkFence fence) const { return { vkQueueSubmit(graphicsQueue, submitCount, pSubmits, handle_cast<::VkFence>(fence)), "vkQueueSubmit" }; } + void CmdExecuteCommands(VkCommandBuffer commandBuffer, std::uint32_t commandBufferCount, const VkCommandBuffer *pCommandBuffers) const + { vkCmdExecuteCommands(handle_cast<::VkCommandBuffer>(commandBuffer), commandBufferCount, handle_cast(pCommandBuffers)); } + // Chapter 7: Synchronization and Cache Control Result CreateFence(const VkFenceCreateInfo &rCreateInfo, VkFence &rFence) const { return { vkCreateFence(device, &rCreateInfo, 0, handle_cast<::VkFence *>(&rFence)), "vkCreateFence" }; }