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 int maxMeshOutputVerticesEXT; 146 int maxMeshOutputPrimitivesEXT; 147 int maxMeshWorkGroupSizeX_EXT; 148 int maxMeshWorkGroupSizeY_EXT; 149 int maxMeshWorkGroupSizeZ_EXT; 150 int maxTaskWorkGroupSizeX_EXT; 151 int maxTaskWorkGroupSizeY_EXT; 152 int maxTaskWorkGroupSizeZ_EXT; 153 int maxMeshViewCountEXT; 154 int maxDualSourceDrawBuffersEXT; 155 156 TLimits limits; 157 }; 158 159 #endif // _RESOURCE_LIMITS_INCLUDED_ 160