1/**************************************************************************/
2/* glslang_resource_limits.h */
3/**************************************************************************/
4/* This file is part of: */
5/* GODOT ENGINE */
6/* https://godotengine.org */
7/**************************************************************************/
8/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
9/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
10/* */
11/* Permission is hereby granted, free of charge, to any person obtaining */
12/* a copy of this software and associated documentation files (the */
13/* "Software"), to deal in the Software without restriction, including */
14/* without limitation the rights to use, copy, modify, merge, publish, */
15/* distribute, sublicense, and/or sell copies of the Software, and to */
16/* permit persons to whom the Software is furnished to do so, subject to */
17/* the following conditions: */
18/* */
19/* The above copyright notice and this permission notice shall be */
20/* included in all copies or substantial portions of the Software. */
21/* */
22/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
23/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
24/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
25/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
26/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
27/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
28/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
29/**************************************************************************/
30
31#ifndef GLSLANG_RESOURCE_LIMITS_H
32#define GLSLANG_RESOURCE_LIMITS_H
33
34#include <glslang/Include/ResourceLimits.h>
35
36// Synchronized with upstream glslang/StandAlone/ResourceLimits.cpp which is not
37// part of the public API.
38
39const TBuiltInResource DefaultTBuiltInResource = {
40 /* .MaxLights = */ 32,
41 /* .MaxClipPlanes = */ 6,
42 /* .MaxTextureUnits = */ 32,
43 /* .MaxTextureCoords = */ 32,
44 /* .MaxVertexAttribs = */ 64,
45 /* .MaxVertexUniformComponents = */ 4096,
46 /* .MaxVaryingFloats = */ 64,
47 /* .MaxVertexTextureImageUnits = */ 32,
48 /* .MaxCombinedTextureImageUnits = */ 80,
49 /* .MaxTextureImageUnits = */ 32,
50 /* .MaxFragmentUniformComponents = */ 4096,
51 /* .MaxDrawBuffers = */ 32,
52 /* .MaxVertexUniformVectors = */ 128,
53 /* .MaxVaryingVectors = */ 8,
54 /* .MaxFragmentUniformVectors = */ 16,
55 /* .MaxVertexOutputVectors = */ 16,
56 /* .MaxFragmentInputVectors = */ 15,
57 /* .MinProgramTexelOffset = */ -8,
58 /* .MaxProgramTexelOffset = */ 7,
59 /* .MaxClipDistances = */ 8,
60 /* .MaxComputeWorkGroupCountX = */ 65535,
61 /* .MaxComputeWorkGroupCountY = */ 65535,
62 /* .MaxComputeWorkGroupCountZ = */ 65535,
63 /* .MaxComputeWorkGroupSizeX = */ 1024,
64 /* .MaxComputeWorkGroupSizeY = */ 1024,
65 /* .MaxComputeWorkGroupSizeZ = */ 64,
66 /* .MaxComputeUniformComponents = */ 1024,
67 /* .MaxComputeTextureImageUnits = */ 16,
68 /* .MaxComputeImageUniforms = */ 8,
69 /* .MaxComputeAtomicCounters = */ 8,
70 /* .MaxComputeAtomicCounterBuffers = */ 1,
71 /* .MaxVaryingComponents = */ 60,
72 /* .MaxVertexOutputComponents = */ 64,
73 /* .MaxGeometryInputComponents = */ 64,
74 /* .MaxGeometryOutputComponents = */ 128,
75 /* .MaxFragmentInputComponents = */ 128,
76 /* .MaxImageUnits = */ 8,
77 /* .MaxCombinedImageUnitsAndFragmentOutputs = */ 8,
78 /* .MaxCombinedShaderOutputResources = */ 8,
79 /* .MaxImageSamples = */ 0,
80 /* .MaxVertexImageUniforms = */ 0,
81 /* .MaxTessControlImageUniforms = */ 0,
82 /* .MaxTessEvaluationImageUniforms = */ 0,
83 /* .MaxGeometryImageUniforms = */ 0,
84 /* .MaxFragmentImageUniforms = */ 8,
85 /* .MaxCombinedImageUniforms = */ 8,
86 /* .MaxGeometryTextureImageUnits = */ 16,
87 /* .MaxGeometryOutputVertices = */ 256,
88 /* .MaxGeometryTotalOutputComponents = */ 1024,
89 /* .MaxGeometryUniformComponents = */ 1024,
90 /* .MaxGeometryVaryingComponents = */ 64,
91 /* .MaxTessControlInputComponents = */ 128,
92 /* .MaxTessControlOutputComponents = */ 128,
93 /* .MaxTessControlTextureImageUnits = */ 16,
94 /* .MaxTessControlUniformComponents = */ 1024,
95 /* .MaxTessControlTotalOutputComponents = */ 4096,
96 /* .MaxTessEvaluationInputComponents = */ 128,
97 /* .MaxTessEvaluationOutputComponents = */ 128,
98 /* .MaxTessEvaluationTextureImageUnits = */ 16,
99 /* .MaxTessEvaluationUniformComponents = */ 1024,
100 /* .MaxTessPatchComponents = */ 120,
101 /* .MaxPatchVertices = */ 32,
102 /* .MaxTessGenLevel = */ 64,
103 /* .MaxViewports = */ 16,
104 /* .MaxVertexAtomicCounters = */ 0,
105 /* .MaxTessControlAtomicCounters = */ 0,
106 /* .MaxTessEvaluationAtomicCounters = */ 0,
107 /* .MaxGeometryAtomicCounters = */ 0,
108 /* .MaxFragmentAtomicCounters = */ 8,
109 /* .MaxCombinedAtomicCounters = */ 8,
110 /* .MaxAtomicCounterBindings = */ 1,
111 /* .MaxVertexAtomicCounterBuffers = */ 0,
112 /* .MaxTessControlAtomicCounterBuffers = */ 0,
113 /* .MaxTessEvaluationAtomicCounterBuffers = */ 0,
114 /* .MaxGeometryAtomicCounterBuffers = */ 0,
115 /* .MaxFragmentAtomicCounterBuffers = */ 1,
116 /* .MaxCombinedAtomicCounterBuffers = */ 1,
117 /* .MaxAtomicCounterBufferSize = */ 16384,
118 /* .MaxTransformFeedbackBuffers = */ 4,
119 /* .MaxTransformFeedbackInterleavedComponents = */ 64,
120 /* .MaxCullDistances = */ 8,
121 /* .MaxCombinedClipAndCullDistances = */ 8,
122 /* .MaxSamples = */ 4,
123 /* .maxMeshOutputVerticesNV = */ 256,
124 /* .maxMeshOutputPrimitivesNV = */ 512,
125 /* .maxMeshWorkGroupSizeX_NV = */ 32,
126 /* .maxMeshWorkGroupSizeY_NV = */ 1,
127 /* .maxMeshWorkGroupSizeZ_NV = */ 1,
128 /* .maxTaskWorkGroupSizeX_NV = */ 32,
129 /* .maxTaskWorkGroupSizeY_NV = */ 1,
130 /* .maxTaskWorkGroupSizeZ_NV = */ 1,
131 /* .maxMeshViewCountNV = */ 4,
132 /* .maxMeshOutputVerticesEXT = */ 256,
133 /* .maxMeshOutputPrimitivesEXT = */ 256,
134 /* .maxMeshWorkGroupSizeX_EXT = */ 128,
135 /* .maxMeshWorkGroupSizeY_EXT = */ 128,
136 /* .maxMeshWorkGroupSizeZ_EXT = */ 128,
137 /* .maxTaskWorkGroupSizeX_EXT = */ 128,
138 /* .maxTaskWorkGroupSizeY_EXT = */ 128,
139 /* .maxTaskWorkGroupSizeZ_EXT = */ 128,
140 /* .maxMeshViewCountEXT = */ 4,
141 /* .maxDualSourceDrawBuffersEXT = */ 1,
142
143 /* .limits = */ {
144 /* .nonInductiveForLoops = */ 1,
145 /* .whileLoops = */ 1,
146 /* .doWhileLoops = */ 1,
147 /* .generalUniformIndexing = */ 1,
148 /* .generalAttributeMatrixVectorIndexing = */ 1,
149 /* .generalVaryingIndexing = */ 1,
150 /* .generalSamplerIndexing = */ 1,
151 /* .generalVariableIndexing = */ 1,
152 /* .generalConstantMatrixVectorIndexing = */ 1,
153 }
154};
155
156#endif // GLSLANG_RESOURCE_LIMITS_H
157