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 "GrGLTransferBuffer.h"
9 #include "GrGLGpu.h"
10 #include "SkTraceMemoryDump.h"
11
GrGLTransferBuffer(GrGLGpu * gpu,const Desc & desc,GrGLenum type)12 GrGLTransferBuffer::GrGLTransferBuffer(GrGLGpu* gpu, const Desc& desc, GrGLenum type)
13 : INHERITED(gpu, desc.fSizeInBytes)
14 , fImpl(gpu, desc, type) {
15 this->registerWithCache();
16 }
17
onRelease()18 void GrGLTransferBuffer::onRelease() {
19 if (!this->wasDestroyed()) {
20 fImpl.release(this->getGpuGL());
21 }
22
23 INHERITED::onRelease();
24 }
25
onAbandon()26 void GrGLTransferBuffer::onAbandon() {
27 fImpl.abandon();
28 INHERITED::onAbandon();
29 }
30
onMap()31 void* GrGLTransferBuffer::onMap() {
32 if (!this->wasDestroyed()) {
33 return fImpl.map(this->getGpuGL());
34 } else {
35 return nullptr;
36 }
37 }
38
onUnmap()39 void GrGLTransferBuffer::onUnmap() {
40 if (!this->wasDestroyed()) {
41 fImpl.unmap(this->getGpuGL());
42 }
43 }
44
setMemoryBacking(SkTraceMemoryDump * traceMemoryDump,const SkString & dumpName) const45 void GrGLTransferBuffer::setMemoryBacking(SkTraceMemoryDump* traceMemoryDump,
46 const SkString& dumpName) const {
47 SkString buffer_id;
48 buffer_id.appendU32(this->bufferID());
49 traceMemoryDump->setMemoryBacking(dumpName.c_str(), "gl_buffer",
50 buffer_id.c_str());
51 }
52