• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2016 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 // BufferNULL.h:
7 //    Defines the class interface for BufferNULL, implementing BufferImpl.
8 //
9 
10 #ifndef LIBANGLE_RENDERER_NULL_BUFFERNULL_H_
11 #define LIBANGLE_RENDERER_NULL_BUFFERNULL_H_
12 
13 #include "libANGLE/renderer/BufferImpl.h"
14 
15 namespace rx
16 {
17 
18 class AllocationTrackerNULL;
19 
20 class BufferNULL : public BufferImpl
21 {
22   public:
23     BufferNULL(const gl::BufferState &state, AllocationTrackerNULL *allocationTracker);
24     ~BufferNULL() override;
25 
26     angle::Result setDataWithUsageFlags(const gl::Context *context,
27                                         gl::BufferBinding target,
28                                         GLeglClientBufferEXT clientBuffer,
29                                         const void *data,
30                                         size_t size,
31                                         gl::BufferUsage usage,
32                                         GLbitfield flags,
33                                         gl::BufferStorage bufferStorage) override;
34     angle::Result setData(const gl::Context *context,
35                           gl::BufferBinding target,
36                           const void *data,
37                           size_t size,
38                           gl::BufferUsage usage) override;
39     angle::Result setSubData(const gl::Context *context,
40                              gl::BufferBinding target,
41                              const void *data,
42                              size_t size,
43                              size_t offset) override;
44     angle::Result copySubData(const gl::Context *context,
45                               BufferImpl *source,
46                               GLintptr sourceOffset,
47                               GLintptr destOffset,
48                               GLsizeiptr size) override;
49     angle::Result map(const gl::Context *context, GLenum access, void **mapPtr) override;
50     angle::Result mapRange(const gl::Context *context,
51                            size_t offset,
52                            size_t length,
53                            GLbitfield access,
54                            void **mapPtr) override;
55     angle::Result unmap(const gl::Context *context, GLboolean *result) override;
56 
57     angle::Result getIndexRange(const gl::Context *context,
58                                 gl::DrawElementsType type,
59                                 size_t offset,
60                                 size_t count,
61                                 bool primitiveRestartEnabled,
62                                 gl::IndexRange *outRange) override;
63 
64     uint8_t *getDataPtr();
65     const uint8_t *getDataPtr() const;
66 
67   private:
68     std::vector<uint8_t> mData;
69 
70     AllocationTrackerNULL *mAllocationTracker;
71 };
72 
73 }  // namespace rx
74 
75 #endif  // LIBANGLE_RENDERER_NULL_BUFFERNULL_H_
76