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#include "GrVkVertexBuffer.h" 9#include "GrVkGpu.h" 10 11GrVkVertexBuffer::GrVkVertexBuffer(GrVkGpu* gpu, const GrVkBuffer::Desc& desc, 12 const GrVkBuffer::Resource* bufferResource) 13 : INHERITED(gpu, desc.fSizeInBytes, desc.fDynamic, false) 14 , GrVkBuffer(desc, bufferResource) { 15 this->registerWithCache(); 16} 17 18GrVkVertexBuffer* GrVkVertexBuffer::Create(GrVkGpu* gpu, size_t size, bool dynamic) { 19 GrVkBuffer::Desc desc; 20 desc.fDynamic = dynamic; 21 desc.fType = GrVkBuffer::kVertex_Type; 22 desc.fSizeInBytes = size; 23 24 const GrVkBuffer::Resource* bufferResource = GrVkBuffer::Create(gpu, desc); 25 if (!bufferResource) { 26 return nullptr; 27 } 28 29 GrVkVertexBuffer* buffer = new GrVkVertexBuffer(gpu, desc, bufferResource); 30 if (!buffer) { 31 bufferResource->unref(gpu); 32 } 33 return buffer; 34} 35 36void GrVkVertexBuffer::onRelease() { 37 if (!this->wasDestroyed()) { 38 this->vkRelease(this->getVkGpu()); 39 } 40 41 INHERITED::onRelease(); 42} 43 44void GrVkVertexBuffer::onAbandon() { 45 this->vkAbandon(); 46 INHERITED::onAbandon(); 47} 48 49void* GrVkVertexBuffer::onMap() { 50 if (!this->wasDestroyed()) { 51 return this->vkMap(this->getVkGpu()); 52 } else { 53 return NULL; 54 } 55} 56 57void GrVkVertexBuffer::onUnmap() { 58 if (!this->wasDestroyed()) { 59 this->vkUnmap(this->getVkGpu()); 60 } 61} 62 63bool GrVkVertexBuffer::onUpdateData(const void* src, size_t srcSizeInBytes) { 64 if (!this->wasDestroyed()) { 65 return this->vkUpdateData(this->getVkGpu(), src, srcSizeInBytes); 66 } else { 67 return false; 68 } 69} 70 71GrVkGpu* GrVkVertexBuffer::getVkGpu() const { 72 SkASSERT(!this->wasDestroyed()); 73 return static_cast<GrVkGpu*>(this->getGpu()); 74} 75 76