blob: 210cf228d93cae644bc933a903e1b5e8c6400309 [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
Mike Kleinc0bd9f92019-04-23 12:05:21 -050011#include "include/gpu/vk/GrVkTypes.h"
12#include "src/gpu/GrGpuBuffer.h"
13#include "src/gpu/vk/GrVkBuffer.h"
Greg Daniel164a9f02016-02-22 09:56:40 -050014
15class GrVkGpu;
16
Brian Salomondbf70722019-02-07 11:31:24 -050017class GrVkTransferBuffer : public GrGpuBuffer, public GrVkBuffer {
Greg Daniel164a9f02016-02-22 09:56:40 -050018public:
Brian Salomon12d22642019-01-29 14:38:50 -050019 static sk_sp<GrVkTransferBuffer> Make(GrVkGpu* gpu, size_t size, GrVkBuffer::Type type);
Greg Daniel164a9f02016-02-22 09:56:40 -050020
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
Brian Salomon68aeec02019-04-16 11:01:13 -040031 void onMap() override { this->GrGpuBuffer::fMapPtr = this->vkMap(this->getVkGpu()); }
Greg Daniel164a9f02016-02-22 09:56:40 -050032
Brian Salomon68aeec02019-04-16 11:01:13 -040033 void onUnmap() override { this->vkUnmap(this->getVkGpu()); }
Greg Daniel164a9f02016-02-22 09:56:40 -050034
cdalton397536c2016-03-25 12:15:03 -070035 bool onUpdateData(const void* src, size_t srcSizeInBytes) override {
Ben Wagnerb4aab9a2017-08-16 10:53:04 -040036 SK_ABORT("Not implemented for transfer buffers.");
cdalton397536c2016-03-25 12:15:03 -070037 }
38
Greg Daniel164a9f02016-02-22 09:56:40 -050039 GrVkGpu* getVkGpu() const {
40 SkASSERT(!this->wasDestroyed());
41 return reinterpret_cast<GrVkGpu*>(this->getGpu());
42 }
43
Brian Salomondbf70722019-02-07 11:31:24 -050044 typedef GrGpuBuffer INHERITED;
Greg Daniel164a9f02016-02-22 09:56:40 -050045};
46
47#endif