HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
buffer.h
Go to the documentation of this file.
1 //
2 // Copyright 2020 Pixar
3 //
4 // Licensed under the terms set forth in the LICENSE.txt file available at
5 // https://openusd.org/license.
6 //
7 #ifndef PXR_IMAGING_HGI_GL_BUFFER_H
8 #define PXR_IMAGING_HGI_GL_BUFFER_H
9 
10 #include "pxr/pxr.h"
11 #include "pxr/imaging/hgiGL/api.h"
12 #include "pxr/imaging/hgi/buffer.h"
13 
14 
16 
17 /// \class HgiGLBuffer
18 ///
19 /// Represents an OpenGL GPU buffer resource.
20 ///
21 class HgiGLBuffer final : public HgiBuffer
22 {
23 public:
24  HGIGL_API
25  ~HgiGLBuffer() override;
26 
27  HGIGL_API
28  size_t GetByteSizeOfResource() const override;
29 
30  HGIGL_API
31  uint64_t GetRawResource() const override;
32 
33  HGIGL_API
34  void* GetCPUStagingAddress() override;
35 
36  uint32_t GetBufferId() const {return _bufferId;}
37 
38  /// Returns the bindless gpu address (caller must verify extension support)
39  HGIGL_API
40  uint64_t GetBindlessGPUAddress();
41 
42 protected:
43  friend class HgiGL;
44 
45  HGIGL_API
46  HgiGLBuffer(HgiBufferDesc const & desc);
47 
48 private:
49  HgiGLBuffer() = delete;
50  HgiGLBuffer & operator=(const HgiGLBuffer&) = delete;
51  HgiGLBuffer(const HgiGLBuffer&) = delete;
52 
53  uint32_t _bufferId;
54  void* _cpuStaging;
55  uint64_t _bindlessGPUAddress;
56 };
57 
58 
60 
61 #endif
uint32_t GetBufferId() const
Definition: buffer.h:36
HGIGL_API uint64_t GetRawResource() const override
HGIGL_API ~HgiGLBuffer() override
Definition: hgi.h:54
#define HGIGL_API
Definition: api.h:23
HGIGL_API void * GetCPUStagingAddress() override
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
HGIGL_API size_t GetByteSizeOfResource() const override
HGIGL_API uint64_t GetBindlessGPUAddress()
Returns the bindless gpu address (caller must verify extension support)