Loading...
Searching...
No Matches
capabilities.h
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
16PXR_NAMESPACE_OPEN_SCOPE
17
23{
24public:
25 HGI_API
26 virtual ~HgiCapabilities() = 0;
27
28 bool IsSet(HgiDeviceCapabilities mask) const {
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
44 size_t GetMaxShaderStorageBlockSize() const {
45 return _maxShaderStorageBlockSize;
46 }
47
48 HGI_API
49 size_t GetUniformBufferOffsetAlignment() const {
50 return _uniformBufferOffsetAlignment;
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
63protected:
65 : _maxUniformBlockSize(0)
66 , _maxShaderStorageBlockSize(0)
67 , _uniformBufferOffsetAlignment(0)
68 , _maxClipDistances(0)
69 , _pageSizeAlignment(1)
70 , _flags(0)
71 {}
72
73 void _SetFlag(HgiDeviceCapabilities mask, bool value) {
74 if (value) {
75 _flags |= mask;
76 } else {
77 _flags &= ~mask;
78 }
79 }
80
81 size_t _maxUniformBlockSize;
82 size_t _maxShaderStorageBlockSize;
83 size_t _uniformBufferOffsetAlignment;
84 size_t _maxClipDistances;
85 size_t _pageSizeAlignment;
86
87private:
88 HgiCapabilities & operator=(const HgiCapabilities&) = delete;
89 HgiCapabilities(const HgiCapabilities&) = delete;
90
91 HgiDeviceCapabilities _flags;
92};
93
94PXR_NAMESPACE_CLOSE_SCOPE
95
96#endif
Reports the capabilities of the Hgi device.
Definition: capabilities.h:23