Moved many Cast functions to libVulkan.cpp We should be changing to the internal object representation ASAP in the API and not carry around handles when it's trivial not to. Bug: b/116336664 Change-Id: I21de3421fd3e72f3402f2d7cefe1a3dd22c87045 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/32850 Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Vulkan/VkBuffer.cpp b/src/Vulkan/VkBuffer.cpp index 287ff22..7c09a42 100644 --- a/src/Vulkan/VkBuffer.cpp +++ b/src/Vulkan/VkBuffer.cpp
@@ -68,9 +68,9 @@ return memoryRequirements; } -void Buffer::bind(VkDeviceMemory pDeviceMemory, VkDeviceSize pMemoryOffset) +void Buffer::bind(DeviceMemory* pDeviceMemory, VkDeviceSize pMemoryOffset) { - memory = Cast(pDeviceMemory)->getOffsetPointer(pMemoryOffset); + memory = pDeviceMemory->getOffsetPointer(pMemoryOffset); } void Buffer::copyFrom(const void* srcMemory, VkDeviceSize pSize, VkDeviceSize pOffset)
diff --git a/src/Vulkan/VkBuffer.hpp b/src/Vulkan/VkBuffer.hpp index 26520c7..13e8732 100644 --- a/src/Vulkan/VkBuffer.hpp +++ b/src/Vulkan/VkBuffer.hpp
@@ -20,6 +20,8 @@ namespace vk { +class DeviceMemory; + class Buffer : public Object<Buffer, VkBuffer> { public: @@ -29,7 +31,7 @@ static size_t ComputeRequiredAllocationSize(const VkBufferCreateInfo* pCreateInfo); const VkMemoryRequirements getMemoryRequirements() const; - void bind(VkDeviceMemory pDeviceMemory, VkDeviceSize pMemoryOffset); + void bind(DeviceMemory* pDeviceMemory, VkDeviceSize pMemoryOffset); void copyFrom(const void* srcMemory, VkDeviceSize size, VkDeviceSize offset); void copyTo(void* dstMemory, VkDeviceSize size, VkDeviceSize offset) const; void copyTo(Buffer* dstBuffer, const VkBufferCopy& pRegion) const;
diff --git a/src/Vulkan/VkBufferView.cpp b/src/Vulkan/VkBufferView.cpp index e268ffb..5973bc8 100644 --- a/src/Vulkan/VkBufferView.cpp +++ b/src/Vulkan/VkBufferView.cpp
@@ -20,11 +20,11 @@ { BufferView::BufferView(const VkBufferViewCreateInfo* pCreateInfo, void* mem) : - buffer(pCreateInfo->buffer), format(pCreateInfo->format), offset(pCreateInfo->offset) + buffer(Cast(pCreateInfo->buffer)), format(pCreateInfo->format), offset(pCreateInfo->offset) { if (pCreateInfo->range == VK_WHOLE_SIZE) { - range = Cast(pCreateInfo->buffer)->getSize() - offset; + range = buffer->getSize() - offset; } else { @@ -34,7 +34,7 @@ void * BufferView::getPointer() const { - return Cast(buffer)->getOffsetPointer(offset); + return buffer->getOffsetPointer(offset); } } \ No newline at end of file
diff --git a/src/Vulkan/VkBufferView.hpp b/src/Vulkan/VkBufferView.hpp index 8564274..732f600 100644 --- a/src/Vulkan/VkBufferView.hpp +++ b/src/Vulkan/VkBufferView.hpp
@@ -22,6 +22,8 @@ namespace vk { +class Buffer; + class BufferView : public Object<BufferView, VkBufferView> { public: @@ -39,7 +41,7 @@ const uint32_t id = ImageView::nextID++; // ID space for sampling function cache, shared with imageviews private: - VkBuffer buffer; + Buffer *buffer; VkFormat format; VkDeviceSize offset; VkDeviceSize range;
diff --git a/src/Vulkan/VkCommandBuffer.cpp b/src/Vulkan/VkCommandBuffer.cpp index 398d20f..de72b92 100644 --- a/src/Vulkan/VkCommandBuffer.cpp +++ b/src/Vulkan/VkCommandBuffer.cpp
@@ -41,9 +41,9 @@ class BeginRenderPass : public CommandBuffer::Command { public: - BeginRenderPass(VkRenderPass renderPass, VkFramebuffer framebuffer, VkRect2D renderArea, + BeginRenderPass(RenderPass* renderPass, Framebuffer* framebuffer, VkRect2D renderArea, uint32_t clearValueCount, const VkClearValue* pClearValues) : - renderPass(Cast(renderPass)), framebuffer(Cast(framebuffer)), renderArea(renderArea), + renderPass(renderPass), framebuffer(framebuffer), renderArea(renderArea), clearValueCount(clearValueCount) { // FIXME (b/119409619): use an allocator here so we can control all memory allocations @@ -125,7 +125,7 @@ class ExecuteCommands : public CommandBuffer::Command { public: - ExecuteCommands(const VkCommandBuffer& commandBuffer) : commandBuffer(Cast(commandBuffer)) + ExecuteCommands(const CommandBuffer* commandBuffer) : commandBuffer(commandBuffer) { } @@ -142,8 +142,8 @@ class PipelineBind : public CommandBuffer::Command { public: - PipelineBind(VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) : - pipelineBindPoint(pipelineBindPoint), pipeline(Cast(pipeline)) + PipelineBind(VkPipelineBindPoint pipelineBindPoint, Pipeline* pipeline) : + pipelineBindPoint(pipelineBindPoint), pipeline(pipeline) { } @@ -192,8 +192,8 @@ class DispatchIndirect : public CommandBuffer::Command { public: - DispatchIndirect(VkBuffer buffer, VkDeviceSize offset) : - buffer(Cast(buffer)), offset(offset) + DispatchIndirect(Buffer* buffer, VkDeviceSize offset) : + buffer(buffer), offset(offset) { } @@ -218,8 +218,8 @@ struct VertexBufferBind : public CommandBuffer::Command { - VertexBufferBind(uint32_t binding, const VkBuffer buffer, const VkDeviceSize offset) : - binding(binding), buffer(Cast(buffer)), offset(offset) + VertexBufferBind(uint32_t binding, Buffer* buffer, const VkDeviceSize offset) : + binding(binding), buffer(buffer), offset(offset) { } @@ -236,8 +236,8 @@ struct IndexBufferBind : public CommandBuffer::Command { - IndexBufferBind(const VkBuffer buffer, const VkDeviceSize offset, const VkIndexType indexType) : - buffer(Cast(buffer)), offset(offset), indexType(indexType) + IndexBufferBind(Buffer* buffer, const VkDeviceSize offset, const VkIndexType indexType) : + buffer(buffer), offset(offset), indexType(indexType) { } @@ -655,8 +655,8 @@ struct DrawIndirect : public DrawBase { - DrawIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) - : buffer(Cast(buffer)), offset(offset), drawCount(drawCount), stride(stride) + DrawIndirect(Buffer* buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) + : buffer(buffer), offset(offset), drawCount(drawCount), stride(stride) { } @@ -678,8 +678,8 @@ struct DrawIndexedIndirect : public DrawBase { - DrawIndexedIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) - : buffer(Cast(buffer)), offset(offset), drawCount(drawCount), stride(stride) + DrawIndexedIndirect(Buffer* buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) + : buffer(buffer), offset(offset), drawCount(drawCount), stride(stride) { } @@ -701,8 +701,8 @@ struct ImageToImageCopy : public CommandBuffer::Command { - ImageToImageCopy(VkImage srcImage, VkImage dstImage, const VkImageCopy& region) : - srcImage(Cast(srcImage)), dstImage(Cast(dstImage)), region(region) + ImageToImageCopy(const Image* srcImage, Image* dstImage, const VkImageCopy& region) : + srcImage(srcImage), dstImage(dstImage), region(region) { } @@ -712,15 +712,15 @@ } private: - Image* srcImage; + const Image* srcImage; Image* dstImage; const VkImageCopy region; }; struct BufferToBufferCopy : public CommandBuffer::Command { - BufferToBufferCopy(VkBuffer srcBuffer, VkBuffer dstBuffer, const VkBufferCopy& region) : - srcBuffer(Cast(srcBuffer)), dstBuffer(Cast(dstBuffer)), region(region) + BufferToBufferCopy(const Buffer* srcBuffer, Buffer* dstBuffer, const VkBufferCopy& region) : + srcBuffer(srcBuffer), dstBuffer(dstBuffer), region(region) { } @@ -730,15 +730,15 @@ } private: - Buffer* srcBuffer; + const Buffer* srcBuffer; Buffer* dstBuffer; const VkBufferCopy region; }; struct ImageToBufferCopy : public CommandBuffer::Command { - ImageToBufferCopy(VkImage srcImage, VkBuffer dstBuffer, const VkBufferImageCopy& region) : - srcImage(Cast(srcImage)), dstBuffer(Cast(dstBuffer)), region(region) + ImageToBufferCopy(Image* srcImage, Buffer* dstBuffer, const VkBufferImageCopy& region) : + srcImage(srcImage), dstBuffer(dstBuffer), region(region) { } @@ -755,8 +755,8 @@ struct BufferToImageCopy : public CommandBuffer::Command { - BufferToImageCopy(VkBuffer srcBuffer, VkImage dstImage, const VkBufferImageCopy& region) : - srcBuffer(Cast(srcBuffer)), dstImage(Cast(dstImage)), region(region) + BufferToImageCopy(Buffer* srcBuffer, Image* dstImage, const VkBufferImageCopy& region) : + srcBuffer(srcBuffer), dstImage(dstImage), region(region) { } @@ -773,8 +773,8 @@ struct FillBuffer : public CommandBuffer::Command { - FillBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) : - dstBuffer(Cast(dstBuffer)), dstOffset(dstOffset), size(size), data(data) + FillBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) : + dstBuffer(dstBuffer), dstOffset(dstOffset), size(size), data(data) { } @@ -792,8 +792,8 @@ struct UpdateBuffer : public CommandBuffer::Command { - UpdateBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint8_t* pData) : - dstBuffer(Cast(dstBuffer)), dstOffset(dstOffset), data(pData, &pData[dataSize]) + UpdateBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint8_t* pData) : + dstBuffer(dstBuffer), dstOffset(dstOffset), data(pData, &pData[dataSize]) { } @@ -810,8 +810,8 @@ struct ClearColorImage : public CommandBuffer::Command { - ClearColorImage(VkImage image, const VkClearColorValue& color, const VkImageSubresourceRange& range) : - image(Cast(image)), color(color), range(range) + ClearColorImage(Image* image, const VkClearColorValue& color, const VkImageSubresourceRange& range) : + image(image), color(color), range(range) { } @@ -828,8 +828,8 @@ struct ClearDepthStencilImage : public CommandBuffer::Command { - ClearDepthStencilImage(VkImage image, const VkClearDepthStencilValue& depthStencil, const VkImageSubresourceRange& range) : - image(Cast(image)), depthStencil(depthStencil), range(range) + ClearDepthStencilImage(Image* image, const VkClearDepthStencilValue& depthStencil, const VkImageSubresourceRange& range) : + image(image), depthStencil(depthStencil), range(range) { } @@ -867,8 +867,8 @@ struct BlitImage : public CommandBuffer::Command { - BlitImage(VkImage srcImage, VkImage dstImage, const VkImageBlit& region, VkFilter filter) : - srcImage(Cast(srcImage)), dstImage(Cast(dstImage)), region(region), filter(filter) + BlitImage(const Image* srcImage, Image* dstImage, const VkImageBlit& region, VkFilter filter) : + srcImage(srcImage), dstImage(dstImage), region(region), filter(filter) { } @@ -886,8 +886,8 @@ struct ResolveImage : public CommandBuffer::Command { - ResolveImage(VkImage srcImage, VkImage dstImage, const VkImageResolve& region) : - srcImage(Cast(srcImage)), dstImage(Cast(dstImage)), region(region) + ResolveImage(const Image* srcImage, Image* dstImage, const VkImageResolve& region) : + srcImage(srcImage), dstImage(dstImage), region(region) { } @@ -925,7 +925,7 @@ struct SignalEvent : public CommandBuffer::Command { - SignalEvent(VkEvent ev, VkPipelineStageFlags stageMask) : ev(Cast(ev)), stageMask(stageMask) + SignalEvent(Event* ev, VkPipelineStageFlags stageMask) : ev(ev), stageMask(stageMask) { } @@ -942,7 +942,7 @@ struct ResetEvent : public CommandBuffer::Command { - ResetEvent(VkEvent ev, VkPipelineStageFlags stageMask) : ev(Cast(ev)), stageMask(stageMask) + ResetEvent(Event* ev, VkPipelineStageFlags stageMask) : ev(ev), stageMask(stageMask) { } @@ -958,7 +958,7 @@ struct WaitEvent : public CommandBuffer::Command { - WaitEvent(VkEvent ev) : ev(Cast(ev)) + WaitEvent(Event* ev) : ev(ev) { } @@ -974,7 +974,7 @@ struct BindDescriptorSet : public CommandBuffer::Command { - BindDescriptorSet(VkPipelineBindPoint pipelineBindPoint, vk::PipelineLayout *pipelineLayout, uint32_t set, const VkDescriptorSet& descriptorSet, + BindDescriptorSet(VkPipelineBindPoint pipelineBindPoint, const PipelineLayout *pipelineLayout, uint32_t set, DescriptorSet* descriptorSet, uint32_t dynamicOffsetCount, uint32_t const *dynamicOffsets) : pipelineBindPoint(pipelineBindPoint), pipelineLayout(pipelineLayout), set(set), descriptorSet(descriptorSet), dynamicOffsetCount(dynamicOffsetCount) @@ -992,7 +992,7 @@ auto dynamicOffsetBase = pipelineLayout->getDynamicOffsetBase(set); ASSERT_OR_RETURN(dynamicOffsetBase + dynamicOffsetCount <= MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC); - pipelineState.descriptorSets[set] = vk::Cast(descriptorSet); + pipelineState.descriptorSets[set] = descriptorSet; for (uint32_t i = 0; i < dynamicOffsetCount; i++) { pipelineState.descriptorDynamicOffsets[dynamicOffsetBase + i] = dynamicOffsets[i]; @@ -1001,9 +1001,9 @@ private: VkPipelineBindPoint pipelineBindPoint; - PipelineLayout *pipelineLayout; + const PipelineLayout *pipelineLayout; uint32_t set; - const VkDescriptorSet descriptorSet; + vk::DescriptorSet* descriptorSet; uint32_t dynamicOffsetCount; DescriptorSet::DynamicOffsets dynamicOffsets; }; @@ -1032,8 +1032,8 @@ struct BeginQuery : public CommandBuffer::Command { - BeginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags) - : queryPool(Cast(queryPool)), query(query), flags(flags) + BeginQuery(QueryPool* queryPool, uint32_t query, VkQueryControlFlags flags) + : queryPool(queryPool), query(query), flags(flags) { } @@ -1051,8 +1051,8 @@ struct EndQuery : public CommandBuffer::Command { - EndQuery(VkQueryPool queryPool, uint32_t query) - : queryPool(Cast(queryPool)), query(query) + EndQuery(QueryPool* queryPool, uint32_t query) + : queryPool(queryPool), query(query) { } @@ -1069,8 +1069,8 @@ struct ResetQueryPool : public CommandBuffer::Command { - ResetQueryPool(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) - : queryPool(Cast(queryPool)), firstQuery(firstQuery), queryCount(queryCount) + ResetQueryPool(QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount) + : queryPool(queryPool), firstQuery(firstQuery), queryCount(queryCount) { } @@ -1087,8 +1087,8 @@ struct WriteTimeStamp : public CommandBuffer::Command { - WriteTimeStamp(VkQueryPool queryPool, uint32_t query) - : queryPool(Cast(queryPool)), query(query) + WriteTimeStamp(QueryPool* queryPool, uint32_t query) + : queryPool(queryPool), query(query) { } @@ -1104,25 +1104,24 @@ struct CopyQueryPoolResults : public CommandBuffer::Command { - CopyQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, - VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) - : queryPool(Cast(queryPool)), firstQuery(firstQuery), queryCount(queryCount), + CopyQueryPoolResults(const QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount, + Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) + : queryPool(queryPool), firstQuery(firstQuery), queryCount(queryCount), dstBuffer(dstBuffer), dstOffset(dstOffset), stride(stride), flags(flags) { } void play(CommandBuffer::ExecutionState& executionState) { - vk::Buffer* buffer = Cast(dstBuffer); - queryPool->getResults(firstQuery, queryCount, buffer->getSize() - dstOffset, - buffer->getOffsetPointer(dstOffset), stride, flags); + queryPool->getResults(firstQuery, queryCount, dstBuffer->getSize() - dstOffset, + dstBuffer->getOffsetPointer(dstOffset), stride, flags); } private: - QueryPool* queryPool; + const QueryPool* queryPool; uint32_t firstQuery; uint32_t queryCount; - VkBuffer dstBuffer; + Buffer* dstBuffer; VkDeviceSize dstOffset; VkDeviceSize stride; VkQueryResultFlags flags; @@ -1194,7 +1193,7 @@ commands->push_back(std::unique_ptr<T>(new T(std::forward<Args>(args)...))); } -void CommandBuffer::beginRenderPass(VkRenderPass renderPass, VkFramebuffer framebuffer, VkRect2D renderArea, +void CommandBuffer::beginRenderPass(RenderPass* renderPass, Framebuffer* framebuffer, VkRect2D renderArea, uint32_t clearValueCount, const VkClearValue* clearValues, VkSubpassContents contents) { ASSERT(state == RECORDING); @@ -1220,7 +1219,7 @@ for(uint32_t i = 0; i < commandBufferCount; ++i) { - addCommand<ExecuteCommands>(pCommandBuffers[i]); + addCommand<ExecuteCommands>(vk::Cast(pCommandBuffers[i])); } } @@ -1244,7 +1243,7 @@ addCommand<PipelineBarrier>(); } -void CommandBuffer::bindPipeline(VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) +void CommandBuffer::bindPipeline(VkPipelineBindPoint pipelineBindPoint, Pipeline* pipeline) { switch(pipelineBindPoint) { @@ -1262,37 +1261,37 @@ { for(uint32_t i = 0; i < bindingCount; ++i) { - addCommand<VertexBufferBind>(i + firstBinding, pBuffers[i], pOffsets[i]); + addCommand<VertexBufferBind>(i + firstBinding, vk::Cast(pBuffers[i]), pOffsets[i]); } } -void CommandBuffer::beginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags) +void CommandBuffer::beginQuery(QueryPool* queryPool, uint32_t query, VkQueryControlFlags flags) { addCommand<BeginQuery>(queryPool, query, flags); } -void CommandBuffer::endQuery(VkQueryPool queryPool, uint32_t query) +void CommandBuffer::endQuery(QueryPool* queryPool, uint32_t query) { addCommand<EndQuery>(queryPool, query); } -void CommandBuffer::resetQueryPool(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) +void CommandBuffer::resetQueryPool(QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount) { addCommand<ResetQueryPool>(queryPool, firstQuery, queryCount); } -void CommandBuffer::writeTimestamp(VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query) +void CommandBuffer::writeTimestamp(VkPipelineStageFlagBits pipelineStage, QueryPool* queryPool, uint32_t query) { addCommand<WriteTimeStamp>(queryPool, query); } -void CommandBuffer::copyQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, - VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) +void CommandBuffer::copyQueryPoolResults(const QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount, + Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) { addCommand<CopyQueryPoolResults>(queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags); } -void CommandBuffer::pushConstants(VkPipelineLayout layout, VkShaderStageFlags stageFlags, +void CommandBuffer::pushConstants(PipelineLayout* layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues) { addCommand<SetPushConstants>(offset, size, pValues); @@ -1369,7 +1368,7 @@ addCommand<SetStencilReference>(faceMask, reference); } -void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout vkLayout, +void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, const PipelineLayout* layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) { @@ -1378,7 +1377,6 @@ for(uint32_t i = 0; i < descriptorSetCount; i++) { auto descriptorSetIndex = firstSet + i; - auto layout = vk::Cast(vkLayout); auto setLayout = layout->getDescriptorSetLayout(descriptorSetIndex); auto numDynamicDescriptors = setLayout->getDynamicDescriptorCount(); @@ -1386,7 +1384,7 @@ ASSERT(dynamicOffsetCount >= numDynamicDescriptors); addCommand<BindDescriptorSet>( - pipelineBindPoint, layout, descriptorSetIndex, pDescriptorSets[i], + pipelineBindPoint, layout, descriptorSetIndex, Cast(pDescriptorSets[i]), dynamicOffsetCount, pDynamicOffsets); pDynamicOffsets += numDynamicDescriptors; @@ -1394,7 +1392,7 @@ } } -void CommandBuffer::bindIndexBuffer(VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) +void CommandBuffer::bindIndexBuffer(Buffer* buffer, VkDeviceSize offset, VkIndexType indexType) { addCommand<IndexBufferBind>(buffer, offset, indexType); } @@ -1404,12 +1402,12 @@ addCommand<Dispatch>(0, 0, 0, groupCountX, groupCountY, groupCountZ); } -void CommandBuffer::dispatchIndirect(VkBuffer buffer, VkDeviceSize offset) +void CommandBuffer::dispatchIndirect(Buffer* buffer, VkDeviceSize offset) { addCommand<DispatchIndirect>(buffer, offset); } -void CommandBuffer::copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) +void CommandBuffer::copyBuffer(const Buffer* srcBuffer, Buffer* dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) { ASSERT(state == RECORDING); @@ -1419,7 +1417,7 @@ } } -void CommandBuffer::copyImage(VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, +void CommandBuffer::copyImage(const Image* srcImage, VkImageLayout srcImageLayout, Image* dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) { ASSERT(state == RECORDING); @@ -1434,7 +1432,7 @@ } } -void CommandBuffer::blitImage(VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, +void CommandBuffer::blitImage(const Image* srcImage, VkImageLayout srcImageLayout, Image* dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) { ASSERT(state == RECORDING); @@ -1449,7 +1447,7 @@ } } -void CommandBuffer::copyBufferToImage(VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, +void CommandBuffer::copyBufferToImage(Buffer* srcBuffer, Image* dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) { ASSERT(state == RECORDING); @@ -1460,7 +1458,7 @@ } } -void CommandBuffer::copyImageToBuffer(VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, +void CommandBuffer::copyImageToBuffer(Image* srcImage, VkImageLayout srcImageLayout, Buffer* dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) { ASSERT(state == RECORDING); @@ -1472,21 +1470,21 @@ } } -void CommandBuffer::updateBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) +void CommandBuffer::updateBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) { ASSERT(state == RECORDING); addCommand<UpdateBuffer>(dstBuffer, dstOffset, dataSize, reinterpret_cast<const uint8_t*>(pData)); } -void CommandBuffer::fillBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) +void CommandBuffer::fillBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) { ASSERT(state == RECORDING); addCommand<FillBuffer>(dstBuffer, dstOffset, size, data); } -void CommandBuffer::clearColorImage(VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, +void CommandBuffer::clearColorImage(Image* image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { ASSERT(state == RECORDING); @@ -1497,7 +1495,7 @@ } } -void CommandBuffer::clearDepthStencilImage(VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, +void CommandBuffer::clearDepthStencilImage(Image* image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { ASSERT(state == RECORDING); @@ -1522,7 +1520,7 @@ } } -void CommandBuffer::resolveImage(VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, +void CommandBuffer::resolveImage(const Image* srcImage, VkImageLayout srcImageLayout, Image* dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) { ASSERT(state == RECORDING); @@ -1537,14 +1535,14 @@ } } -void CommandBuffer::setEvent(VkEvent event, VkPipelineStageFlags stageMask) +void CommandBuffer::setEvent(Event* event, VkPipelineStageFlags stageMask) { ASSERT(state == RECORDING); addCommand<SignalEvent>(event, stageMask); } -void CommandBuffer::resetEvent(VkEvent event, VkPipelineStageFlags stageMask) +void CommandBuffer::resetEvent(Event* event, VkPipelineStageFlags stageMask) { ASSERT(state == RECORDING); @@ -1563,7 +1561,7 @@ // Note: srcStageMask and dstStageMask are currently ignored for(uint32_t i = 0; i < eventCount; i++) { - addCommand<WaitEvent>(pEvents[i]); + addCommand<WaitEvent>(vk::Cast(pEvents[i])); } } @@ -1577,12 +1575,12 @@ addCommand<DrawIndexed>(indexCount, instanceCount, firstIndex, vertexOffset, firstInstance); } -void CommandBuffer::drawIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) +void CommandBuffer::drawIndirect(Buffer* buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) { addCommand<DrawIndirect>(buffer, offset, drawCount, stride); } -void CommandBuffer::drawIndexedIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) +void CommandBuffer::drawIndexedIndirect(Buffer* buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) { addCommand<DrawIndexedIndirect>(buffer, offset, drawCount, stride); }
diff --git a/src/Vulkan/VkCommandBuffer.hpp b/src/Vulkan/VkCommandBuffer.hpp index 1fc81cd..adef7e7 100644 --- a/src/Vulkan/VkCommandBuffer.hpp +++ b/src/Vulkan/VkCommandBuffer.hpp
@@ -34,8 +34,12 @@ { class Buffer; +class Event; class Framebuffer; +class Image; class Pipeline; +class PipelineLayout; +class QueryPool; class RenderPass; class CommandBuffer @@ -51,7 +55,7 @@ VkResult end(); VkResult reset(VkCommandPoolResetFlags flags); - void beginRenderPass(VkRenderPass renderPass, VkFramebuffer framebuffer, VkRect2D renderArea, + void beginRenderPass(RenderPass* renderPass, Framebuffer* framebuffer, VkRect2D renderArea, uint32_t clearValueCount, const VkClearValue* pClearValues, VkSubpassContents contents); void nextSubpass(VkSubpassContents contents); void endRenderPass(); @@ -65,17 +69,17 @@ uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); - void bindPipeline(VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); + void bindPipeline(VkPipelineBindPoint pipelineBindPoint, Pipeline* pipeline); void bindVertexBuffers(uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); - void beginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags); - void endQuery(VkQueryPool queryPool, uint32_t query); - void resetQueryPool(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); - void writeTimestamp(VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query); - void copyQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, - VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); - void pushConstants(VkPipelineLayout layout, VkShaderStageFlags stageFlags, + void beginQuery(QueryPool* queryPool, uint32_t query, VkQueryControlFlags flags); + void endQuery(QueryPool* queryPool, uint32_t query); + void resetQueryPool(QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount); + void writeTimestamp(VkPipelineStageFlagBits pipelineStage, QueryPool* queryPool, uint32_t query); + void copyQueryPoolResults(const QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount, + Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); + void pushConstants(PipelineLayout* layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues); void setViewport(uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports); @@ -87,33 +91,33 @@ void setStencilCompareMask(VkStencilFaceFlags faceMask, uint32_t compareMask); void setStencilWriteMask(VkStencilFaceFlags faceMask, uint32_t writeMask); void setStencilReference(VkStencilFaceFlags faceMask, uint32_t reference); - void bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, + void bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, const PipelineLayout* layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets); - void bindIndexBuffer(VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); + void bindIndexBuffer(Buffer* buffer, VkDeviceSize offset, VkIndexType indexType); void dispatch(uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); - void dispatchIndirect(VkBuffer buffer, VkDeviceSize offset); - void copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions); - void copyImage(VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, + void dispatchIndirect(Buffer* buffer, VkDeviceSize offset); + void copyBuffer(const Buffer* srcBuffer, Buffer* dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions); + void copyImage(const Image* srcImage, VkImageLayout srcImageLayout, Image* dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions); - void blitImage(VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, + void blitImage(const Image* srcImage, VkImageLayout srcImageLayout, Image* dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter); - void copyBufferToImage(VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, + void copyBufferToImage(Buffer* srcBuffer, Image* dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions); - void copyImageToBuffer(VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, + void copyImageToBuffer(Image* srcImage, VkImageLayout srcImageLayout, Buffer* dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions); - void updateBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData); - void fillBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); - void clearColorImage(VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, + void updateBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData); + void fillBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); + void clearColorImage(Image* image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); - void clearDepthStencilImage(VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, + void clearDepthStencilImage(Image* image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); void clearAttachments(uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects); - void resolveImage(VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, + void resolveImage(const Image* srcImage, VkImageLayout srcImageLayout, Image* dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions); - void setEvent(VkEvent event, VkPipelineStageFlags stageMask); - void resetEvent(VkEvent event, VkPipelineStageFlags stageMask); + void setEvent(Event* event, VkPipelineStageFlags stageMask); + void resetEvent(Event* event, VkPipelineStageFlags stageMask); void waitEvents(uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, @@ -121,8 +125,8 @@ void draw(uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); void drawIndexed(uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance); - void drawIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); - void drawIndexedIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); + void drawIndirect(Buffer* buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); + void drawIndexedIndirect(Buffer* buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); // TODO(sugoi): Move ExecutionState out of CommandBuffer (possibly into Device) struct ExecutionState
diff --git a/src/Vulkan/VkDescriptorPool.cpp b/src/Vulkan/VkDescriptorPool.cpp index bd1719a..fa4df1f 100644 --- a/src/Vulkan/VkDescriptorPool.cpp +++ b/src/Vulkan/VkDescriptorPool.cpp
@@ -62,7 +62,7 @@ { for(uint32_t i = 0; i < descriptorSetCount; i++) { - Cast(pSetLayouts[i])->initialize(pDescriptorSets[i]); + Cast(pSetLayouts[i])->initialize(vk::Cast(pDescriptorSets[i])); } } return result;
diff --git a/src/Vulkan/VkDescriptorSetLayout.cpp b/src/Vulkan/VkDescriptorSetLayout.cpp index 624fef9..d6668cd 100644 --- a/src/Vulkan/VkDescriptorSetLayout.cpp +++ b/src/Vulkan/VkDescriptorSetLayout.cpp
@@ -144,10 +144,9 @@ return 0; } -void DescriptorSetLayout::initialize(VkDescriptorSet vkDescriptorSet) +void DescriptorSetLayout::initialize(DescriptorSet* descriptorSet) { // Use a pointer to this descriptor set layout as the descriptor set's header - DescriptorSet* descriptorSet = vk::Cast(vkDescriptorSet); descriptorSet->header.layout = this; uint8_t* mem = descriptorSet->data;
diff --git a/src/Vulkan/VkDescriptorSetLayout.hpp b/src/Vulkan/VkDescriptorSetLayout.hpp index 08408f2..8ebdfda 100644 --- a/src/Vulkan/VkDescriptorSetLayout.hpp +++ b/src/Vulkan/VkDescriptorSetLayout.hpp
@@ -84,7 +84,7 @@ static void WriteDescriptorSet(DescriptorSet *dstSet, VkDescriptorUpdateTemplateEntry const &entry, char const *src); static void WriteTextureLevelInfo(sw::Texture *texture, int level, int width, int height, int depth, int pitchP, int sliceP); - void initialize(VkDescriptorSet descriptorSet); + void initialize(DescriptorSet* descriptorSet); // Returns the total size of the descriptor set in bytes. size_t getDescriptorSetAllocationSize() const;
diff --git a/src/Vulkan/VkGetProcAddress.cpp b/src/Vulkan/VkGetProcAddress.cpp index d7878ec..ad253cf 100644 --- a/src/Vulkan/VkGetProcAddress.cpp +++ b/src/Vulkan/VkGetProcAddress.cpp
@@ -323,7 +323,7 @@ #undef MAKE_VULKAN_DEVICE_ENTRY -PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName) +PFN_vkVoidFunction GetInstanceProcAddr(Instance* instance, const char* pName) { auto globalFunction = globalFunctionPointers.find(std::string(pName)); if(globalFunction != globalFunctionPointers.end()) @@ -331,7 +331,7 @@ return globalFunction->second; } - if(instance != VK_NULL_HANDLE) + if(instance != nullptr) { auto instanceFunction = instanceFunctionPointers.find(std::string(pName)); if(instanceFunction != instanceFunctionPointers.end()) @@ -358,7 +358,7 @@ return nullptr; } -PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName) +PFN_vkVoidFunction GetDeviceProcAddr(Device* device, const char* pName) { auto deviceFunction = deviceFunctionPointers.find(std::string(pName)); if(deviceFunction != deviceFunctionPointers.end()) @@ -366,10 +366,9 @@ return deviceFunction->second; } - vk::Device* myDevice = Cast(device); for(const auto& deviceExtensionFunctions : deviceExtensionFunctionPointers) { - if(myDevice->hasExtension(deviceExtensionFunctions.first)) + if(device->hasExtension(deviceExtensionFunctions.first)) { deviceFunction = deviceExtensionFunctions.second.find(std::string(pName)); if(deviceFunction != deviceExtensionFunctions.second.end())
diff --git a/src/Vulkan/VkGetProcAddress.h b/src/Vulkan/VkGetProcAddress.h index 0531b77..27562ff 100644 --- a/src/Vulkan/VkGetProcAddress.h +++ b/src/Vulkan/VkGetProcAddress.h
@@ -19,8 +19,13 @@ namespace vk { -PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName); -PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName); + +class Device; +class Instance; + +PFN_vkVoidFunction GetInstanceProcAddr(Instance* instance, const char* pName); +PFN_vkVoidFunction GetDeviceProcAddr(Device* device, const char* pName); + } #endif // VK_UTILS_HPP_ \ No newline at end of file
diff --git a/src/Vulkan/VkImage.cpp b/src/Vulkan/VkImage.cpp index 7374a84..7d4209d 100644 --- a/src/Vulkan/VkImage.cpp +++ b/src/Vulkan/VkImage.cpp
@@ -96,9 +96,9 @@ return memoryRequirements; } -void Image::bind(VkDeviceMemory pDeviceMemory, VkDeviceSize pMemoryOffset) +void Image::bind(DeviceMemory* pDeviceMemory, VkDeviceSize pMemoryOffset) { - deviceMemory = Cast(pDeviceMemory); + deviceMemory = pDeviceMemory; memoryOffset = pMemoryOffset; if(decompressedImage) {
diff --git a/src/Vulkan/VkImage.hpp b/src/Vulkan/VkImage.hpp index f31209d..ff9511a 100644 --- a/src/Vulkan/VkImage.hpp +++ b/src/Vulkan/VkImage.hpp
@@ -35,7 +35,7 @@ const VkMemoryRequirements getMemoryRequirements() const; void getSubresourceLayout(const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const; - void bind(VkDeviceMemory pDeviceMemory, VkDeviceSize pMemoryOffset); + void bind(DeviceMemory* pDeviceMemory, VkDeviceSize pMemoryOffset); void copyTo(Image* dstImage, const VkImageCopy& pRegion) const; void copyTo(Buffer* dstBuffer, const VkBufferImageCopy& region); void copyFrom(Buffer* srcBuffer, const VkBufferImageCopy& region);
diff --git a/src/Vulkan/VkQueue.cpp b/src/Vulkan/VkQueue.cpp index 3657c1f..4c03198 100644 --- a/src/Vulkan/VkQueue.cpp +++ b/src/Vulkan/VkQueue.cpp
@@ -91,14 +91,14 @@ garbageCollect(); } -VkResult Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) +VkResult Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, Fence* fence) { garbageCollect(); Task task; task.submitCount = submitCount; task.pSubmits = DeepCopySubmitInfo(submitCount, pSubmits); - task.events = (fence != VK_NULL_HANDLE) ? vk::Cast(fence) : nullptr; + task.events = fence; if(task.events) {
diff --git a/src/Vulkan/VkQueue.hpp b/src/Vulkan/VkQueue.hpp index e32541c..cfa462b 100644 --- a/src/Vulkan/VkQueue.hpp +++ b/src/Vulkan/VkQueue.hpp
@@ -31,6 +31,8 @@ namespace vk { +class Fence; + class Queue { VK_LOADER_DATA loaderData = { ICD_LOADER_MAGIC }; @@ -44,7 +46,7 @@ return reinterpret_cast<VkQueue>(this); } - VkResult submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence); + VkResult submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, Fence* fence); VkResult waitIdle(); #ifndef __ANDROID__ void present(const VkPresentInfoKHR* presentInfo);
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp index bc39d38..9bacfb6 100644 --- a/src/Vulkan/libVulkan.cpp +++ b/src/Vulkan/libVulkan.cpp
@@ -83,7 +83,7 @@ { TRACE("(VkInstance instance = %p, const char* pName = %p)", instance, pName); - return vk::GetInstanceProcAddr(instance, pName); + return vk::GetInstanceProcAddr(vk::Cast(instance), pName); } VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion) @@ -361,14 +361,14 @@ { TRACE("(VkInstance instance = %p, const char* pName = %p)", instance, pName); - return vk::GetInstanceProcAddr(instance, pName); + return vk::GetInstanceProcAddr(vk::Cast(instance), pName); } VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkDevice device, const char* pName) { TRACE("(VkDevice device = %p, const char* pName = %p)", device, pName); - return vk::GetDeviceProcAddr(device, pName); + return vk::GetDeviceProcAddr(vk::Cast(device), pName); } VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) @@ -589,7 +589,7 @@ TRACE("(VkQueue queue = %p, uint32_t submitCount = %d, const VkSubmitInfo* pSubmits = %p, VkFence fence = %p)", queue, submitCount, pSubmits, fence.get()); - return vk::Cast(queue)->submit(submitCount, pSubmits, fence); + return vk::Cast(queue)->submit(submitCount, pSubmits, vk::Cast(fence)); } VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(VkQueue queue) @@ -715,7 +715,7 @@ TRACE("(VkDevice device = %p, VkBuffer buffer = %p, VkDeviceMemory memory = %p, VkDeviceSize memoryOffset = %d)", device, buffer.get(), memory.get(), int(memoryOffset)); - vk::Cast(buffer)->bind(memory, memoryOffset); + vk::Cast(buffer)->bind(vk::Cast(memory), memoryOffset); return VK_SUCCESS; } @@ -725,7 +725,7 @@ TRACE("(VkDevice device = %p, VkImage image = %p, VkDeviceMemory memory = %p, VkDeviceSize memoryOffset = %d)", device, image.get(), memory.get(), int(memoryOffset)); - vk::Cast(image)->bind(memory, memoryOffset); + vk::Cast(image)->bind(vk::Cast(memory), memoryOffset); return VK_SUCCESS; } @@ -1636,7 +1636,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkPipelineBindPoint pipelineBindPoint = %d, VkPipeline pipeline = %p)", commandBuffer, int(pipelineBindPoint), pipeline.get()); - vk::Cast(commandBuffer)->bindPipeline(pipelineBindPoint, pipeline); + vk::Cast(commandBuffer)->bindPipeline(pipelineBindPoint, vk::Cast(pipeline)); } VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports) @@ -1715,7 +1715,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkPipelineBindPoint pipelineBindPoint = %d, VkPipelineLayout layout = %p, uint32_t firstSet = %d, uint32_t descriptorSetCount = %d, const VkDescriptorSet* pDescriptorSets = %p, uint32_t dynamicOffsetCount = %d, const uint32_t* pDynamicOffsets = %p)", commandBuffer, int(pipelineBindPoint), layout.get(), int(firstSet), int(descriptorSetCount), pDescriptorSets, int(dynamicOffsetCount), pDynamicOffsets); - vk::Cast(commandBuffer)->bindDescriptorSets(pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets); + vk::Cast(commandBuffer)->bindDescriptorSets(pipelineBindPoint, vk::Cast(layout), firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets); } VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) @@ -1723,7 +1723,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d, VkIndexType indexType = %d)", commandBuffer, buffer.get(), int(offset), int(indexType)); - vk::Cast(commandBuffer)->bindIndexBuffer(buffer, offset, indexType); + vk::Cast(commandBuffer)->bindIndexBuffer(vk::Cast(buffer), offset, indexType); } VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) @@ -1755,7 +1755,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d, uint32_t drawCount = %d, uint32_t stride = %d)", commandBuffer, buffer.get(), int(offset), int(drawCount), int(stride)); - vk::Cast(commandBuffer)->drawIndirect(buffer, offset, drawCount, stride); + vk::Cast(commandBuffer)->drawIndirect(vk::Cast(buffer), offset, drawCount, stride); } VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) @@ -1763,7 +1763,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d, uint32_t drawCount = %d, uint32_t stride = %d)", commandBuffer, buffer.get(), int(offset), int(drawCount), int(stride)); - vk::Cast(commandBuffer)->drawIndexedIndirect(buffer, offset, drawCount, stride); + vk::Cast(commandBuffer)->drawIndexedIndirect(vk::Cast(buffer), offset, drawCount, stride); } VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) @@ -1779,7 +1779,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d)", commandBuffer, buffer.get(), int(offset)); - vk::Cast(commandBuffer)->dispatchIndirect(buffer, offset); + vk::Cast(commandBuffer)->dispatchIndirect(vk::Cast(buffer), offset); } VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions) @@ -1787,7 +1787,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer srcBuffer = %p, VkBuffer dstBuffer = %p, uint32_t regionCount = %d, const VkBufferCopy* pRegions = %p)", commandBuffer, srcBuffer.get(), dstBuffer.get(), int(regionCount), pRegions); - vk::Cast(commandBuffer)->copyBuffer(srcBuffer, dstBuffer, regionCount, pRegions); + vk::Cast(commandBuffer)->copyBuffer(vk::Cast(srcBuffer), vk::Cast(dstBuffer), regionCount, pRegions); } VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions) @@ -1795,7 +1795,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkImage srcImage = %p, VkImageLayout srcImageLayout = %d, VkImage dstImage = %p, VkImageLayout dstImageLayout = %d, uint32_t regionCount = %d, const VkImageCopy* pRegions = %p)", commandBuffer, srcImage.get(), srcImageLayout, dstImage.get(), dstImageLayout, int(regionCount), pRegions); - vk::Cast(commandBuffer)->copyImage(srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions); + vk::Cast(commandBuffer)->copyImage(vk::Cast(srcImage), srcImageLayout, vk::Cast(dstImage), dstImageLayout, regionCount, pRegions); } VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter) @@ -1803,7 +1803,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkImage srcImage = %p, VkImageLayout srcImageLayout = %d, VkImage dstImage = %p, VkImageLayout dstImageLayout = %d, uint32_t regionCount = %d, const VkImageBlit* pRegions = %p, VkFilter filter = %d)", commandBuffer, srcImage.get(), srcImageLayout, dstImage.get(), dstImageLayout, int(regionCount), pRegions, filter); - vk::Cast(commandBuffer)->blitImage(srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter); + vk::Cast(commandBuffer)->blitImage(vk::Cast(srcImage), srcImageLayout, vk::Cast(dstImage), dstImageLayout, regionCount, pRegions, filter); } VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions) @@ -1811,7 +1811,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer srcBuffer = %p, VkImage dstImage = %p, VkImageLayout dstImageLayout = %d, uint32_t regionCount = %d, const VkBufferImageCopy* pRegions = %p)", commandBuffer, srcBuffer.get(), dstImage.get(), dstImageLayout, int(regionCount), pRegions); - vk::Cast(commandBuffer)->copyBufferToImage(srcBuffer, dstImage, dstImageLayout, regionCount, pRegions); + vk::Cast(commandBuffer)->copyBufferToImage(vk::Cast(srcBuffer), vk::Cast(dstImage), dstImageLayout, regionCount, pRegions); } VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions) @@ -1819,7 +1819,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkImage srcImage = %p, VkImageLayout srcImageLayout = %d, VkBuffer dstBuffer = %p, uint32_t regionCount = %d, const VkBufferImageCopy* pRegions = %p)", commandBuffer, srcImage.get(), int(srcImageLayout), dstBuffer.get(), int(regionCount), pRegions); - vk::Cast(commandBuffer)->copyImageToBuffer(srcImage, srcImageLayout, dstBuffer, regionCount, pRegions); + vk::Cast(commandBuffer)->copyImageToBuffer(vk::Cast(srcImage), srcImageLayout, vk::Cast(dstBuffer), regionCount, pRegions); } VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData) @@ -1827,7 +1827,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer dstBuffer = %p, VkDeviceSize dstOffset = %d, VkDeviceSize dataSize = %d, const void* pData = %p)", commandBuffer, dstBuffer.get(), int(dstOffset), int(dataSize), pData); - vk::Cast(commandBuffer)->updateBuffer(dstBuffer, dstOffset, dataSize, pData); + vk::Cast(commandBuffer)->updateBuffer(vk::Cast(dstBuffer), dstOffset, dataSize, pData); } VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) @@ -1835,7 +1835,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer dstBuffer = %p, VkDeviceSize dstOffset = %d, VkDeviceSize size = %d, uint32_t data = %d)", commandBuffer, dstBuffer.get(), int(dstOffset), int(size), data); - vk::Cast(commandBuffer)->fillBuffer(dstBuffer, dstOffset, size, data); + vk::Cast(commandBuffer)->fillBuffer(vk::Cast(dstBuffer), dstOffset, size, data); } VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) @@ -1843,7 +1843,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkImage image = %p, VkImageLayout imageLayout = %d, const VkClearColorValue* pColor = %p, uint32_t rangeCount = %d, const VkImageSubresourceRange* pRanges = %p)", commandBuffer, image.get(), int(imageLayout), pColor, int(rangeCount), pRanges); - vk::Cast(commandBuffer)->clearColorImage(image, imageLayout, pColor, rangeCount, pRanges); + vk::Cast(commandBuffer)->clearColorImage(vk::Cast(image), imageLayout, pColor, rangeCount, pRanges); } VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) @@ -1851,7 +1851,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkImage image = %p, VkImageLayout imageLayout = %d, const VkClearDepthStencilValue* pDepthStencil = %p, uint32_t rangeCount = %d, const VkImageSubresourceRange* pRanges = %p)", commandBuffer, image.get(), int(imageLayout), pDepthStencil, int(rangeCount), pRanges); - vk::Cast(commandBuffer)->clearDepthStencilImage(image, imageLayout, pDepthStencil, rangeCount, pRanges); + vk::Cast(commandBuffer)->clearDepthStencilImage(vk::Cast(image), imageLayout, pDepthStencil, rangeCount, pRanges); } VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects) @@ -1867,7 +1867,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkImage srcImage = %p, VkImageLayout srcImageLayout = %d, VkImage dstImage = %p, VkImageLayout dstImageLayout = %d, uint32_t regionCount = %d, const VkImageResolve* pRegions = %p)", commandBuffer, srcImage.get(), int(srcImageLayout), dstImage.get(), int(dstImageLayout), regionCount, pRegions); - vk::Cast(commandBuffer)->resolveImage(srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions); + vk::Cast(commandBuffer)->resolveImage(vk::Cast(srcImage), srcImageLayout, vk::Cast(dstImage), dstImageLayout, regionCount, pRegions); } VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) @@ -1875,7 +1875,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkEvent event = %p, VkPipelineStageFlags stageMask = %d)", commandBuffer, event.get(), int(stageMask)); - vk::Cast(commandBuffer)->setEvent(event, stageMask); + vk::Cast(commandBuffer)->setEvent(vk::Cast(event), stageMask); } VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask) @@ -1883,7 +1883,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkEvent event = %p, VkPipelineStageFlags stageMask = %d)", commandBuffer, event.get(), int(stageMask)); - vk::Cast(commandBuffer)->resetEvent(event, stageMask); + vk::Cast(commandBuffer)->resetEvent(vk::Cast(event), stageMask); } VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) @@ -1911,7 +1911,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t query = %d, VkQueryControlFlags flags = %d)", commandBuffer, queryPool.get(), query, int(flags)); - vk::Cast(commandBuffer)->beginQuery(queryPool, query, flags); + vk::Cast(commandBuffer)->beginQuery(vk::Cast(queryPool), query, flags); } VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query) @@ -1919,7 +1919,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t query = %d)", commandBuffer, queryPool.get(), int(query)); - vk::Cast(commandBuffer)->endQuery(queryPool, query); + vk::Cast(commandBuffer)->endQuery(vk::Cast(queryPool), query); } VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) @@ -1927,7 +1927,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t firstQuery = %d, uint32_t queryCount = %d)", commandBuffer, queryPool.get(), int(firstQuery), int(queryCount)); - vk::Cast(commandBuffer)->resetQueryPool(queryPool, firstQuery, queryCount); + vk::Cast(commandBuffer)->resetQueryPool(vk::Cast(queryPool), firstQuery, queryCount); } VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query) @@ -1935,7 +1935,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkPipelineStageFlagBits pipelineStage = %d, VkQueryPool queryPool = %p, uint32_t query = %d)", commandBuffer, int(pipelineStage), queryPool.get(), int(query)); - vk::Cast(commandBuffer)->writeTimestamp(pipelineStage, queryPool, query); + vk::Cast(commandBuffer)->writeTimestamp(pipelineStage, vk::Cast(queryPool), query); } VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) @@ -1943,7 +1943,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t firstQuery = %d, uint32_t queryCount = %d, VkBuffer dstBuffer = %p, VkDeviceSize dstOffset = %d, VkDeviceSize stride = %d, VkQueryResultFlags flags = %d)", commandBuffer, queryPool.get(), int(firstQuery), int(queryCount), dstBuffer.get(), int(dstOffset), int(stride), int(flags)); - vk::Cast(commandBuffer)->copyQueryPoolResults(queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags); + vk::Cast(commandBuffer)->copyQueryPoolResults(vk::Cast(queryPool), firstQuery, queryCount, vk::Cast(dstBuffer), dstOffset, stride, flags); } VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues) @@ -1951,7 +1951,7 @@ TRACE("(VkCommandBuffer commandBuffer = %p, VkPipelineLayout layout = %p, VkShaderStageFlags stageFlags = %d, uint32_t offset = %d, uint32_t size = %d, const void* pValues = %p)", commandBuffer, layout.get(), stageFlags, offset, size, pValues); - vk::Cast(commandBuffer)->pushConstants(layout, stageFlags, offset, size, pValues); + vk::Cast(commandBuffer)->pushConstants(vk::Cast(layout), stageFlags, offset, size, pValues); } VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents) @@ -1977,7 +1977,7 @@ renderPassBeginInfo = renderPassBeginInfo->pNext; } - vk::Cast(commandBuffer)->beginRenderPass(pRenderPassBegin->renderPass, pRenderPassBegin->framebuffer, + vk::Cast(commandBuffer)->beginRenderPass(vk::Cast(pRenderPassBegin->renderPass), vk::Cast(pRenderPassBegin->framebuffer), pRenderPassBegin->renderArea, pRenderPassBegin->clearValueCount, pRenderPassBegin->pClearValues, contents); } @@ -2024,7 +2024,7 @@ UNIMPLEMENTED("pBindInfos[%d].pNext", i); } - vk::Cast(pBindInfos[i].buffer)->bind(pBindInfos[i].memory, pBindInfos[i].memoryOffset); + vk::Cast(pBindInfos[i].buffer)->bind(vk::Cast(pBindInfos[i].memory), pBindInfos[i].memoryOffset); } return VK_SUCCESS; @@ -2042,7 +2042,7 @@ UNIMPLEMENTED("pBindInfos[%d].pNext", i); } - vk::Cast(pBindInfos[i].image)->bind(pBindInfos[i].memory, pBindInfos[i].memoryOffset); + vk::Cast(pBindInfos[i].image)->bind(vk::Cast(pBindInfos[i].memory), pBindInfos[i].memoryOffset); } return VK_SUCCESS; @@ -2659,7 +2659,8 @@ return status; } - status = vk::Cast(*pSwapchain)->createImages(device, pCreateInfo); + auto swapchain = vk::Cast(*pSwapchain); + status = swapchain->createImages(device, pCreateInfo); if(status != VK_SUCCESS) { @@ -2667,7 +2668,7 @@ return status; } - vk::Cast(pCreateInfo->surface)->associateSwapchain(*pSwapchain); + vk::Cast(pCreateInfo->surface)->associateSwapchain(swapchain); return VK_SUCCESS; } @@ -2699,7 +2700,7 @@ TRACE("(VkDevice device = %p, VkSwapchainKHR swapchain = %p, uint64_t timeout = %d, VkSemaphore semaphore = %p, VkFence fence = %p, uint32_t* pImageIndex = %p)", device, swapchain.get(), int(timeout), semaphore.get(), fence.get(), pImageIndex); - return vk::Cast(swapchain)->getNextImage(timeout, semaphore, fence, pImageIndex); + return vk::Cast(swapchain)->getNextImage(timeout, vk::Cast(semaphore), vk::Cast(fence), pImageIndex); } VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo)
diff --git a/src/WSI/VkSurfaceKHR.cpp b/src/WSI/VkSurfaceKHR.cpp index 74c0e40..f6019db 100644 --- a/src/WSI/VkSurfaceKHR.cpp +++ b/src/WSI/VkSurfaceKHR.cpp
@@ -169,9 +169,9 @@ return VK_SUCCESS; } -void SurfaceKHR::associateSwapchain(VkSwapchainKHR swapchain) +void SurfaceKHR::associateSwapchain(SwapchainKHR* swapchain) { - associatedSwapchain = Cast(swapchain); + associatedSwapchain = swapchain; } void SurfaceKHR::disassociateSwapchain()
diff --git a/src/WSI/VkSurfaceKHR.hpp b/src/WSI/VkSurfaceKHR.hpp index 7fb1591..9a2f3ff 100644 --- a/src/WSI/VkSurfaceKHR.hpp +++ b/src/WSI/VkSurfaceKHR.hpp
@@ -83,7 +83,7 @@ virtual void detachImage(PresentImage* image) = 0; virtual void present(PresentImage* image) = 0; - void associateSwapchain(VkSwapchainKHR swapchain); + void associateSwapchain(SwapchainKHR* swapchain); void disassociateSwapchain(); bool hasAssociatedSwapchain();
diff --git a/src/WSI/VkSwapchainKHR.cpp b/src/WSI/VkSwapchainKHR.cpp index d265141..0ca781d 100644 --- a/src/WSI/VkSwapchainKHR.cpp +++ b/src/WSI/VkSwapchainKHR.cpp
@@ -171,7 +171,7 @@ return VK_SUCCESS; } -VkResult SwapchainKHR::getNextImage(uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t *pImageIndex) +VkResult SwapchainKHR::getNextImage(uint64_t timeout, Semaphore* semaphore, Fence* fence, uint32_t *pImageIndex) { for(uint32_t i = 0; i < imageCount; i++) { @@ -183,12 +183,12 @@ if(semaphore) { - vk::Cast(semaphore)->signal(); + semaphore->signal(); } if(fence) { - vk::Cast(fence)->complete(); + fence->complete(); } return VK_SUCCESS;
diff --git a/src/WSI/VkSwapchainKHR.hpp b/src/WSI/VkSwapchainKHR.hpp index d9fc725..4ae8446 100644 --- a/src/WSI/VkSwapchainKHR.hpp +++ b/src/WSI/VkSwapchainKHR.hpp
@@ -25,6 +25,9 @@ namespace vk { +class Fence; +class Semaphore; + class SwapchainKHR : public Object<SwapchainKHR, VkSwapchainKHR> { public: @@ -41,7 +44,7 @@ uint32_t getImageCount() const; VkResult getImages(uint32_t *pSwapchainImageCount, VkImage *pSwapchainImages) const; - VkResult getNextImage(uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex); + VkResult getNextImage(uint64_t timeout, Semaphore* semaphore, Fence* fence, uint32_t* pImageIndex); void present(uint32_t index);