• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (C) 2002-2005  3Dlabs Inc. Ltd.
3 // Copyright (C) 2013 LunarG, Inc.
4 //
5 // All rights reserved.
6 //
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions
9 // are met:
10 //
11 //    Redistributions of source code must retain the above copyright
12 //    notice, this list of conditions and the following disclaimer.
13 //
14 //    Redistributions in binary form must reproduce the above
15 //    copyright notice, this list of conditions and the following
16 //    disclaimer in the documentation and/or other materials provided
17 //    with the distribution.
18 //
19 //    Neither the name of 3Dlabs Inc. Ltd. nor the names of its
20 //    contributors may be used to endorse or promote products derived
21 //    from this software without specific prior written permission.
22 //
23 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27 // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 // POSSIBILITY OF SUCH DAMAGE.
35 //
36 
37 #ifndef _RESOURCE_LIMITS_INCLUDED_
38 #define _RESOURCE_LIMITS_INCLUDED_
39 
40 struct TLimits {
41     bool nonInductiveForLoops;
42     bool whileLoops;
43     bool doWhileLoops;
44     bool generalUniformIndexing;
45     bool generalAttributeMatrixVectorIndexing;
46     bool generalVaryingIndexing;
47     bool generalSamplerIndexing;
48     bool generalVariableIndexing;
49     bool generalConstantMatrixVectorIndexing;
50 };
51 
52 struct TBuiltInResource {
53     int maxLights;
54     int maxClipPlanes;
55     int maxTextureUnits;
56     int maxTextureCoords;
57     int maxVertexAttribs;
58     int maxVertexUniformComponents;
59     int maxVaryingFloats;
60     int maxVertexTextureImageUnits;
61     int maxCombinedTextureImageUnits;
62     int maxTextureImageUnits;
63     int maxFragmentUniformComponents;
64     int maxDrawBuffers;
65     int maxVertexUniformVectors;
66     int maxVaryingVectors;
67     int maxFragmentUniformVectors;
68     int maxVertexOutputVectors;
69     int maxFragmentInputVectors;
70     int minProgramTexelOffset;
71     int maxProgramTexelOffset;
72     int maxClipDistances;
73     int maxComputeWorkGroupCountX;
74     int maxComputeWorkGroupCountY;
75     int maxComputeWorkGroupCountZ;
76     int maxComputeWorkGroupSizeX;
77     int maxComputeWorkGroupSizeY;
78     int maxComputeWorkGroupSizeZ;
79     int maxComputeUniformComponents;
80     int maxComputeTextureImageUnits;
81     int maxComputeImageUniforms;
82     int maxComputeAtomicCounters;
83     int maxComputeAtomicCounterBuffers;
84     int maxVaryingComponents;
85     int maxVertexOutputComponents;
86     int maxGeometryInputComponents;
87     int maxGeometryOutputComponents;
88     int maxFragmentInputComponents;
89     int maxImageUnits;
90     int maxCombinedImageUnitsAndFragmentOutputs;
91     int maxCombinedShaderOutputResources;
92     int maxImageSamples;
93     int maxVertexImageUniforms;
94     int maxTessControlImageUniforms;
95     int maxTessEvaluationImageUniforms;
96     int maxGeometryImageUniforms;
97     int maxFragmentImageUniforms;
98     int maxCombinedImageUniforms;
99     int maxGeometryTextureImageUnits;
100     int maxGeometryOutputVertices;
101     int maxGeometryTotalOutputComponents;
102     int maxGeometryUniformComponents;
103     int maxGeometryVaryingComponents;
104     int maxTessControlInputComponents;
105     int maxTessControlOutputComponents;
106     int maxTessControlTextureImageUnits;
107     int maxTessControlUniformComponents;
108     int maxTessControlTotalOutputComponents;
109     int maxTessEvaluationInputComponents;
110     int maxTessEvaluationOutputComponents;
111     int maxTessEvaluationTextureImageUnits;
112     int maxTessEvaluationUniformComponents;
113     int maxTessPatchComponents;
114     int maxPatchVertices;
115     int maxTessGenLevel;
116     int maxViewports;
117     int maxVertexAtomicCounters;
118     int maxTessControlAtomicCounters;
119     int maxTessEvaluationAtomicCounters;
120     int maxGeometryAtomicCounters;
121     int maxFragmentAtomicCounters;
122     int maxCombinedAtomicCounters;
123     int maxAtomicCounterBindings;
124     int maxVertexAtomicCounterBuffers;
125     int maxTessControlAtomicCounterBuffers;
126     int maxTessEvaluationAtomicCounterBuffers;
127     int maxGeometryAtomicCounterBuffers;
128     int maxFragmentAtomicCounterBuffers;
129     int maxCombinedAtomicCounterBuffers;
130     int maxAtomicCounterBufferSize;
131     int maxTransformFeedbackBuffers;
132     int maxTransformFeedbackInterleavedComponents;
133     int maxCullDistances;
134     int maxCombinedClipAndCullDistances;
135     int maxSamples;
136     int maxMeshOutputVerticesNV;
137     int maxMeshOutputPrimitivesNV;
138     int maxMeshWorkGroupSizeX_NV;
139     int maxMeshWorkGroupSizeY_NV;
140     int maxMeshWorkGroupSizeZ_NV;
141     int maxTaskWorkGroupSizeX_NV;
142     int maxTaskWorkGroupSizeY_NV;
143     int maxTaskWorkGroupSizeZ_NV;
144     int maxMeshViewCountNV;
145 
146     TLimits limits;
147 };
148 
149 #endif // _RESOURCE_LIMITS_INCLUDED_
150