| Index: src/gpu/vk/GrVkCommandBuffer.h
|
| diff --git a/src/gpu/vk/GrVkCommandBuffer.h b/src/gpu/vk/GrVkCommandBuffer.h
|
| deleted file mode 100644
|
| index 33867abc5acc23c09af4087c17393ed5f26d8974..0000000000000000000000000000000000000000
|
| --- a/src/gpu/vk/GrVkCommandBuffer.h
|
| +++ /dev/null
|
| @@ -1,206 +0,0 @@
|
| -/*
|
| -* Copyright 2015 Google Inc.
|
| -*
|
| -* Use of this source code is governed by a BSD-style license that can be
|
| -* found in the LICENSE file.
|
| -*/
|
| -
|
| -#ifndef GrVkCommandBuffer_DEFINED
|
| -#define GrVkCommandBuffer_DEFINED
|
| -
|
| -#include "GrVkGpu.h"
|
| -#include "GrVkPipeline.h"
|
| -#include "GrVkResource.h"
|
| -#include "GrVkUtil.h"
|
| -#include "vulkan/vulkan.h"
|
| -
|
| -class GrVkRenderPass;
|
| -class GrVkRenderTarget;
|
| -class GrVkTransferBuffer;
|
| -
|
| -class GrVkCommandBuffer : public GrVkResource {
|
| -public:
|
| - static GrVkCommandBuffer* Create(const GrVkGpu* gpu, VkCommandPool cmdPool);
|
| - ~GrVkCommandBuffer() override;
|
| -
|
| - void begin(const GrVkGpu* gpu);
|
| - void end(const GrVkGpu* gpu);
|
| -
|
| - void invalidateState();
|
| -
|
| - // Begins render pass on this command buffer. The framebuffer from GrVkRenderTarget will be used
|
| - // in the render pass.
|
| - void beginRenderPass(const GrVkGpu* gpu,
|
| - const GrVkRenderPass* renderPass,
|
| - const GrVkRenderTarget& target);
|
| - void endRenderPass(const GrVkGpu* gpu);
|
| -
|
| - void submitToQueue(const GrVkGpu* gpu, VkQueue queue, GrVkGpu::SyncQueue sync);
|
| - bool finished(const GrVkGpu* gpu) const;
|
| -
|
| - ////////////////////////////////////////////////////////////////////////////
|
| - // CommandBuffer State/Object bindings
|
| - ////////////////////////////////////////////////////////////////////////////
|
| -#if 0
|
| - void bindPipeline(const GrVkGpu* gpu) const;
|
| - void bindDynamicState(const GrVkGpu* gpu) const;
|
| - void bindDescriptorSet(const GrVkGpu* gpu) const;
|
| -#endif
|
| -
|
| - ////////////////////////////////////////////////////////////////////////////
|
| - // CommandBuffer commands
|
| - ////////////////////////////////////////////////////////////////////////////
|
| - enum BarrierType {
|
| - kMemory_BarrierType,
|
| - kBufferMemory_BarrierType,
|
| - kImageMemory_BarrierType
|
| - };
|
| -
|
| - void pipelineBarrier(const GrVkGpu* gpu,
|
| - VkPipelineStageFlags srcStageMask,
|
| - VkPipelineStageFlags dstStageMask,
|
| - bool byRegion,
|
| - BarrierType barrierType,
|
| - void* barrier) const;
|
| -
|
| - void bindVertexBuffer(GrVkGpu* gpu, GrVkVertexBuffer* vbuffer) {
|
| - VkBuffer vkBuffer = vbuffer->buffer();
|
| - if (!fBoundVertexBufferIsValid || vkBuffer != fBoundVertexBuffer) {
|
| - VkDeviceSize offset = 0;
|
| - GR_VK_CALL(gpu->vkInterface(), CmdBindVertexBuffers(fCmdBuffer,
|
| - 0,
|
| - 1,
|
| - &vkBuffer,
|
| - &offset));
|
| - fBoundVertexBufferIsValid = true;
|
| - fBoundVertexBuffer = vkBuffer;
|
| - addResource(vbuffer->resource());
|
| - }
|
| - }
|
| -
|
| - void bindIndexBuffer(GrVkGpu* gpu, GrVkIndexBuffer* ibuffer) {
|
| - VkBuffer vkBuffer = ibuffer->buffer();
|
| - if (!fBoundIndexBufferIsValid || vkBuffer != fBoundIndexBuffer) {
|
| - GR_VK_CALL(gpu->vkInterface(), CmdBindIndexBuffer(fCmdBuffer,
|
| - vkBuffer,
|
| - 0,
|
| - VK_INDEX_TYPE_UINT16));
|
| - fBoundIndexBufferIsValid = true;
|
| - fBoundIndexBuffer = vkBuffer;
|
| - addResource(ibuffer->resource());
|
| - }
|
| - }
|
| -
|
| - void bindPipeline(const GrVkGpu* gpu, const GrVkPipeline* pipeline) {
|
| - GR_VK_CALL(gpu->vkInterface(), CmdBindPipeline(fCmdBuffer,
|
| - VK_PIPELINE_BIND_POINT_GRAPHICS,
|
| - pipeline->pipeline()));
|
| - addResource(pipeline);
|
| - }
|
| -
|
| - void bindDescriptorSets(const GrVkGpu* gpu,
|
| - GrVkProgram*,
|
| - VkPipelineLayout layout,
|
| - uint32_t firstSet,
|
| - uint32_t setCount,
|
| - const VkDescriptorSet* descriptorSets,
|
| - uint32_t dynamicOffsetCount,
|
| - const uint32_t* dynamicOffsets);
|
| -
|
| - // Commands that only work outside of a render pass
|
| - void clearColorImage(const GrVkGpu* gpu,
|
| - GrVkImage* image,
|
| - const VkClearColorValue* color,
|
| - uint32_t subRangeCount,
|
| - const VkImageSubresourceRange* subRanges);
|
| -
|
| - void copyImage(const GrVkGpu* gpu,
|
| - GrVkImage* srcImage,
|
| - VkImageLayout srcLayout,
|
| - GrVkImage* dstImage,
|
| - VkImageLayout dstLayout,
|
| - uint32_t copyRegionCount,
|
| - const VkImageCopy* copyRegions);
|
| -
|
| - void copyImageToBuffer(const GrVkGpu* gpu,
|
| - GrVkImage* srcImage,
|
| - VkImageLayout srcLayout,
|
| - GrVkTransferBuffer* dstBuffer,
|
| - uint32_t copyRegionCount,
|
| - const VkBufferImageCopy* copyRegions);
|
| -
|
| - void copyBufferToImage(const GrVkGpu* gpu,
|
| - GrVkTransferBuffer* srcBuffer,
|
| - GrVkImage* dstImage,
|
| - VkImageLayout dstLayout,
|
| - uint32_t copyRegionCount,
|
| - const VkBufferImageCopy* copyRegions);
|
| -
|
| - // Commands that only work inside of a render pass
|
| - void clearAttachments(const GrVkGpu* gpu,
|
| - int numAttachments,
|
| - const VkClearAttachment* attachments,
|
| - int numRects,
|
| - const VkClearRect* clearRects) const;
|
| -
|
| - void drawIndexed(const GrVkGpu* gpu,
|
| - uint32_t indexCount,
|
| - uint32_t instanceCount,
|
| - uint32_t firstIndex,
|
| - int32_t vertexOffset,
|
| - uint32_t firstInstance) const;
|
| -
|
| - void draw(const GrVkGpu* gpu,
|
| - uint32_t vertexCount,
|
| - uint32_t instanceCount,
|
| - uint32_t firstVertex,
|
| - uint32_t firstInstance) const;
|
| -
|
| - // Add ref-counted resource that will be tracked and released when this
|
| - // command buffer finishes execution
|
| - void addResource(const GrVkResource* resource) {
|
| - resource->ref();
|
| - fTrackedResources.push_back(resource);
|
| - }
|
| -
|
| -private:
|
| - static const int kInitialTrackedResourcesCount = 32;
|
| -
|
| - explicit GrVkCommandBuffer(VkCommandBuffer cmdBuffer)
|
| - : fTrackedResources(kInitialTrackedResourcesCount)
|
| - , fCmdBuffer(cmdBuffer)
|
| - , fSubmitFence(VK_NULL_HANDLE)
|
| - , fBoundVertexBufferIsValid(false)
|
| - , fBoundIndexBufferIsValid(false)
|
| - , fIsActive(false)
|
| - , fActiveRenderPass(nullptr) {
|
| - this->invalidateState();
|
| - }
|
| -
|
| - void freeGPUData(const GrVkGpu* gpu) const override;
|
| - void abandonSubResources() const override;
|
| -
|
| - SkTArray<const GrVkResource*, true> fTrackedResources;
|
| -
|
| - VkCommandBuffer fCmdBuffer;
|
| - VkFence fSubmitFence;
|
| -
|
| - VkBuffer fBoundVertexBuffer;
|
| - bool fBoundVertexBufferIsValid;
|
| -
|
| - VkBuffer fBoundIndexBuffer;
|
| - bool fBoundIndexBufferIsValid;
|
| -
|
| - // Tracks whether we are in the middle of a command buffer begin/end calls and thus can add new
|
| - // commands to the buffer;
|
| - bool fIsActive;
|
| -
|
| - // Stores a pointer to the current active render pass (i.e. begin has been called but not end).
|
| - // A nullptr means there is no active render pass. The GrVKCommandBuffer does not own the render
|
| - // pass.
|
| - const GrVkRenderPass* fActiveRenderPass;
|
| -};
|
| -
|
| -
|
| -#endif
|
| -
|
|
|