1/*
2 * Copyright 2019 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 GrBuffer_DEFINED
9#define GrBuffer_DEFINED
10
11#include "include/gpu/GrTypes.h"
12
13/** Base class for a GPU buffer object or a client side arrays. */
14class GrBuffer {
15public:
16 GrBuffer(const GrBuffer&) = delete;
17 GrBuffer& operator=(const GrBuffer&) = delete;
18
19 virtual ~GrBuffer() = default;
20
21 // Our subclasses derive from different ref counting base classes. In order to use base
22 // class pointers with sk_sp we virtualize ref() and unref().
23 virtual void ref() const = 0;
24 virtual void unref() const = 0;
25
26 /** Size of the buffer in bytes. */
27 virtual size_t size() const = 0;
28
29 /** Is this an instance of GrCpuBuffer? Otherwise, an instance of GrGpuBuffer. */
30 virtual bool isCpuBuffer() const = 0;
31
32protected:
33 GrBuffer() = default;
34};
35
36#endif
37