blob: 588ee949cd73cb3e751f5b50f42b307ac2c86d4f [file] [log] [blame]
Greg Daniel164a9f02016-02-22 09:56:40 -05001/*
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
cdalton397536c2016-03-25 12:15:03 -070011#include "GrBuffer.h"
Greg Daniel164a9f02016-02-22 09:56:40 -050012#include "GrVkBuffer.h"
Greg Daniel164a9f02016-02-22 09:56:40 -050013
14class GrVkGpu;
15
cdalton397536c2016-03-25 12:15:03 -070016class GrVkTransferBuffer : public GrBuffer, public GrVkBuffer {
Greg Daniel164a9f02016-02-22 09:56:40 -050017
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
cdalton397536c2016-03-25 12:15:03 -070031 void onMap() override {
Greg Daniel164a9f02016-02-22 09:56:40 -050032 if (!this->wasDestroyed()) {
cdalton397536c2016-03-25 12:15:03 -070033 this->GrBuffer::fMapPtr = this->vkMap(this->getVkGpu());
Greg Daniel164a9f02016-02-22 09:56:40 -050034 }
35 }
36
37 void onUnmap() override {
38 if (!this->wasDestroyed()) {
39 this->vkUnmap(this->getVkGpu());
40 }
41 }
42
cdalton397536c2016-03-25 12:15:03 -070043 bool onUpdateData(const void* src, size_t srcSizeInBytes) override {
Ben Wagnerb4aab9a2017-08-16 10:53:04 -040044 SK_ABORT("Not implemented for transfer buffers.");
cdalton397536c2016-03-25 12:15:03 -070045 return false;
46 }
47
Greg Daniel164a9f02016-02-22 09:56:40 -050048 GrVkGpu* getVkGpu() const {
49 SkASSERT(!this->wasDestroyed());
50 return reinterpret_cast<GrVkGpu*>(this->getGpu());
51 }
52
cdalton397536c2016-03-25 12:15:03 -070053 typedef GrBuffer INHERITED;
Greg Daniel164a9f02016-02-22 09:56:40 -050054};
55
56#endif