From 48cf268defad66f58f1aa03b4835e5583be96b2f Mon Sep 17 00:00:00 2001 From: Greg Daniel Date: Mon, 22 Feb 2016 09:11:32 -0500 Subject: Add vulkan files into skia repo. This is an incomplete backend with only partial functionality at this time. R=robertphillips@google.com TBR=bsalomon@google.com BUG=skia:4955 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1718693002 Review URL: https://codereview.chromium.org/1718693002 --- src/gpu/vk/GrVkTransferBuffer.cpp | 58 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/gpu/vk/GrVkTransferBuffer.cpp (limited to 'src/gpu/vk/GrVkTransferBuffer.cpp') diff --git a/src/gpu/vk/GrVkTransferBuffer.cpp b/src/gpu/vk/GrVkTransferBuffer.cpp new file mode 100644 index 0000000000..3730627764 --- /dev/null +++ b/src/gpu/vk/GrVkTransferBuffer.cpp @@ -0,0 +1,58 @@ +/* +* Copyright 2015 Google Inc. +* +* Use of this source code is governed by a BSD-style license that can be +* found in the LICENSE file. +*/ + +#include "GrVkTransferBuffer.h" +#include "GrVkGpu.h" +#include "SkTraceMemoryDump.h" + + +GrVkTransferBuffer* GrVkTransferBuffer::Create(GrVkGpu* gpu, size_t size, GrVkBuffer::Type type) { + GrVkBuffer::Desc desc; + desc.fDynamic = false; + SkASSERT(GrVkBuffer::kCopyRead_Type == type || GrVkBuffer::kCopyWrite_Type == type); + desc.fType = type; + desc.fSizeInBytes = size; + + const GrVkBuffer::Resource* bufferResource = GrVkBuffer::Create(gpu, desc); + if (!bufferResource) { + return nullptr; + } + + GrVkTransferBuffer* buffer = new GrVkTransferBuffer(gpu, desc, bufferResource); + if (!buffer) { + bufferResource->unref(gpu); + } + return buffer; +} + +GrVkTransferBuffer::GrVkTransferBuffer(GrVkGpu* gpu, const GrVkBuffer::Desc& desc, + const GrVkBuffer::Resource* bufferResource) + : INHERITED(gpu, desc.fSizeInBytes) + , GrVkBuffer(desc, bufferResource) { + this->registerWithCache(); +} + +void GrVkTransferBuffer::onRelease() { + if (!this->wasDestroyed()) { + this->vkRelease(this->getVkGpu()); + } + + INHERITED::onRelease(); +} + +void GrVkTransferBuffer::onAbandon() { + this->vkAbandon(); + INHERITED::onAbandon(); +} + +void GrVkTransferBuffer::setMemoryBacking(SkTraceMemoryDump* traceMemoryDump, + const SkString& dumpName) const { + SkString buffer_id; + buffer_id.appendU64((uint64_t)this->buffer()); + traceMemoryDump->setMemoryBacking(dumpName.c_str(), "vk_buffer", + buffer_id.c_str()); +} -- cgit v1.2.3