HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
capabilities.h
Go to the documentation of this file.
1 //
2 // Copyright 2021 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_CAPABILITIES_H
8 #define PXR_IMAGING_HGI_CAPABILITIES_H
9 
10 #include "pxr/pxr.h"
11 #include "pxr/imaging/hgi/api.h"
12 #include "pxr/imaging/hgi/enums.h"
13 
14 #include <cstddef>
15 
17 
18 /// \class HgiCapabilities
19 ///
20 /// Reports the capabilities of the Hgi device.
21 ///
23 {
24 public:
25  HGI_API
26  virtual ~HgiCapabilities() = 0;
27 
29  return (_flags & mask) != 0;
30  }
31 
32  HGI_API
33  virtual int GetAPIVersion() const = 0;
34 
35  HGI_API
36  virtual int GetShaderVersion() const = 0;
37 
38  HGI_API
39  size_t GetMaxUniformBlockSize() const {
40  return _maxUniformBlockSize;
41  }
42 
43  HGI_API
46  }
47 
48  HGI_API
51  }
52 
53  HGI_API
54  size_t GetMaxClipDistances() const {
55  return _maxClipDistances;
56  }
57 
58  HGI_API
59  size_t GetPageSizeAlignment() const {
60  return _pageSizeAlignment;
61  }
62 
63 protected:
70  , _flags(0)
71  {}
72 
74  if (value) {
75  _flags |= mask;
76  } else {
77  _flags &= ~mask;
78  }
79  }
80 
86 
87 private:
88  HgiCapabilities & operator=(const HgiCapabilities&) = delete;
89  HgiCapabilities(const HgiCapabilities&) = delete;
90 
91  HgiDeviceCapabilities _flags;
92 };
93 
95 
96 #endif
HGI_API size_t GetPageSizeAlignment() const
Definition: capabilities.h:59
HGI_API size_t GetMaxShaderStorageBlockSize() const
Definition: capabilities.h:44
GLsizei const GLfloat * value
Definition: glcorearb.h:824
size_t _maxClipDistances
Definition: capabilities.h:84
size_t _uniformBufferOffsetAlignment
Definition: capabilities.h:83
size_t _pageSizeAlignment
Definition: capabilities.h:85
virtual HGI_API int GetShaderVersion() const =0
HgiBits HgiDeviceCapabilities
Definition: enums.h:88
HGI_API size_t GetMaxClipDistances() const
Definition: capabilities.h:54
size_t _maxShaderStorageBlockSize
Definition: capabilities.h:82
size_t _maxUniformBlockSize
Definition: capabilities.h:81
GLint GLuint mask
Definition: glcorearb.h:124
bool IsSet(HgiDeviceCapabilities mask) const
Definition: capabilities.h:28
#define HGI_API
Definition: api.h:23
virtual HGI_API ~HgiCapabilities()=0
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Definition: path.h:1425
#define PXR_NAMESPACE_CLOSE_SCOPE
Definition: pxr.h:74
void _SetFlag(HgiDeviceCapabilities mask, bool value)
Definition: capabilities.h:73
HGI_API size_t GetMaxUniformBlockSize() const
Definition: capabilities.h:39
virtual HGI_API int GetAPIVersion() const =0
HGI_API size_t GetUniformBufferOffsetAlignment() const
Definition: capabilities.h:49