aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/vk/GrVkCommandBuffer.cpp
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-06-16 16:17:03 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-06-16 16:17:15 +0000
commit6ecc911070add386dc9ffeb8b131d21035672fb6 (patch)
tree04bdcfd72b07ca6e29014a0b54e5ce34030fabac /src/gpu/vk/GrVkCommandBuffer.cpp
parent35186b5db595e85985df8611810ab54a99b0f835 (diff)
Revert "Revert "Remove Gr*Gpu includes from header files.""
This reverts commit 56af45b03c542ef0bc198e42687bf685aafaae81. Reason for revert: Relanding now that pre CL has relanded Original change's description: > Revert "Remove Gr*Gpu includes from header files." > > This reverts commit 2bd381bffd36cdcffacf606d952547ce66fed7e9. > > Reason for revert: Need to revert change this landed on top of > > Original change's description: > > Remove Gr*Gpu includes from header files. > > > > Some general cleanup to try to keep use of the backend gpu class in cpps. > > > > Bug: skia: > > Change-Id: I1a28e0e5c2e55562b3fff56c284c3405b5b6d8bc > > Reviewed-on: https://skia-review.googlesource.com/20057 > > Reviewed-by: Robert Phillips <robertphillips@google.com> > > Commit-Queue: Greg Daniel <egdaniel@google.com> > > TBR=egdaniel@google.com,robertphillips@google.com > > Change-Id: I5b27d50654a17502c056d59b2d4f9609376d189e > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: skia: > Reviewed-on: https://skia-review.googlesource.com/20064 > Reviewed-by: Greg Daniel <egdaniel@google.com> > Commit-Queue: Greg Daniel <egdaniel@google.com> TBR=egdaniel@google.com,robertphillips@google.com Change-Id: Id1656a7708223bc4dcc8eb4444ef41ada61be5d0 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/20148 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src/gpu/vk/GrVkCommandBuffer.cpp')
-rw-r--r--src/gpu/vk/GrVkCommandBuffer.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/gpu/vk/GrVkCommandBuffer.cpp b/src/gpu/vk/GrVkCommandBuffer.cpp
index 63642d4ed0..d4fe80caf9 100644
--- a/src/gpu/vk/GrVkCommandBuffer.cpp
+++ b/src/gpu/vk/GrVkCommandBuffer.cpp
@@ -7,14 +7,19 @@
#include "GrVkCommandBuffer.h"
+#include "GrVkGpu.h"
#include "GrVkFramebuffer.h"
+#include "GrVkImage.h"
#include "GrVkImageView.h"
+#include "GrVkIndexBuffer.h"
#include "GrVkPipeline.h"
+#include "GrVkPipelineState.h"
#include "GrVkRenderPass.h"
#include "GrVkRenderTarget.h"
#include "GrVkPipelineState.h"
#include "GrVkTransferBuffer.h"
#include "GrVkUtil.h"
+#include "GrVkVertexBuffer.h"
#include "SkRect.h"
void GrVkCommandBuffer::invalidateState() {
@@ -145,6 +150,40 @@ void GrVkCommandBuffer::pipelineBarrier(const GrVkGpu* gpu,
}
+void GrVkCommandBuffer::bindInputBuffer(GrVkGpu* gpu, uint32_t binding,
+ const GrVkVertexBuffer* vbuffer) {
+ VkBuffer vkBuffer = vbuffer->buffer();
+ SkASSERT(VK_NULL_HANDLE != vkBuffer);
+ SkASSERT(binding < kMaxInputBuffers);
+ // TODO: once vbuffer->offset() no longer always returns 0, we will need to track the offset
+ // to know if we can skip binding or not.
+ if (vkBuffer != fBoundInputBuffers[binding]) {
+ VkDeviceSize offset = vbuffer->offset();
+ GR_VK_CALL(gpu->vkInterface(), CmdBindVertexBuffers(fCmdBuffer,
+ binding,
+ 1,
+ &vkBuffer,
+ &offset));
+ fBoundInputBuffers[binding] = vkBuffer;
+ addResource(vbuffer->resource());
+ }
+}
+
+void GrVkCommandBuffer::bindIndexBuffer(GrVkGpu* gpu, const GrVkIndexBuffer* ibuffer) {
+ VkBuffer vkBuffer = ibuffer->buffer();
+ SkASSERT(VK_NULL_HANDLE != vkBuffer);
+ // TODO: once ibuffer->offset() no longer always returns 0, we will need to track the offset
+ // to know if we can skip binding or not.
+ if (vkBuffer != fBoundIndexBuffer) {
+ GR_VK_CALL(gpu->vkInterface(), CmdBindIndexBuffer(fCmdBuffer,
+ vkBuffer,
+ ibuffer->offset(),
+ VK_INDEX_TYPE_UINT16));
+ fBoundIndexBuffer = vkBuffer;
+ addResource(ibuffer->resource());
+ }
+}
+
void GrVkCommandBuffer::clearAttachments(const GrVkGpu* gpu,
int numAttachments,
const VkClearAttachment* attachments,
@@ -535,6 +574,25 @@ void GrVkPrimaryCommandBuffer::blitImage(const GrVkGpu* gpu,
filter));
}
+void GrVkPrimaryCommandBuffer::blitImage(const GrVkGpu* gpu,
+ const GrVkImage& srcImage,
+ const GrVkImage& dstImage,
+ uint32_t blitRegionCount,
+ const VkImageBlit* blitRegions,
+ VkFilter filter) {
+ this->blitImage(gpu,
+ srcImage.resource(),
+ srcImage.image(),
+ srcImage.currentLayout(),
+ dstImage.resource(),
+ dstImage.image(),
+ dstImage.currentLayout(),
+ blitRegionCount,
+ blitRegions,
+ filter);
+}
+
+
void GrVkPrimaryCommandBuffer::copyImageToBuffer(const GrVkGpu* gpu,
GrVkImage* srcImage,
VkImageLayout srcLayout,