/* * 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 GrVkTransferBuffer_DEFINED #define GrVkTransferBuffer_DEFINED #include "include/gpu/vk/GrVkTypes.h" #include "src/gpu/GrGpuBuffer.h" #include "src/gpu/vk/GrVkBuffer.h" class GrVkGpu; class GrVkTransferBuffer : public GrGpuBuffer, public GrVkBuffer { public: static sk_sp Make(GrVkGpu* gpu, size_t size, GrVkBuffer::Type type); protected: void onAbandon() override; void onRelease() override; private: GrVkTransferBuffer(GrVkGpu* gpu, const GrVkBuffer::Desc& desc, const GrVkBuffer::Resource* resource); void setMemoryBacking(SkTraceMemoryDump* traceMemoryDump, const SkString& dumpName) const override; void onMap() override { this->GrGpuBuffer::fMapPtr = this->vkMap(this->getVkGpu()); } void onUnmap() override { this->vkUnmap(this->getVkGpu()); } bool onUpdateData(const void* src, size_t srcSizeInBytes) override { SK_ABORT("Not implemented for transfer buffers."); } GrVkGpu* getVkGpu() const { SkASSERT(!this->wasDestroyed()); return reinterpret_cast(this->getGpu()); } typedef GrGpuBuffer INHERITED; }; #endif