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