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
63 HGI_API
64 size_t GetMaxSamplersPerShaderStage() const {
65 return _maxSamplersPerShaderStage;
66 }
67
68protected:
70 : _maxUniformBlockSize(0)
71 , _maxShaderStorageBlockSize(0)
72 , _uniformBufferOffsetAlignment(0)
73 , _maxClipDistances(0)
74 , _pageSizeAlignment(1)
75 , _maxSamplersPerShaderStage(0)
76 , _flags(0)
77 {}
78
79 void _SetFlag(HgiDeviceCapabilities mask, bool value) {
80 if (value) {
81 _flags |= mask;
82 } else {
83 _flags &= ~mask;
84 }
85 }
86
87 size_t _maxUniformBlockSize;
88 size_t _maxShaderStorageBlockSize;
89 size_t _uniformBufferOffsetAlignment;
90 size_t _maxClipDistances;
91 size_t _pageSizeAlignment;
92 size_t _maxSamplersPerShaderStage;
93
94private:
95 HgiCapabilities & operator=(const HgiCapabilities&) = delete;
96 HgiCapabilities(const HgiCapabilities&) = delete;
97
98 HgiDeviceCapabilities _flags;
99};
100
101PXR_NAMESPACE_CLOSE_SCOPE
102
103#endif
Reports the capabilities of the Hgi device.