Commit 7d96f51a by Alexis Hetu Committed by Alexis Hétu

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: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 26621d54
...@@ -68,9 +68,9 @@ const VkMemoryRequirements Buffer::getMemoryRequirements() const ...@@ -68,9 +68,9 @@ const VkMemoryRequirements Buffer::getMemoryRequirements() const
return memoryRequirements; 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) void Buffer::copyFrom(const void* srcMemory, VkDeviceSize pSize, VkDeviceSize pOffset)
......
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
namespace vk namespace vk
{ {
class DeviceMemory;
class Buffer : public Object<Buffer, VkBuffer> class Buffer : public Object<Buffer, VkBuffer>
{ {
public: public:
...@@ -29,7 +31,7 @@ public: ...@@ -29,7 +31,7 @@ public:
static size_t ComputeRequiredAllocationSize(const VkBufferCreateInfo* pCreateInfo); static size_t ComputeRequiredAllocationSize(const VkBufferCreateInfo* pCreateInfo);
const VkMemoryRequirements getMemoryRequirements() const; 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 copyFrom(const void* srcMemory, VkDeviceSize size, VkDeviceSize offset);
void copyTo(void* dstMemory, VkDeviceSize size, VkDeviceSize offset) const; void copyTo(void* dstMemory, VkDeviceSize size, VkDeviceSize offset) const;
void copyTo(Buffer* dstBuffer, const VkBufferCopy& pRegion) const; void copyTo(Buffer* dstBuffer, const VkBufferCopy& pRegion) const;
......
...@@ -20,11 +20,11 @@ namespace vk ...@@ -20,11 +20,11 @@ namespace vk
{ {
BufferView::BufferView(const VkBufferViewCreateInfo* pCreateInfo, void* mem) : 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) if (pCreateInfo->range == VK_WHOLE_SIZE)
{ {
range = Cast(pCreateInfo->buffer)->getSize() - offset; range = buffer->getSize() - offset;
} }
else else
{ {
...@@ -34,7 +34,7 @@ BufferView::BufferView(const VkBufferViewCreateInfo* pCreateInfo, void* mem) : ...@@ -34,7 +34,7 @@ BufferView::BufferView(const VkBufferViewCreateInfo* pCreateInfo, void* mem) :
void * BufferView::getPointer() const void * BufferView::getPointer() const
{ {
return Cast(buffer)->getOffsetPointer(offset); return buffer->getOffsetPointer(offset);
} }
} }
\ No newline at end of file
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
namespace vk namespace vk
{ {
class Buffer;
class BufferView : public Object<BufferView, VkBufferView> class BufferView : public Object<BufferView, VkBufferView>
{ {
public: public:
...@@ -39,7 +41,7 @@ public: ...@@ -39,7 +41,7 @@ public:
const uint32_t id = ImageView::nextID++; // ID space for sampling function cache, shared with imageviews const uint32_t id = ImageView::nextID++; // ID space for sampling function cache, shared with imageviews
private: private:
VkBuffer buffer; Buffer *buffer;
VkFormat format; VkFormat format;
VkDeviceSize offset; VkDeviceSize offset;
VkDeviceSize range; VkDeviceSize range;
......
...@@ -41,9 +41,9 @@ public: ...@@ -41,9 +41,9 @@ public:
class BeginRenderPass : public CommandBuffer::Command class BeginRenderPass : public CommandBuffer::Command
{ {
public: public:
BeginRenderPass(VkRenderPass renderPass, VkFramebuffer framebuffer, VkRect2D renderArea, BeginRenderPass(RenderPass* renderPass, Framebuffer* framebuffer, VkRect2D renderArea,
uint32_t clearValueCount, const VkClearValue* pClearValues) : uint32_t clearValueCount, const VkClearValue* pClearValues) :
renderPass(Cast(renderPass)), framebuffer(Cast(framebuffer)), renderArea(renderArea), renderPass(renderPass), framebuffer(framebuffer), renderArea(renderArea),
clearValueCount(clearValueCount) clearValueCount(clearValueCount)
{ {
// FIXME (b/119409619): use an allocator here so we can control all memory allocations // FIXME (b/119409619): use an allocator here so we can control all memory allocations
...@@ -125,7 +125,7 @@ protected: ...@@ -125,7 +125,7 @@ protected:
class ExecuteCommands : public CommandBuffer::Command class ExecuteCommands : public CommandBuffer::Command
{ {
public: public:
ExecuteCommands(const VkCommandBuffer& commandBuffer) : commandBuffer(Cast(commandBuffer)) ExecuteCommands(const CommandBuffer* commandBuffer) : commandBuffer(commandBuffer)
{ {
} }
...@@ -142,8 +142,8 @@ private: ...@@ -142,8 +142,8 @@ private:
class PipelineBind : public CommandBuffer::Command class PipelineBind : public CommandBuffer::Command
{ {
public: public:
PipelineBind(VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) : PipelineBind(VkPipelineBindPoint pipelineBindPoint, Pipeline* pipeline) :
pipelineBindPoint(pipelineBindPoint), pipeline(Cast(pipeline)) pipelineBindPoint(pipelineBindPoint), pipeline(pipeline)
{ {
} }
...@@ -192,8 +192,8 @@ private: ...@@ -192,8 +192,8 @@ private:
class DispatchIndirect : public CommandBuffer::Command class DispatchIndirect : public CommandBuffer::Command
{ {
public: public:
DispatchIndirect(VkBuffer buffer, VkDeviceSize offset) : DispatchIndirect(Buffer* buffer, VkDeviceSize offset) :
buffer(Cast(buffer)), offset(offset) buffer(buffer), offset(offset)
{ {
} }
...@@ -218,8 +218,8 @@ private: ...@@ -218,8 +218,8 @@ private:
struct VertexBufferBind : public CommandBuffer::Command struct VertexBufferBind : public CommandBuffer::Command
{ {
VertexBufferBind(uint32_t binding, const VkBuffer buffer, const VkDeviceSize offset) : VertexBufferBind(uint32_t binding, Buffer* buffer, const VkDeviceSize offset) :
binding(binding), buffer(Cast(buffer)), offset(offset) binding(binding), buffer(buffer), offset(offset)
{ {
} }
...@@ -236,8 +236,8 @@ private: ...@@ -236,8 +236,8 @@ private:
struct IndexBufferBind : public CommandBuffer::Command struct IndexBufferBind : public CommandBuffer::Command
{ {
IndexBufferBind(const VkBuffer buffer, const VkDeviceSize offset, const VkIndexType indexType) : IndexBufferBind(Buffer* buffer, const VkDeviceSize offset, const VkIndexType indexType) :
buffer(Cast(buffer)), offset(offset), indexType(indexType) buffer(buffer), offset(offset), indexType(indexType)
{ {
} }
...@@ -655,8 +655,8 @@ private: ...@@ -655,8 +655,8 @@ private:
struct DrawIndirect : public DrawBase struct DrawIndirect : public DrawBase
{ {
DrawIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) DrawIndirect(Buffer* buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
: buffer(Cast(buffer)), offset(offset), drawCount(drawCount), stride(stride) : buffer(buffer), offset(offset), drawCount(drawCount), stride(stride)
{ {
} }
...@@ -678,8 +678,8 @@ private: ...@@ -678,8 +678,8 @@ private:
struct DrawIndexedIndirect : public DrawBase struct DrawIndexedIndirect : public DrawBase
{ {
DrawIndexedIndirect(VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride) DrawIndexedIndirect(Buffer* buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
: buffer(Cast(buffer)), offset(offset), drawCount(drawCount), stride(stride) : buffer(buffer), offset(offset), drawCount(drawCount), stride(stride)
{ {
} }
...@@ -701,8 +701,8 @@ private: ...@@ -701,8 +701,8 @@ private:
struct ImageToImageCopy : public CommandBuffer::Command struct ImageToImageCopy : public CommandBuffer::Command
{ {
ImageToImageCopy(VkImage srcImage, VkImage dstImage, const VkImageCopy& region) : ImageToImageCopy(const Image* srcImage, Image* dstImage, const VkImageCopy& region) :
srcImage(Cast(srcImage)), dstImage(Cast(dstImage)), region(region) srcImage(srcImage), dstImage(dstImage), region(region)
{ {
} }
...@@ -712,15 +712,15 @@ struct ImageToImageCopy : public CommandBuffer::Command ...@@ -712,15 +712,15 @@ struct ImageToImageCopy : public CommandBuffer::Command
} }
private: private:
Image* srcImage; const Image* srcImage;
Image* dstImage; Image* dstImage;
const VkImageCopy region; const VkImageCopy region;
}; };
struct BufferToBufferCopy : public CommandBuffer::Command struct BufferToBufferCopy : public CommandBuffer::Command
{ {
BufferToBufferCopy(VkBuffer srcBuffer, VkBuffer dstBuffer, const VkBufferCopy& region) : BufferToBufferCopy(const Buffer* srcBuffer, Buffer* dstBuffer, const VkBufferCopy& region) :
srcBuffer(Cast(srcBuffer)), dstBuffer(Cast(dstBuffer)), region(region) srcBuffer(srcBuffer), dstBuffer(dstBuffer), region(region)
{ {
} }
...@@ -730,15 +730,15 @@ struct BufferToBufferCopy : public CommandBuffer::Command ...@@ -730,15 +730,15 @@ struct BufferToBufferCopy : public CommandBuffer::Command
} }
private: private:
Buffer* srcBuffer; const Buffer* srcBuffer;
Buffer* dstBuffer; Buffer* dstBuffer;
const VkBufferCopy region; const VkBufferCopy region;
}; };
struct ImageToBufferCopy : public CommandBuffer::Command struct ImageToBufferCopy : public CommandBuffer::Command
{ {
ImageToBufferCopy(VkImage srcImage, VkBuffer dstBuffer, const VkBufferImageCopy& region) : ImageToBufferCopy(Image* srcImage, Buffer* dstBuffer, const VkBufferImageCopy& region) :
srcImage(Cast(srcImage)), dstBuffer(Cast(dstBuffer)), region(region) srcImage(srcImage), dstBuffer(dstBuffer), region(region)
{ {
} }
...@@ -755,8 +755,8 @@ private: ...@@ -755,8 +755,8 @@ private:
struct BufferToImageCopy : public CommandBuffer::Command struct BufferToImageCopy : public CommandBuffer::Command
{ {
BufferToImageCopy(VkBuffer srcBuffer, VkImage dstImage, const VkBufferImageCopy& region) : BufferToImageCopy(Buffer* srcBuffer, Image* dstImage, const VkBufferImageCopy& region) :
srcBuffer(Cast(srcBuffer)), dstImage(Cast(dstImage)), region(region) srcBuffer(srcBuffer), dstImage(dstImage), region(region)
{ {
} }
...@@ -773,8 +773,8 @@ private: ...@@ -773,8 +773,8 @@ private:
struct FillBuffer : public CommandBuffer::Command struct FillBuffer : public CommandBuffer::Command
{ {
FillBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) : FillBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data) :
dstBuffer(Cast(dstBuffer)), dstOffset(dstOffset), size(size), data(data) dstBuffer(dstBuffer), dstOffset(dstOffset), size(size), data(data)
{ {
} }
...@@ -792,8 +792,8 @@ private: ...@@ -792,8 +792,8 @@ private:
struct UpdateBuffer : public CommandBuffer::Command struct UpdateBuffer : public CommandBuffer::Command
{ {
UpdateBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint8_t* pData) : UpdateBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint8_t* pData) :
dstBuffer(Cast(dstBuffer)), dstOffset(dstOffset), data(pData, &pData[dataSize]) dstBuffer(dstBuffer), dstOffset(dstOffset), data(pData, &pData[dataSize])
{ {
} }
...@@ -810,8 +810,8 @@ private: ...@@ -810,8 +810,8 @@ private:
struct ClearColorImage : public CommandBuffer::Command struct ClearColorImage : public CommandBuffer::Command
{ {
ClearColorImage(VkImage image, const VkClearColorValue& color, const VkImageSubresourceRange& range) : ClearColorImage(Image* image, const VkClearColorValue& color, const VkImageSubresourceRange& range) :
image(Cast(image)), color(color), range(range) image(image), color(color), range(range)
{ {
} }
...@@ -828,8 +828,8 @@ private: ...@@ -828,8 +828,8 @@ private:
struct ClearDepthStencilImage : public CommandBuffer::Command struct ClearDepthStencilImage : public CommandBuffer::Command
{ {
ClearDepthStencilImage(VkImage image, const VkClearDepthStencilValue& depthStencil, const VkImageSubresourceRange& range) : ClearDepthStencilImage(Image* image, const VkClearDepthStencilValue& depthStencil, const VkImageSubresourceRange& range) :
image(Cast(image)), depthStencil(depthStencil), range(range) image(image), depthStencil(depthStencil), range(range)
{ {
} }
...@@ -867,8 +867,8 @@ private: ...@@ -867,8 +867,8 @@ private:
struct BlitImage : public CommandBuffer::Command struct BlitImage : public CommandBuffer::Command
{ {
BlitImage(VkImage srcImage, VkImage dstImage, const VkImageBlit& region, VkFilter filter) : BlitImage(const Image* srcImage, Image* dstImage, const VkImageBlit& region, VkFilter filter) :
srcImage(Cast(srcImage)), dstImage(Cast(dstImage)), region(region), filter(filter) srcImage(srcImage), dstImage(dstImage), region(region), filter(filter)
{ {
} }
...@@ -886,8 +886,8 @@ private: ...@@ -886,8 +886,8 @@ private:
struct ResolveImage : public CommandBuffer::Command struct ResolveImage : public CommandBuffer::Command
{ {
ResolveImage(VkImage srcImage, VkImage dstImage, const VkImageResolve& region) : ResolveImage(const Image* srcImage, Image* dstImage, const VkImageResolve& region) :
srcImage(Cast(srcImage)), dstImage(Cast(dstImage)), region(region) srcImage(srcImage), dstImage(dstImage), region(region)
{ {
} }
...@@ -925,7 +925,7 @@ private: ...@@ -925,7 +925,7 @@ private:
struct SignalEvent : public CommandBuffer::Command 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 @@ private: ...@@ -942,7 +942,7 @@ private:
struct ResetEvent : public CommandBuffer::Command 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 @@ private: ...@@ -958,7 +958,7 @@ private:
struct WaitEvent : public CommandBuffer::Command struct WaitEvent : public CommandBuffer::Command
{ {
WaitEvent(VkEvent ev) : ev(Cast(ev)) WaitEvent(Event* ev) : ev(ev)
{ {
} }
...@@ -974,7 +974,7 @@ private: ...@@ -974,7 +974,7 @@ private:
struct BindDescriptorSet : public CommandBuffer::Command 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) uint32_t dynamicOffsetCount, uint32_t const *dynamicOffsets)
: pipelineBindPoint(pipelineBindPoint), pipelineLayout(pipelineLayout), set(set), descriptorSet(descriptorSet), : pipelineBindPoint(pipelineBindPoint), pipelineLayout(pipelineLayout), set(set), descriptorSet(descriptorSet),
dynamicOffsetCount(dynamicOffsetCount) dynamicOffsetCount(dynamicOffsetCount)
...@@ -992,7 +992,7 @@ struct BindDescriptorSet : public CommandBuffer::Command ...@@ -992,7 +992,7 @@ struct BindDescriptorSet : public CommandBuffer::Command
auto dynamicOffsetBase = pipelineLayout->getDynamicOffsetBase(set); auto dynamicOffsetBase = pipelineLayout->getDynamicOffsetBase(set);
ASSERT_OR_RETURN(dynamicOffsetBase + dynamicOffsetCount <= MAX_DESCRIPTOR_SET_COMBINED_BUFFERS_DYNAMIC); 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++) for (uint32_t i = 0; i < dynamicOffsetCount; i++)
{ {
pipelineState.descriptorDynamicOffsets[dynamicOffsetBase + i] = dynamicOffsets[i]; pipelineState.descriptorDynamicOffsets[dynamicOffsetBase + i] = dynamicOffsets[i];
...@@ -1001,9 +1001,9 @@ struct BindDescriptorSet : public CommandBuffer::Command ...@@ -1001,9 +1001,9 @@ struct BindDescriptorSet : public CommandBuffer::Command
private: private:
VkPipelineBindPoint pipelineBindPoint; VkPipelineBindPoint pipelineBindPoint;
PipelineLayout *pipelineLayout; const PipelineLayout *pipelineLayout;
uint32_t set; uint32_t set;
const VkDescriptorSet descriptorSet; vk::DescriptorSet* descriptorSet;
uint32_t dynamicOffsetCount; uint32_t dynamicOffsetCount;
DescriptorSet::DynamicOffsets dynamicOffsets; DescriptorSet::DynamicOffsets dynamicOffsets;
}; };
...@@ -1032,8 +1032,8 @@ private: ...@@ -1032,8 +1032,8 @@ private:
struct BeginQuery : public CommandBuffer::Command struct BeginQuery : public CommandBuffer::Command
{ {
BeginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags) BeginQuery(QueryPool* queryPool, uint32_t query, VkQueryControlFlags flags)
: queryPool(Cast(queryPool)), query(query), flags(flags) : queryPool(queryPool), query(query), flags(flags)
{ {
} }
...@@ -1051,8 +1051,8 @@ private: ...@@ -1051,8 +1051,8 @@ private:
struct EndQuery : public CommandBuffer::Command struct EndQuery : public CommandBuffer::Command
{ {
EndQuery(VkQueryPool queryPool, uint32_t query) EndQuery(QueryPool* queryPool, uint32_t query)
: queryPool(Cast(queryPool)), query(query) : queryPool(queryPool), query(query)
{ {
} }
...@@ -1069,8 +1069,8 @@ private: ...@@ -1069,8 +1069,8 @@ private:
struct ResetQueryPool : public CommandBuffer::Command struct ResetQueryPool : public CommandBuffer::Command
{ {
ResetQueryPool(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount) ResetQueryPool(QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount)
: queryPool(Cast(queryPool)), firstQuery(firstQuery), queryCount(queryCount) : queryPool(queryPool), firstQuery(firstQuery), queryCount(queryCount)
{ {
} }
...@@ -1087,8 +1087,8 @@ private: ...@@ -1087,8 +1087,8 @@ private:
struct WriteTimeStamp : public CommandBuffer::Command struct WriteTimeStamp : public CommandBuffer::Command
{ {
WriteTimeStamp(VkQueryPool queryPool, uint32_t query) WriteTimeStamp(QueryPool* queryPool, uint32_t query)
: queryPool(Cast(queryPool)), query(query) : queryPool(queryPool), query(query)
{ {
} }
...@@ -1104,25 +1104,24 @@ private: ...@@ -1104,25 +1104,24 @@ private:
struct CopyQueryPoolResults : public CommandBuffer::Command struct CopyQueryPoolResults : public CommandBuffer::Command
{ {
CopyQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, CopyQueryPoolResults(const QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount,
VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags)
: queryPool(Cast(queryPool)), firstQuery(firstQuery), queryCount(queryCount), : queryPool(queryPool), firstQuery(firstQuery), queryCount(queryCount),
dstBuffer(dstBuffer), dstOffset(dstOffset), stride(stride), flags(flags) dstBuffer(dstBuffer), dstOffset(dstOffset), stride(stride), flags(flags)
{ {
} }
void play(CommandBuffer::ExecutionState& executionState) void play(CommandBuffer::ExecutionState& executionState)
{ {
vk::Buffer* buffer = Cast(dstBuffer); queryPool->getResults(firstQuery, queryCount, dstBuffer->getSize() - dstOffset,
queryPool->getResults(firstQuery, queryCount, buffer->getSize() - dstOffset, dstBuffer->getOffsetPointer(dstOffset), stride, flags);
buffer->getOffsetPointer(dstOffset), stride, flags);
} }
private: private:
QueryPool* queryPool; const QueryPool* queryPool;
uint32_t firstQuery; uint32_t firstQuery;
uint32_t queryCount; uint32_t queryCount;
VkBuffer dstBuffer; Buffer* dstBuffer;
VkDeviceSize dstOffset; VkDeviceSize dstOffset;
VkDeviceSize stride; VkDeviceSize stride;
VkQueryResultFlags flags; VkQueryResultFlags flags;
...@@ -1194,7 +1193,7 @@ void CommandBuffer::addCommand(Args&&... args) ...@@ -1194,7 +1193,7 @@ void CommandBuffer::addCommand(Args&&... args)
commands->push_back(std::unique_ptr<T>(new T(std::forward<Args>(args)...))); 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) uint32_t clearValueCount, const VkClearValue* clearValues, VkSubpassContents contents)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
...@@ -1220,7 +1219,7 @@ void CommandBuffer::executeCommands(uint32_t commandBufferCount, const VkCommand ...@@ -1220,7 +1219,7 @@ void CommandBuffer::executeCommands(uint32_t commandBufferCount, const VkCommand
for(uint32_t i = 0; i < commandBufferCount; ++i) for(uint32_t i = 0; i < commandBufferCount; ++i)
{ {
addCommand<ExecuteCommands>(pCommandBuffers[i]); addCommand<ExecuteCommands>(vk::Cast(pCommandBuffers[i]));
} }
} }
...@@ -1244,7 +1243,7 @@ void CommandBuffer::pipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelin ...@@ -1244,7 +1243,7 @@ void CommandBuffer::pipelineBarrier(VkPipelineStageFlags srcStageMask, VkPipelin
addCommand<PipelineBarrier>(); addCommand<PipelineBarrier>();
} }
void CommandBuffer::bindPipeline(VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) void CommandBuffer::bindPipeline(VkPipelineBindPoint pipelineBindPoint, Pipeline* pipeline)
{ {
switch(pipelineBindPoint) switch(pipelineBindPoint)
{ {
...@@ -1262,37 +1261,37 @@ void CommandBuffer::bindVertexBuffers(uint32_t firstBinding, uint32_t bindingCou ...@@ -1262,37 +1261,37 @@ void CommandBuffer::bindVertexBuffers(uint32_t firstBinding, uint32_t bindingCou
{ {
for(uint32_t i = 0; i < bindingCount; ++i) 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); 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); 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); 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); addCommand<WriteTimeStamp>(queryPool, query);
} }
void CommandBuffer::copyQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, void CommandBuffer::copyQueryPoolResults(const QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount,
VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags) Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags)
{ {
addCommand<CopyQueryPoolResults>(queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, 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) uint32_t offset, uint32_t size, const void* pValues)
{ {
addCommand<SetPushConstants>(offset, size, pValues); addCommand<SetPushConstants>(offset, size, pValues);
...@@ -1369,7 +1368,7 @@ void CommandBuffer::setStencilReference(VkStencilFaceFlags faceMask, uint32_t re ...@@ -1369,7 +1368,7 @@ void CommandBuffer::setStencilReference(VkStencilFaceFlags faceMask, uint32_t re
addCommand<SetStencilReference>(faceMask, reference); 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 firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets,
uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets)
{ {
...@@ -1378,7 +1377,6 @@ void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, Vk ...@@ -1378,7 +1377,6 @@ void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, Vk
for(uint32_t i = 0; i < descriptorSetCount; i++) for(uint32_t i = 0; i < descriptorSetCount; i++)
{ {
auto descriptorSetIndex = firstSet + i; auto descriptorSetIndex = firstSet + i;
auto layout = vk::Cast(vkLayout);
auto setLayout = layout->getDescriptorSetLayout(descriptorSetIndex); auto setLayout = layout->getDescriptorSetLayout(descriptorSetIndex);
auto numDynamicDescriptors = setLayout->getDynamicDescriptorCount(); auto numDynamicDescriptors = setLayout->getDynamicDescriptorCount();
...@@ -1386,7 +1384,7 @@ void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, Vk ...@@ -1386,7 +1384,7 @@ void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, Vk
ASSERT(dynamicOffsetCount >= numDynamicDescriptors); ASSERT(dynamicOffsetCount >= numDynamicDescriptors);
addCommand<BindDescriptorSet>( addCommand<BindDescriptorSet>(
pipelineBindPoint, layout, descriptorSetIndex, pDescriptorSets[i], pipelineBindPoint, layout, descriptorSetIndex, Cast(pDescriptorSets[i]),
dynamicOffsetCount, pDynamicOffsets); dynamicOffsetCount, pDynamicOffsets);
pDynamicOffsets += numDynamicDescriptors; pDynamicOffsets += numDynamicDescriptors;
...@@ -1394,7 +1392,7 @@ void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, Vk ...@@ -1394,7 +1392,7 @@ void CommandBuffer::bindDescriptorSets(VkPipelineBindPoint pipelineBindPoint, Vk
} }
} }
void CommandBuffer::bindIndexBuffer(VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) void CommandBuffer::bindIndexBuffer(Buffer* buffer, VkDeviceSize offset, VkIndexType indexType)
{ {
addCommand<IndexBufferBind>(buffer, offset, indexType); addCommand<IndexBufferBind>(buffer, offset, indexType);
} }
...@@ -1404,12 +1402,12 @@ void CommandBuffer::dispatch(uint32_t groupCountX, uint32_t groupCountY, uint32_ ...@@ -1404,12 +1402,12 @@ void CommandBuffer::dispatch(uint32_t groupCountX, uint32_t groupCountY, uint32_
addCommand<Dispatch>(0, 0, 0, groupCountX, groupCountY, groupCountZ); 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); 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); ASSERT(state == RECORDING);
...@@ -1419,7 +1417,7 @@ void CommandBuffer::copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t ...@@ -1419,7 +1417,7 @@ void CommandBuffer::copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t
} }
} }
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) uint32_t regionCount, const VkImageCopy* pRegions)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
...@@ -1434,7 +1432,7 @@ void CommandBuffer::copyImage(VkImage srcImage, VkImageLayout srcImageLayout, Vk ...@@ -1434,7 +1432,7 @@ void CommandBuffer::copyImage(VkImage srcImage, VkImageLayout srcImageLayout, Vk
} }
} }
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) uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
...@@ -1449,7 +1447,7 @@ void CommandBuffer::blitImage(VkImage srcImage, VkImageLayout srcImageLayout, Vk ...@@ -1449,7 +1447,7 @@ void CommandBuffer::blitImage(VkImage srcImage, VkImageLayout srcImageLayout, Vk
} }
} }
void CommandBuffer::copyBufferToImage(VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, void CommandBuffer::copyBufferToImage(Buffer* srcBuffer, Image* dstImage, VkImageLayout dstImageLayout,
uint32_t regionCount, const VkBufferImageCopy* pRegions) uint32_t regionCount, const VkBufferImageCopy* pRegions)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
...@@ -1460,7 +1458,7 @@ void CommandBuffer::copyBufferToImage(VkBuffer srcBuffer, VkImage dstImage, VkIm ...@@ -1460,7 +1458,7 @@ void CommandBuffer::copyBufferToImage(VkBuffer srcBuffer, VkImage dstImage, VkIm
} }
} }
void CommandBuffer::copyImageToBuffer(VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, void CommandBuffer::copyImageToBuffer(Image* srcImage, VkImageLayout srcImageLayout, Buffer* dstBuffer,
uint32_t regionCount, const VkBufferImageCopy* pRegions) uint32_t regionCount, const VkBufferImageCopy* pRegions)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
...@@ -1472,21 +1470,21 @@ void CommandBuffer::copyImageToBuffer(VkImage srcImage, VkImageLayout srcImageLa ...@@ -1472,21 +1470,21 @@ void CommandBuffer::copyImageToBuffer(VkImage srcImage, VkImageLayout srcImageLa
} }
} }
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); ASSERT(state == RECORDING);
addCommand<UpdateBuffer>(dstBuffer, dstOffset, dataSize, reinterpret_cast<const uint8_t*>(pData)); 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); ASSERT(state == RECORDING);
addCommand<FillBuffer>(dstBuffer, dstOffset, size, data); 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) uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
...@@ -1497,7 +1495,7 @@ void CommandBuffer::clearColorImage(VkImage image, VkImageLayout imageLayout, co ...@@ -1497,7 +1495,7 @@ void CommandBuffer::clearColorImage(VkImage image, VkImageLayout imageLayout, co
} }
} }
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) uint32_t rangeCount, const VkImageSubresourceRange* pRanges)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
...@@ -1522,7 +1520,7 @@ void CommandBuffer::clearAttachments(uint32_t attachmentCount, const VkClearAtta ...@@ -1522,7 +1520,7 @@ void CommandBuffer::clearAttachments(uint32_t attachmentCount, const VkClearAtta
} }
} }
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) uint32_t regionCount, const VkImageResolve* pRegions)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
...@@ -1537,14 +1535,14 @@ void CommandBuffer::resolveImage(VkImage srcImage, VkImageLayout srcImageLayout, ...@@ -1537,14 +1535,14 @@ void CommandBuffer::resolveImage(VkImage srcImage, VkImageLayout srcImageLayout,
} }
} }
void CommandBuffer::setEvent(VkEvent event, VkPipelineStageFlags stageMask) void CommandBuffer::setEvent(Event* event, VkPipelineStageFlags stageMask)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
addCommand<SignalEvent>(event, stageMask); addCommand<SignalEvent>(event, stageMask);
} }
void CommandBuffer::resetEvent(VkEvent event, VkPipelineStageFlags stageMask) void CommandBuffer::resetEvent(Event* event, VkPipelineStageFlags stageMask)
{ {
ASSERT(state == RECORDING); ASSERT(state == RECORDING);
...@@ -1563,7 +1561,7 @@ void CommandBuffer::waitEvents(uint32_t eventCount, const VkEvent* pEvents, VkPi ...@@ -1563,7 +1561,7 @@ void CommandBuffer::waitEvents(uint32_t eventCount, const VkEvent* pEvents, VkPi
// Note: srcStageMask and dstStageMask are currently ignored // Note: srcStageMask and dstStageMask are currently ignored
for(uint32_t i = 0; i < eventCount; i++) for(uint32_t i = 0; i < eventCount; i++)
{ {
addCommand<WaitEvent>(pEvents[i]); addCommand<WaitEvent>(vk::Cast(pEvents[i]));
} }
} }
...@@ -1577,12 +1575,12 @@ void CommandBuffer::drawIndexed(uint32_t indexCount, uint32_t instanceCount, uin ...@@ -1577,12 +1575,12 @@ void CommandBuffer::drawIndexed(uint32_t indexCount, uint32_t instanceCount, uin
addCommand<DrawIndexed>(indexCount, instanceCount, firstIndex, vertexOffset, firstInstance); 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); 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); addCommand<DrawIndexedIndirect>(buffer, offset, drawCount, stride);
} }
......
...@@ -34,8 +34,12 @@ namespace vk ...@@ -34,8 +34,12 @@ namespace vk
{ {
class Buffer; class Buffer;
class Event;
class Framebuffer; class Framebuffer;
class Image;
class Pipeline; class Pipeline;
class PipelineLayout;
class QueryPool;
class RenderPass; class RenderPass;
class CommandBuffer class CommandBuffer
...@@ -51,7 +55,7 @@ public: ...@@ -51,7 +55,7 @@ public:
VkResult end(); VkResult end();
VkResult reset(VkCommandPoolResetFlags flags); 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); uint32_t clearValueCount, const VkClearValue* pClearValues, VkSubpassContents contents);
void nextSubpass(VkSubpassContents contents); void nextSubpass(VkSubpassContents contents);
void endRenderPass(); void endRenderPass();
...@@ -65,17 +69,17 @@ public: ...@@ -65,17 +69,17 @@ public:
uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers,
uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers,
uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); 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, void bindVertexBuffers(uint32_t firstBinding, uint32_t bindingCount,
const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
void beginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags); void beginQuery(QueryPool* queryPool, uint32_t query, VkQueryControlFlags flags);
void endQuery(VkQueryPool queryPool, uint32_t query); void endQuery(QueryPool* queryPool, uint32_t query);
void resetQueryPool(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); void resetQueryPool(QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount);
void writeTimestamp(VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query); void writeTimestamp(VkPipelineStageFlagBits pipelineStage, QueryPool* queryPool, uint32_t query);
void copyQueryPoolResults(VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, void copyQueryPoolResults(const QueryPool* queryPool, uint32_t firstQuery, uint32_t queryCount,
VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
void pushConstants(VkPipelineLayout layout, VkShaderStageFlags stageFlags, void pushConstants(PipelineLayout* layout, VkShaderStageFlags stageFlags,
uint32_t offset, uint32_t size, const void* pValues); uint32_t offset, uint32_t size, const void* pValues);
void setViewport(uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports); void setViewport(uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
...@@ -87,33 +91,33 @@ public: ...@@ -87,33 +91,33 @@ public:
void setStencilCompareMask(VkStencilFaceFlags faceMask, uint32_t compareMask); void setStencilCompareMask(VkStencilFaceFlags faceMask, uint32_t compareMask);
void setStencilWriteMask(VkStencilFaceFlags faceMask, uint32_t writeMask); void setStencilWriteMask(VkStencilFaceFlags faceMask, uint32_t writeMask);
void setStencilReference(VkStencilFaceFlags faceMask, uint32_t reference); 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 firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets,
uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets); 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 dispatch(uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
void dispatchIndirect(VkBuffer buffer, VkDeviceSize offset); void dispatchIndirect(Buffer* buffer, VkDeviceSize offset);
void copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions); void copyBuffer(const Buffer* srcBuffer, Buffer* dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
void copyImage(VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, void copyImage(const Image* srcImage, VkImageLayout srcImageLayout, Image* dstImage, VkImageLayout dstImageLayout,
uint32_t regionCount, const VkImageCopy* pRegions); 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); 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); 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); uint32_t regionCount, const VkBufferImageCopy* pRegions);
void updateBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData); void updateBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
void fillBuffer(VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); void fillBuffer(Buffer* dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
void clearColorImage(VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, void clearColorImage(Image* image, VkImageLayout imageLayout, const VkClearColorValue* pColor,
uint32_t rangeCount, const VkImageSubresourceRange* pRanges); 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); uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
void clearAttachments(uint32_t attachmentCount, const VkClearAttachment* pAttachments, void clearAttachments(uint32_t attachmentCount, const VkClearAttachment* pAttachments,
uint32_t rectCount, const VkClearRect* pRects); 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); uint32_t regionCount, const VkImageResolve* pRegions);
void setEvent(VkEvent event, VkPipelineStageFlags stageMask); void setEvent(Event* event, VkPipelineStageFlags stageMask);
void resetEvent(VkEvent event, VkPipelineStageFlags stageMask); void resetEvent(Event* event, VkPipelineStageFlags stageMask);
void waitEvents(uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, void waitEvents(uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask,
VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers,
uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers,
...@@ -121,8 +125,8 @@ public: ...@@ -121,8 +125,8 @@ public:
void draw(uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); 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 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 drawIndirect(Buffer* buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
void drawIndexedIndirect(VkBuffer 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) // TODO(sugoi): Move ExecutionState out of CommandBuffer (possibly into Device)
struct ExecutionState struct ExecutionState
......
...@@ -62,7 +62,7 @@ VkResult DescriptorPool::allocateSets(uint32_t descriptorSetCount, const VkDescr ...@@ -62,7 +62,7 @@ VkResult DescriptorPool::allocateSets(uint32_t descriptorSetCount, const VkDescr
{ {
for(uint32_t i = 0; i < descriptorSetCount; i++) for(uint32_t i = 0; i < descriptorSetCount; i++)
{ {
Cast(pSetLayouts[i])->initialize(pDescriptorSets[i]); Cast(pSetLayouts[i])->initialize(vk::Cast(pDescriptorSets[i]));
} }
} }
return result; return result;
......
...@@ -144,10 +144,9 @@ uint32_t DescriptorSetLayout::getBindingIndex(uint32_t binding) const ...@@ -144,10 +144,9 @@ uint32_t DescriptorSetLayout::getBindingIndex(uint32_t binding) const
return 0; 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 // Use a pointer to this descriptor set layout as the descriptor set's header
DescriptorSet* descriptorSet = vk::Cast(vkDescriptorSet);
descriptorSet->header.layout = this; descriptorSet->header.layout = this;
uint8_t* mem = descriptorSet->data; uint8_t* mem = descriptorSet->data;
......
...@@ -84,7 +84,7 @@ public: ...@@ -84,7 +84,7 @@ public:
static void WriteDescriptorSet(DescriptorSet *dstSet, VkDescriptorUpdateTemplateEntry const &entry, char const *src); 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); 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. // Returns the total size of the descriptor set in bytes.
size_t getDescriptorSetAllocationSize() const; size_t getDescriptorSetAllocationSize() const;
......
...@@ -323,7 +323,7 @@ static const std::vector<std::pair<const char*, std::unordered_map<std::string, ...@@ -323,7 +323,7 @@ static const std::vector<std::pair<const char*, std::unordered_map<std::string,
#undef MAKE_VULKAN_DEVICE_ENTRY #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)); auto globalFunction = globalFunctionPointers.find(std::string(pName));
if(globalFunction != globalFunctionPointers.end()) if(globalFunction != globalFunctionPointers.end())
...@@ -331,7 +331,7 @@ PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName) ...@@ -331,7 +331,7 @@ PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName)
return globalFunction->second; return globalFunction->second;
} }
if(instance != VK_NULL_HANDLE) if(instance != nullptr)
{ {
auto instanceFunction = instanceFunctionPointers.find(std::string(pName)); auto instanceFunction = instanceFunctionPointers.find(std::string(pName));
if(instanceFunction != instanceFunctionPointers.end()) if(instanceFunction != instanceFunctionPointers.end())
...@@ -358,7 +358,7 @@ PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName) ...@@ -358,7 +358,7 @@ PFN_vkVoidFunction GetInstanceProcAddr(VkInstance instance, const char* pName)
return nullptr; 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)); auto deviceFunction = deviceFunctionPointers.find(std::string(pName));
if(deviceFunction != deviceFunctionPointers.end()) if(deviceFunction != deviceFunctionPointers.end())
...@@ -366,10 +366,9 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName) ...@@ -366,10 +366,9 @@ PFN_vkVoidFunction GetDeviceProcAddr(VkDevice device, const char* pName)
return deviceFunction->second; return deviceFunction->second;
} }
vk::Device* myDevice = Cast(device);
for(const auto& deviceExtensionFunctions : deviceExtensionFunctionPointers) for(const auto& deviceExtensionFunctions : deviceExtensionFunctionPointers)
{ {
if(myDevice->hasExtension(deviceExtensionFunctions.first)) if(device->hasExtension(deviceExtensionFunctions.first))
{ {
deviceFunction = deviceExtensionFunctions.second.find(std::string(pName)); deviceFunction = deviceExtensionFunctions.second.find(std::string(pName));
if(deviceFunction != deviceExtensionFunctions.second.end()) if(deviceFunction != deviceExtensionFunctions.second.end())
......
...@@ -19,8 +19,13 @@ ...@@ -19,8 +19,13 @@
namespace vk 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_ #endif // VK_UTILS_HPP_
\ No newline at end of file
...@@ -96,9 +96,9 @@ const VkMemoryRequirements Image::getMemoryRequirements() const ...@@ -96,9 +96,9 @@ const VkMemoryRequirements Image::getMemoryRequirements() const
return memoryRequirements; return memoryRequirements;
} }
void Image::bind(VkDeviceMemory pDeviceMemory, VkDeviceSize pMemoryOffset) void Image::bind(DeviceMemory* pDeviceMemory, VkDeviceSize pMemoryOffset)
{ {
deviceMemory = Cast(pDeviceMemory); deviceMemory = pDeviceMemory;
memoryOffset = pMemoryOffset; memoryOffset = pMemoryOffset;
if(decompressedImage) if(decompressedImage)
{ {
......
...@@ -35,7 +35,7 @@ public: ...@@ -35,7 +35,7 @@ public:
const VkMemoryRequirements getMemoryRequirements() const; const VkMemoryRequirements getMemoryRequirements() const;
void getSubresourceLayout(const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) 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(Image* dstImage, const VkImageCopy& pRegion) const;
void copyTo(Buffer* dstBuffer, const VkBufferImageCopy& region); void copyTo(Buffer* dstBuffer, const VkBufferImageCopy& region);
void copyFrom(Buffer* srcBuffer, const VkBufferImageCopy& region); void copyFrom(Buffer* srcBuffer, const VkBufferImageCopy& region);
......
...@@ -91,14 +91,14 @@ Queue::~Queue() ...@@ -91,14 +91,14 @@ Queue::~Queue()
garbageCollect(); garbageCollect();
} }
VkResult Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence) VkResult Queue::submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, Fence* fence)
{ {
garbageCollect(); garbageCollect();
Task task; Task task;
task.submitCount = submitCount; task.submitCount = submitCount;
task.pSubmits = DeepCopySubmitInfo(submitCount, pSubmits); task.pSubmits = DeepCopySubmitInfo(submitCount, pSubmits);
task.events = (fence != VK_NULL_HANDLE) ? vk::Cast(fence) : nullptr; task.events = fence;
if(task.events) if(task.events)
{ {
......
...@@ -31,6 +31,8 @@ namespace sw ...@@ -31,6 +31,8 @@ namespace sw
namespace vk namespace vk
{ {
class Fence;
class Queue class Queue
{ {
VK_LOADER_DATA loaderData = { ICD_LOADER_MAGIC }; VK_LOADER_DATA loaderData = { ICD_LOADER_MAGIC };
...@@ -44,7 +46,7 @@ public: ...@@ -44,7 +46,7 @@ public:
return reinterpret_cast<VkQueue>(this); 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(); VkResult waitIdle();
#ifndef __ANDROID__ #ifndef __ANDROID__
void present(const VkPresentInfoKHR* presentInfo); void present(const VkPresentInfoKHR* presentInfo);
......
...@@ -83,7 +83,7 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance in ...@@ -83,7 +83,7 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance in
{ {
TRACE("(VkInstance instance = %p, const char* pName = %p)", instance, pName); 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) VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion)
...@@ -361,14 +361,14 @@ VK_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInsta ...@@ -361,14 +361,14 @@ VK_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInsta
{ {
TRACE("(VkInstance instance = %p, const char* pName = %p)", instance, pName); 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) VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkDevice device, const char* pName)
{ {
TRACE("(VkDevice device = %p, const char* pName = %p)", device, 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) VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice)
...@@ -589,7 +589,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(VkQueue queue, uint32_t submitCount ...@@ -589,7 +589,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(VkQueue queue, uint32_t submitCount
TRACE("(VkQueue queue = %p, uint32_t submitCount = %d, const VkSubmitInfo* pSubmits = %p, VkFence fence = %p)", TRACE("(VkQueue queue = %p, uint32_t submitCount = %d, const VkSubmitInfo* pSubmits = %p, VkFence fence = %p)",
queue, submitCount, pSubmits, fence.get()); 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) VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(VkQueue queue)
...@@ -715,7 +715,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(VkDevice device, VkBuffer buff ...@@ -715,7 +715,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(VkDevice device, VkBuffer buff
TRACE("(VkDevice device = %p, VkBuffer buffer = %p, VkDeviceMemory memory = %p, VkDeviceSize memoryOffset = %d)", TRACE("(VkDevice device = %p, VkBuffer buffer = %p, VkDeviceMemory memory = %p, VkDeviceSize memoryOffset = %d)",
device, buffer.get(), memory.get(), int(memoryOffset)); device, buffer.get(), memory.get(), int(memoryOffset));
vk::Cast(buffer)->bind(memory, memoryOffset); vk::Cast(buffer)->bind(vk::Cast(memory), memoryOffset);
return VK_SUCCESS; return VK_SUCCESS;
} }
...@@ -725,7 +725,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(VkDevice device, VkImage image, ...@@ -725,7 +725,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(VkDevice device, VkImage image,
TRACE("(VkDevice device = %p, VkImage image = %p, VkDeviceMemory memory = %p, VkDeviceSize memoryOffset = %d)", TRACE("(VkDevice device = %p, VkImage image = %p, VkDeviceMemory memory = %p, VkDeviceSize memoryOffset = %d)",
device, image.get(), memory.get(), int(memoryOffset)); device, image.get(), memory.get(), int(memoryOffset));
vk::Cast(image)->bind(memory, memoryOffset); vk::Cast(image)->bind(vk::Cast(memory), memoryOffset);
return VK_SUCCESS; return VK_SUCCESS;
} }
...@@ -1636,7 +1636,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPi ...@@ -1636,7 +1636,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPi
TRACE("(VkCommandBuffer commandBuffer = %p, VkPipelineBindPoint pipelineBindPoint = %d, VkPipeline pipeline = %p)", TRACE("(VkCommandBuffer commandBuffer = %p, VkPipelineBindPoint pipelineBindPoint = %d, VkPipeline pipeline = %p)",
commandBuffer, int(pipelineBindPoint), pipeline.get()); 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) VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports)
...@@ -1715,7 +1715,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer ...@@ -1715,7 +1715,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer
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)", 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); 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) VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType)
...@@ -1723,7 +1723,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, V ...@@ -1723,7 +1723,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, V
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d, VkIndexType indexType = %d)", TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d, VkIndexType indexType = %d)",
commandBuffer, buffer.get(), int(offset), int(indexType)); 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) VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets)
...@@ -1755,7 +1755,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBu ...@@ -1755,7 +1755,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBu
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d, uint32_t drawCount = %d, uint32_t stride = %d)", 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)); 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) VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
...@@ -1763,7 +1763,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffe ...@@ -1763,7 +1763,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffe
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d, uint32_t drawCount = %d, uint32_t stride = %d)", 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)); 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) VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ)
...@@ -1779,7 +1779,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(VkCommandBuffer commandBuffer, ...@@ -1779,7 +1779,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(VkCommandBuffer commandBuffer,
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d)", TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer buffer = %p, VkDeviceSize offset = %d)",
commandBuffer, buffer.get(), int(offset)); 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) VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions)
...@@ -1787,7 +1787,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuff ...@@ -1787,7 +1787,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuff
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer srcBuffer = %p, VkBuffer dstBuffer = %p, uint32_t regionCount = %d, const VkBufferCopy* pRegions = %p)", 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); 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) 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 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(VkCommandBuffer commandBuffer, VkImage ...@@ -1795,7 +1795,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(VkCommandBuffer commandBuffer, VkImage
TRACE("(VkCommandBuffer commandBuffer = %p, VkImage srcImage = %p, VkImageLayout srcImageLayout = %d, VkImage dstImage = %p, VkImageLayout dstImageLayout = %d, uint32_t regionCount = %d, const VkImageCopy* pRegions = %p)", 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); 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) 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 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage ...@@ -1803,7 +1803,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(VkCommandBuffer commandBuffer, VkImage
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)", 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); 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) VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions)
...@@ -1811,7 +1811,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer, ...@@ -1811,7 +1811,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(VkCommandBuffer commandBuffer,
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer srcBuffer = %p, VkImage dstImage = %p, VkImageLayout dstImageLayout = %d, uint32_t regionCount = %d, const VkBufferImageCopy* pRegions = %p)", 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); 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) VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions)
...@@ -1819,7 +1819,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer, ...@@ -1819,7 +1819,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(VkCommandBuffer commandBuffer,
TRACE("(VkCommandBuffer commandBuffer = %p, VkImage srcImage = %p, VkImageLayout srcImageLayout = %d, VkBuffer dstBuffer = %p, uint32_t regionCount = %d, const VkBufferImageCopy* pRegions = %p)", 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); 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) VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData)
...@@ -1827,7 +1827,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBu ...@@ -1827,7 +1827,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(VkCommandBuffer commandBuffer, VkBu
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer dstBuffer = %p, VkDeviceSize dstOffset = %d, VkDeviceSize dataSize = %d, const void* pData = %p)", 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); 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) VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data)
...@@ -1835,7 +1835,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuff ...@@ -1835,7 +1835,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(VkCommandBuffer commandBuffer, VkBuff
TRACE("(VkCommandBuffer commandBuffer = %p, VkBuffer dstBuffer = %p, VkDeviceSize dstOffset = %d, VkDeviceSize size = %d, uint32_t data = %d)", 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); 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) 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 @@ VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(VkCommandBuffer commandBuffer, V ...@@ -1843,7 +1843,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(VkCommandBuffer commandBuffer, V
TRACE("(VkCommandBuffer commandBuffer = %p, VkImage image = %p, VkImageLayout imageLayout = %d, const VkClearColorValue* pColor = %p, uint32_t rangeCount = %d, const VkImageSubresourceRange* pRanges = %p)", 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); 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) 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 @@ VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(VkCommandBuffer commandBu ...@@ -1851,7 +1851,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(VkCommandBuffer commandBu
TRACE("(VkCommandBuffer commandBuffer = %p, VkImage image = %p, VkImageLayout imageLayout = %d, const VkClearDepthStencilValue* pDepthStencil = %p, uint32_t rangeCount = %d, const VkImageSubresourceRange* pRanges = %p)", 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); 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) VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects)
...@@ -1867,7 +1867,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(VkCommandBuffer commandBuffer, VkIm ...@@ -1867,7 +1867,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(VkCommandBuffer commandBuffer, VkIm
TRACE("(VkCommandBuffer commandBuffer = %p, VkImage srcImage = %p, VkImageLayout srcImageLayout = %d, VkImage dstImage = %p, VkImageLayout dstImageLayout = %d, uint32_t regionCount = %d, const VkImageResolve* pRegions = %p)", 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); 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) VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask)
...@@ -1875,7 +1875,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent ...@@ -1875,7 +1875,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent
TRACE("(VkCommandBuffer commandBuffer = %p, VkEvent event = %p, VkPipelineStageFlags stageMask = %d)", TRACE("(VkCommandBuffer commandBuffer = %p, VkEvent event = %p, VkPipelineStageFlags stageMask = %d)",
commandBuffer, event.get(), int(stageMask)); 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) VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask)
...@@ -1883,7 +1883,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEven ...@@ -1883,7 +1883,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(VkCommandBuffer commandBuffer, VkEven
TRACE("(VkCommandBuffer commandBuffer = %p, VkEvent event = %p, VkPipelineStageFlags stageMask = %d)", TRACE("(VkCommandBuffer commandBuffer = %p, VkEvent event = %p, VkPipelineStageFlags stageMask = %d)",
commandBuffer, event.get(), int(stageMask)); 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) 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 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQuer ...@@ -1911,7 +1911,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQuer
TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t query = %d, VkQueryControlFlags flags = %d)", TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t query = %d, VkQueryControlFlags flags = %d)",
commandBuffer, queryPool.get(), query, int(flags)); 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) VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query)
...@@ -1919,7 +1919,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryP ...@@ -1919,7 +1919,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(VkCommandBuffer commandBuffer, VkQueryP
TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t query = %d)", TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t query = %d)",
commandBuffer, queryPool.get(), int(query)); 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) VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount)
...@@ -1927,7 +1927,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(VkCommandBuffer commandBuffer, Vk ...@@ -1927,7 +1927,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(VkCommandBuffer commandBuffer, Vk
TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t firstQuery = %d, uint32_t queryCount = %d)", TRACE("(VkCommandBuffer commandBuffer = %p, VkQueryPool queryPool = %p, uint32_t firstQuery = %d, uint32_t queryCount = %d)",
commandBuffer, queryPool.get(), int(firstQuery), int(queryCount)); 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) VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query)
...@@ -1935,7 +1935,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, Vk ...@@ -1935,7 +1935,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(VkCommandBuffer commandBuffer, Vk
TRACE("(VkCommandBuffer commandBuffer = %p, VkPipelineStageFlagBits pipelineStage = %d, VkQueryPool queryPool = %p, uint32_t query = %d)", TRACE("(VkCommandBuffer commandBuffer = %p, VkPipelineStageFlagBits pipelineStage = %d, VkQueryPool queryPool = %p, uint32_t query = %d)",
commandBuffer, int(pipelineStage), queryPool.get(), int(query)); 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) 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 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuff ...@@ -1943,7 +1943,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(VkCommandBuffer commandBuff
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)", 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)); 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) 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 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(VkCommandBuffer commandBuffer, VkP ...@@ -1951,7 +1951,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(VkCommandBuffer commandBuffer, VkP
TRACE("(VkCommandBuffer commandBuffer = %p, VkPipelineLayout layout = %p, VkShaderStageFlags stageFlags = %d, uint32_t offset = %d, uint32_t size = %d, const void* pValues = %p)", 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); 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) VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents)
...@@ -1977,7 +1977,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, c ...@@ -1977,7 +1977,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, c
renderPassBeginInfo = renderPassBeginInfo->pNext; 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->renderArea, pRenderPassBegin->clearValueCount,
pRenderPassBegin->pClearValues, contents); pRenderPassBegin->pClearValues, contents);
} }
...@@ -2024,7 +2024,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(VkDevice device, uint32_t bin ...@@ -2024,7 +2024,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(VkDevice device, uint32_t bin
UNIMPLEMENTED("pBindInfos[%d].pNext", i); 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; return VK_SUCCESS;
...@@ -2042,7 +2042,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(VkDevice device, uint32_t bind ...@@ -2042,7 +2042,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(VkDevice device, uint32_t bind
UNIMPLEMENTED("pBindInfos[%d].pNext", i); 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; return VK_SUCCESS;
...@@ -2659,7 +2659,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(VkDevice device, const VkSwa ...@@ -2659,7 +2659,8 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(VkDevice device, const VkSwa
return status; return status;
} }
status = vk::Cast(*pSwapchain)->createImages(device, pCreateInfo); auto swapchain = vk::Cast(*pSwapchain);
status = swapchain->createImages(device, pCreateInfo);
if(status != VK_SUCCESS) if(status != VK_SUCCESS)
{ {
...@@ -2667,7 +2668,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(VkDevice device, const VkSwa ...@@ -2667,7 +2668,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(VkDevice device, const VkSwa
return status; return status;
} }
vk::Cast(pCreateInfo->surface)->associateSwapchain(*pSwapchain); vk::Cast(pCreateInfo->surface)->associateSwapchain(swapchain);
return VK_SUCCESS; return VK_SUCCESS;
} }
...@@ -2699,7 +2700,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(VkDevice device, VkSwapchai ...@@ -2699,7 +2700,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(VkDevice device, VkSwapchai
TRACE("(VkDevice device = %p, VkSwapchainKHR swapchain = %p, uint64_t timeout = %d, VkSemaphore semaphore = %p, VkFence fence = %p, uint32_t* pImageIndex = %p)", 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); 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) VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, const VkPresentInfoKHR* pPresentInfo)
......
...@@ -169,9 +169,9 @@ VkResult SurfaceKHR::getPresentModes(uint32_t *pPresentModeCount, VkPresentModeK ...@@ -169,9 +169,9 @@ VkResult SurfaceKHR::getPresentModes(uint32_t *pPresentModeCount, VkPresentModeK
return VK_SUCCESS; return VK_SUCCESS;
} }
void SurfaceKHR::associateSwapchain(VkSwapchainKHR swapchain) void SurfaceKHR::associateSwapchain(SwapchainKHR* swapchain)
{ {
associatedSwapchain = Cast(swapchain); associatedSwapchain = swapchain;
} }
void SurfaceKHR::disassociateSwapchain() void SurfaceKHR::disassociateSwapchain()
......
...@@ -83,7 +83,7 @@ public: ...@@ -83,7 +83,7 @@ public:
virtual void detachImage(PresentImage* image) = 0; virtual void detachImage(PresentImage* image) = 0;
virtual void present(PresentImage* image) = 0; virtual void present(PresentImage* image) = 0;
void associateSwapchain(VkSwapchainKHR swapchain); void associateSwapchain(SwapchainKHR* swapchain);
void disassociateSwapchain(); void disassociateSwapchain();
bool hasAssociatedSwapchain(); bool hasAssociatedSwapchain();
......
...@@ -171,7 +171,7 @@ VkResult SwapchainKHR::getImages(uint32_t *pSwapchainImageCount, VkImage *pSwapc ...@@ -171,7 +171,7 @@ VkResult SwapchainKHR::getImages(uint32_t *pSwapchainImageCount, VkImage *pSwapc
return VK_SUCCESS; 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++) for(uint32_t i = 0; i < imageCount; i++)
{ {
...@@ -183,12 +183,12 @@ VkResult SwapchainKHR::getNextImage(uint64_t timeout, VkSemaphore semaphore, VkF ...@@ -183,12 +183,12 @@ VkResult SwapchainKHR::getNextImage(uint64_t timeout, VkSemaphore semaphore, VkF
if(semaphore) if(semaphore)
{ {
vk::Cast(semaphore)->signal(); semaphore->signal();
} }
if(fence) if(fence)
{ {
vk::Cast(fence)->complete(); fence->complete();
} }
return VK_SUCCESS; return VK_SUCCESS;
......
...@@ -25,6 +25,9 @@ ...@@ -25,6 +25,9 @@
namespace vk namespace vk
{ {
class Fence;
class Semaphore;
class SwapchainKHR : public Object<SwapchainKHR, VkSwapchainKHR> class SwapchainKHR : public Object<SwapchainKHR, VkSwapchainKHR>
{ {
public: public:
...@@ -41,7 +44,7 @@ public: ...@@ -41,7 +44,7 @@ public:
uint32_t getImageCount() const; uint32_t getImageCount() const;
VkResult getImages(uint32_t *pSwapchainImageCount, VkImage *pSwapchainImages) 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); void present(uint32_t index);
......
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