1/* 2* Copyright 2015 Google Inc. 3* 4* Use of this source code is governed by a BSD-style license that can be 5* found in the LICENSE file. 6*/ 7 8#ifndef GrVkTransferBuffer_DEFINED 9#define GrVkTransferBuffer_DEFINED 10 11#include "GrBuffer.h" 12#include "GrVkBuffer.h" 13 14class GrVkGpu; 15 16class GrVkTransferBuffer : public GrBuffer, public GrVkBuffer { 17 18public: 19 static GrVkTransferBuffer* Create(GrVkGpu* gpu, size_t size, GrVkBuffer::Type type); 20 21protected: 22 void onAbandon() override; 23 void onRelease() override; 24 25private: 26 GrVkTransferBuffer(GrVkGpu* gpu, const GrVkBuffer::Desc& desc, 27 const GrVkBuffer::Resource* resource); 28 void setMemoryBacking(SkTraceMemoryDump* traceMemoryDump, 29 const SkString& dumpName) const override; 30 31 void onMap() override { 32 if (!this->wasDestroyed()) { 33 this->GrBuffer::fMapPtr = this->vkMap(this->getVkGpu()); 34 } 35 } 36 37 void onUnmap() override { 38 if (!this->wasDestroyed()) { 39 this->vkUnmap(this->getVkGpu()); 40 } 41 } 42 43 bool onUpdateData(const void* src, size_t srcSizeInBytes) override { 44 SkFAIL("Not implemented for transfer buffers."); 45 return false; 46 } 47 48 GrVkGpu* getVkGpu() const { 49 SkASSERT(!this->wasDestroyed()); 50 return reinterpret_cast<GrVkGpu*>(this->getGpu()); 51 } 52 53 typedef GrBuffer INHERITED; 54}; 55 56#endif 57